Whew! I can't believe how much work it was to coordinate the software release of the library and hardware release of the boards together. There was documentation flying all over the place, furious coding, testing on multiple OSes, screenshots, long photography sessions, and somewhere in there, hardware and software testing. I'm glad I did it though because I've been wanting to release a new version of the Freakduino for a long time. Seriously, I've been wanting to do it since 2011, but a series of events changed my whole life. Ha ha ha...
In early 2011, the Freakduino was selling at a good clip having been introduced just a few months earlier. I was getting ready to introduce an Arduino-based wireless sensor network product line around it. I had a bunch of other designs waiting in the wings and was about to release a 900 Mhz Freakduino and some 802.15.4 radio shields for both 2.4 GHz and 900 MHz. I had those prepared and was getting ready to release them in late March of 2011.
On March 11, 2011, the Great Tohoku East Earthquake hit in Japan and changed the direction my life was headed in. That episode taught me a lot about myself and what I thought was important. My design plans suddenly didn't mean much because there were more urgent issues to deal with. During that time, my Freakduino got turned into quite a few different devices, but the most prominent ones were a networked geiger counter called the NetRad and a mobile, geotagging geiger counter called the bGeigie. Those two devices were one of the catalysts that started off Safecast in Japan.
The NetRad was used to measure radiation and send it to Pachube servers which could then be disseminated to people that were worried about the radiation levels after the Fukushima Dai-Ichi meltdown. The project was quite successful and got used by Keio University in a radiation monitoring sensor network project. That project ended up getting quite a bit of funding and they asked me to help them build out the network. The bGeigie also ended up getting a lot of press and the radiation mapping project is still ongoing with Safecast logging their 10 millionth data point a few weeks ago.
By this time, all thoughts of any design releases were out the window as I was furiously trying to make geiger counters and get them out to areas that needed them. There were also strict quotas that needed to be filled due to the terms of the funding so I was working night and day putting together, testing, writing code, and sending geiger counters to Keio University to disperse them around Japan. Looking back, it was hectic but really interesting. I don't remember working that hard in my life.
Taking care of the radiation sensor network and also the geotagging geiger counters pretty much took all my time for over a year. By the time I was able to get out from under the responsibility, I was pretty burnt out on everything. This was around mid 2012 and I decided to take a breather and also put together a new version of the Freakduino to address issues that I was unhappy with. The primary issues was power consumption. The original design used resistor dividers for the voltage level conversion and those dividers burned power needlessly. One way around it was to do have the MCU and the radio at the same voltage levels (3.3V) so there would be no need to have converters. This next design was my attempt to do that. I ran the whole system at 3.3V and just had 5V going the 5V header pin. I also had all sorts of jumpers and options for various things. I put together a few of these boards and realized it was a monstrosity. A complex board with all types of jumpers going all over the place. Just configuring these would drive people crazy. I quickly scrapped this version of the board.
At around mid-2012, I also got in contact with a group called Wrecking Crew Orchestra . They were doing some really interesting things with EL wire and dance. They needed help because their main engineer couldn't work with them anymore due to other work-related obligations. That project ended up taking another four months to work through. I really need to do a full writeup on it because it was such an interesting time and also made me realize I really like theater technology. I'm planning to work on some theater tech designs in the near future which should be really fun. In the meantime, I ended up re-designing their whole system for EL wire signaling to make it more robust and handle the rigors of dance tours. Here's one of the performances they recently did using the system . Interestingly enough, it's based on the chibiArduino stack at 900 MHz.
A few months passed after the design failure of the last Freakduino. In that time, I had designed around 10 boards for Wrecking Crew Orchestra for various things like gang battery charging, music sequencing, EL wire and power LED controllers. By this time, I figured I'd give my own design another go. This was another attempt to come up with a Freakduino v2.0. I decided that it wasn't practical to migrate away from the 5V compatibility of standard Arduinos. The main point was to give a positive experience to people just starting out in embedded. Having them debug a logic level voltage incompatibility issue would not be ideal.
I decided to go with the resistive dividers again but try to minimize the static power they'd dissipate. I also tried other ways to minimize static power consumption. At this point, I also decided to move to the AT86RF231 for 2.4 GHz communications. Previous versions have been using the AT86RF230 radio which was $1 cheaper but lacked encryption and various other features that I thought were extremely useful. I tested this board and had everything working, but then I found a chip that was really quite ideal for what I wanted to do: the Fairchild FXMA108 8-bit bi-directional voltage translator. It had a bus-hold feature that consumed very little static power and it could run signals in either direction. It was basically perfect for what I wanted to do. I decided to scrap this board.
In late 2012, I talked to one of my friends in the wireless sensor network community, Marco Zennaro. He was at the International Center for Theoretical Physics and was working with the United Nations in technology for developing countries. We got together in Tokyo for coffee and by the end of the coffee session, I agreed to help the UN design equipment for weather and environmental monitoring. That project is still ongoing and I'm helping them on another one to enable rural broadband in developing countries. That's another story though. Nevertheless, it was another delay for the next version of the Freakduino. Ha ha ha.
Around December 2012, I gave the re-design another go. This time I made quite a few optimizations for power, including using the bi-directional voltage translator. I also swapped out the original voltage regulator and put in a micropower voltage regulator. The old one had a static power consumption around 300 uA whereas the one I'm currently using only consumes 80 uA. I also had the boards in both a 2.4 GHz and 900 MHz version. By this time, I had quite a bit of experience with the chibiArduino wireless stack at both 2.4 GHz and 900 mHz and I felt this design was pretty stable. I made an error in the design however because I wanted to monitor the battery voltage levels. I connected the battery directly to an analog input pin. When the system was powered off, it would leech power from the battery. It was a painful mistake but I decided a respin was needed.
In between respins, I ended up going to Shenzhen with Bunnie Huang and a bunch of MIT Media Lab students and also going to Dharamsala, India in the Himalayas to teach and install wireless sensors in a buddhist monastery. Ha ha ha. Life is weird.
So finally, here I am with the Freakduino boards at v2.1a. It's been an odyssey getting to this point, mostly because of the strange turns I've had the good fortune to have in my life. It gave me a lot of hard experience in wireless and sensor network deployment and also gave me a lot of perspective as to what I really wanted to do. I now have a firm grasp of where I want to go with my designs, and they're pretty much set in the direction of environmental monitoring. I don't think you'll be seeing such a large time gap in between designs anymore since my goals have crystallized quite well in the past two years.
In any case, that was a long-winded and rambling introduction to....*drum roll*....the Freakduino v2.1a.
As you've probably realized by now, this board went through a lot of revisions in order to get where it is. The main point of improvement is in power consumption, due to using the voltage translator IC and also the micropower regulator. The system consumes approximately 200 uA at 3V in sleep mode. Even more power savings is possible if I had run the system at 3.3V rather than 5V but I felt that having 5V compatibility was an important feature for this board. Later on, I'll be introducing boards specifically targeted for very low power operation. At 200 uA with standard 2000 mA-Hr batteries, the system should allow many months of operation, with proper power management of course.
I'm also happy that I moved to the AT86RF231. This chip allows more flexibility in features and also configurations. It has some really nice features like AES-128 encryption and high data rate modes at up to 2 Mbps at 2.4 GHz. It also has a hardware true random number generator that samples the LSBs from RF noise. There are other interesting things that I'll be exploring later as well, but so far, I've implemented the software to use those features in the latest chibiArduino library release. There's a slight increase in the cost of the latest Freakduino boards due to the parts required for low power optimization and also switching to the RF231 chip but I tried to minimize the cost increase. Hopefully it doesn't turn off too many people.
And finally, after much too long, I can finally release a 900 MHz version of the Freakduino. I'm extremely attached to running at 900 MHz and it's my favorite frequency to run at whenever possible. The range is much better at 900 MHz because longer wavelenths attenuate less through free space and also going through objects. The 900 Mhz Freakduino is using the AT86RF212 which has mostly the same features as the AT86RF231, but some nice extras as well. A favorite of mine is the ability to change modulation modes. The standard mode is running an OQPSK modulation which allows for 250 kbps data rates, all the way up to 1 Mbps in high data rate mode. However if range is more important, its possible to change to BPSK modulation. BPSK is a simpler modulation scheme that doesn't allow for a high data rates. The maximum speed is 40 kbps but it should improve range dramatically. As a general rule of thumb, the simpler the modulation, the better the receiver sensitivity.
Along with the new board releases, I'm happy to announce that I'm finally bumping the chibiArduino wireless protocol stack to version 1.0. It's been through all kinds of testing and many real life applications and has been very robust and stable. I've been using it personally for the past two years and I feel like it's stable enough to be given a 1.0 designation. Hopefully I don't jinx the stack by doing that.
Here are the latest features for the inaugural v1.0 version of the stack:
- Feature: added support for AES encryption
- Feature: added support for high data rate modes (2 Mbps at 2.4 GHz, 1 Mbps at 900 MHz)
- Feature: added hardware based true random number generation
- Feature: added precompiler defines based on board definition file for chibiArduino hardware variants
- Feature: added support for different modulation modes at 900 MHz using OQPSK and BPSK
- Feature: added AES example
- Bumped version to 1.0. yee-haw!
You can find the download link and the github link on the project page here .
I've also written a tutorial for installing the library . I've gotten a lot of questions in the past about this and I'm also introducing a board descriptions file in this version to handle chibiArduino board variants.
I think that's about it. If your'e interested in purchasing the Freakduino v2.1a boards, they're available in the shop now . They're currently on sale with a $5 discount until the end of June.
I'll be adding more tutorials and documentations in the coming days so stay tuned. Thanks for listening to me ramble :)2013-06-22 Updated: I've gotten some questions on whether the 900 MHz chip is compatible with the Wireshark bridge similar to the 2.4 GHz chip. The answer is yes. Both the AT86RF212 (900 MHz) and AT86RF23x (2.4 GHz) have almost identical register sets and functionality. The 900 MHz chip actually has more options than the 2.4 GHz chip. Promiscuous mode, which is needed for Wireshark, is definitely supported.