Home arrow Blog arrow Store arrow Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking | Print |
Written by Akiba   
Sunday, 14 November 2010

I’m happy to announce the release of my latest design, the Freakduino-Chibi.Yes, there has been mixed reviews about the naming. It’s ranged from “seriously?” to outright laughter. I decided to go with it though because it does express two things that I think are important. The first is that it’s an Arduino-compatible board and the second is that it’s related to my original Chibi boards .

Before I get into the actual board, I should probably talk a bit about the background behind the design of the boards. The original Chibi protocol stack and Chibi boards were meant to be an entry level way for people to get involved in wireless sensor networking and data collection. But after observing people in Tokyo Hackerspace and in my microcontroller workshops, I realized that there were still some things missing.

Although people familiar with programming might be comfortable with makefiles and command line compiling, I’ve seen that it causes anxiety in people that are new to programming and the GNU toolchain. After a microcontroller class I taught a few months ago, I was talking to the participants and some of them mentioned that the Arduino environment has only one step to compile and load the code into the boards. That definitely intrigued me and I started investigating the platform.

I spent about a month playing with the Arduino, trying out code on it, downloading code from others and using it, and basically kicking the tires on the platform. After working with it, I found that there were a lot of benefits that weren’t immediately visible to me as a non-Arduino user. The IDE was very simple to use and a lot of usability features were built-in. But more importantly, having a large amount of third party shields , source code, a self-supporting community, and a common base platform were immensely valuable.

After working with it for a while, I discussed it with a few of the electronics and embedded people in the hackerspace and we decided to use the Arduino as the standard platform in the space. This would make it easier to ensure everyone has the same base hardware and software when we collaborate on projects. And since Tokyo Hackerspace has kind of a leaning towards wireless (hee hee hee), I decided to make a version of my Chibi boards compatible with Arduino but still include the 802.15.4 wireless radio. That marked the beginning of this design project.

The Software

Chibi means “midget” in Japanese and I felt that it was an appropriate name for this wireless protocol stack. It wasn’t meant to be a fancy, mesh routing, auto-discovery, standardized device profile type of stack. The main goals were that it was small and easy to use so that people that weren’t experts in communications protocols could still send and receive data wirelessly without dealing with complex setups and technical details.   

For the Freakduino-Chibi board, the Chibi stack was ported to the Arduino platform and named chibiArduino . It comes in the form of an Arduino library and you just unzip the package into the /libraries folder of your Arduino directory. The stack takes up approximately 3.6 kB of flash and about 270 bytes of RAM and allows users to set up star networks where any node can communicate with any other node within listening distance.

The Board

There were a lot of decisions that went into designing this board and I tried to keep my priorities on usability and price.

Usability dictated quite a few design decisions. Although most people will probably not notice them too much, I had a lot of internal debate with myself on things like using a mini-USB connector versus standard, having a printed antenna versus antenna connector, having a power switch, DIP switches to enable or disable LEDs, battery operation, battery case, enclosure, etc.

Interestingly enough, one of my biggest decisions was to maintain 5V operation which is what the original Arduinos use, rather than 3.3V. Although most chips are now 3.3V, most shields are designed with 5V in mind so switching the MCU to 3.3V might jeopardize compatibility with other shields. But using 5V means that logic level converters are required on the board to interface the radio to the MCU.

Another big decision was to have an enclosure option for the board. One of the things I noticed by being in the hackerspace is that many members bring their circuits and parts to the space in Tupperware. Tupperware is interesting because it offers protection, but also easy access to the circuit and parts due to the burp-able lid. I thought that having a way to transport the board safely would be an interesting feature to explore because it makes collaboration easier and also allows people to do prototyping and design at places like coffee shops or on the road. There are a lot of enclosures that offer protection, but finding one that offers easy access to the circuitry is much more difficult to find. Most enclosures have to be screwed down which makes portable prototyping a bit difficult. I finally decided on the Takachi LC135 series enclosures which come with a silicone sleeve in various colors. The silicone sleeve is used to ruggedize the enclosure, but there’s a much more interesting use for it. You don’t need to screw down the enclosure because the sleeve holds the top and bottom halves securely together. To open the enclosure, you just need to remove the sleeve which solves the issue of both protection and easy access.

 

 

Cost was a huge design consideration. A big problem with wireless sensor networks is the cost per node, since most networks have more than one node (duh). If you’re not purchasing in large quantities, it’s very difficult to bring down the cost of a board. One way is to force yourself into slave labor, but this is a bit undesirable. Assembly is a huge headache for a one-man shop so I decided that the best way to bring down the cost of the board without killing myself on assembly time is to offer the board in a partial kit form. If people are willing to spend some time mounting the through-hole components, I’d be perfectly fine with charging less for it. Of course, this makes testing the boards more complicated since the boards are incomplete so I had to experiment with customized test jigs with pogo pin test probes. Luckily, LadyAda had an excellent tutorial on it . It took a bit of trial and error but I finally got a decent test system working so I’m happy that I can offer this as an option.

 

 

Another cost decision was to offer different purchase options for this board. I’m experimenting with the “base model plus upgrade options” pattern. I was initially a bit hesitant because it meant that the purchase of the board would be more complicated since it requires extra decisions about which options, if any, would also be purchased. In the end, I decided that allowing people the option of only paying for the features they need was most important. That way, people that just wanted to try out wireless communications could do so inexpensively and people that required more functionality could add on options.

I think I can say that this is the first board I designed that was inspired by my involvement with and exposure to the hardware hacker community. It’s been about four months since I released my last design and in that time, I’ve gotten the chance to work more with Tokyo Hackerspace and meet many people from other hackerspaces around the world. There are a lot of subtle nuances and requirements that really only come out by hanging out with people in the maker community. The idea for portability came from watching Raphael of NYC Resistor carrying around his designs in cigar boxes, MRE from Tokyo Hackerspace and his infamous Tupperware carrying cases, and the guys from Hackers on a Plane putting together circuits inside the common area of a Tokyo hostel. The idea to go to the Arduino platform came from watching non-programmers in the hackerspace struggle with the GNU toolchain and the many questions and emails I got asking about a simple way to start doing wireless communications. The bottom mounted battery case came from trying to stuff the circuit board into NEMA rated boxes we used in the hackerspace for our rice farm monitoring project . And of course the price sensitivity came about because many of the really creative people in the maker community and in Tokyo Hackerspace are simply broke. So I’d like to thank everyone for all the inspiration and making this design possible.

I’ve started by making a small run of boards available in the shop and I’ll be making more as needed. As a thank you to the community that helped create this design and to kick-start it, the boards will be sold at 20% off through Christmas. And since I’ve been taking pictures of my whole design process over the past few months, I thought I’d include my outtakes which documented some of the stupid mistakes I made in getting this board out.

Link to Freakduino-Chibi Documentation

Link to chibiArduino Project Page

Link to Freakduino-Chibi Shop Page

Updated 2010-11-17: The response to the Freakduino-Chibi board was overwhelming. I was only expecting to sell a few so I made a small initial batch. Unfortunately, it sold out quicker than I expected. I source most of the parts locally so I can re-stock pretty quickly. If it's sold out, check back in a couple of days. It usually takes me a bit of time to assemble and test a batch, but I can probably restock at least once a week. Thanks to everyone for the great reception for these boards. It was totally unexpected :)
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!
Click image to open!

 

 

Hits: 52511
Trackback(0)
Comments (22)Add Comment
!
written by Anton21, November 16, 2010
You are my hero. Seriously. So much energy you put into those projects....thanks a lot for sharing them!
report abuse
vote down
vote up
Votes: +5
...
written by Akiba, November 16, 2010
Ha ha ha...if you're looking for a hero, check out Mitch Altman. He's a genuinely nice person and an amazing engineer. He tours around different countries teaching people about electronics and how to solder and he's the founder of the Noisebridge, the San Francisco Hackerspace smilies/smiley.gif
report abuse
vote down
vote up
Votes: +4
LED enable switch
written by Len, November 17, 2010
"The LED enable DIP switch is used to enable or disable the main power LED and auxiliary LED."
Terrific! I actually chipped the tiny power LED off an Arduino Pro Mini to reduce the standby power consumption. smilies/smiley.gif
report abuse
vote down
vote up
Votes: +1
...
written by Akiba, November 17, 2010
Yeah, those pesky LEDs suck down quite a bit of power. When you're on batteries, every little bit counts smilies/smiley.gif
report abuse
vote down
vote up
Votes: +0
Sold out already!
written by Tarek, November 17, 2010
These look AMAZING!

Do you know when you'll have them back in stock? Is there any way to sign up to be notified when they are?
report abuse
vote down
vote up
Votes: +0
...
written by Akiba, November 17, 2010
I havent added the "back in stock notification" module for Zencart which is what I'm using. This is actually the first time I ever thought I needed it smilies/smiley.gif

I'm working on a new batch right now and should be available sometime this week. I source most parts locally so its just a matter of me getting the time to assemble and test boards. I didn't expect that these boards would sell so quickly (thank you make magazine) so my first batch was quite small. I'm going to have to do bigger batches in the future...
report abuse
vote down
vote up
Votes: +0
cases
written by stbtrax, November 18, 2010
Those cases seam really nice, could you possibly stock the cases alone as well?
report abuse
vote down
vote up
Votes: +1
...
written by Akiba, November 18, 2010
Yeah, I'll be stocking the cases as well. I suspect that people will be cutting and sawing on them so they might need extras. Just need to add them into the shop.
report abuse
vote down
vote up
Votes: +0
Argh.
written by Ante Vukorepa, January 20, 2011
Nuuuuuuuuuu...
Was just about to finally order one enclosure kit and one enclosureless kit after waiting for it to be stocked again and now the enclosures and battery holders are out of stock >:

Will they ever be in stock at the same time? smilies/smiley.gif
report abuse
vote down
vote up
Votes: +0
...
written by Akiba, January 20, 2011
Ha ha ha...they'll be available on Monday. A large order came through and wiped me out. Gonna make another batch this weekend. Check back then or email me smilies/smiley.gif
report abuse
vote down
vote up
Votes: +0
Yay!
written by Ante Vukorepa, January 21, 2011
Awesome! smilies/smiley.gif

Thanks!
Will check next week.
report abuse
vote down
vote up
Votes: +0
...
written by Akiba, January 22, 2011
Freakduino's back in stock as of 2011/01/22
report abuse
vote down
vote up
Votes: +0
\o/
written by Ante Vukorepa, January 24, 2011
Ordered smilies/grin.gif
report abuse
vote down
vote up
Votes: +0
...
written by Vanessa, February 04, 2011
This is pure genius Mr. Akiba! So this is what you've been working on, I remember you having mentioned it here. What is the range of the radio? More power to Freakduino-Chibi!!!
report abuse
vote down
vote up
Votes: +0
...
written by Akiba, February 04, 2011
It's a fairly low powered radio so I wouldn't recommend it for your project. I should have some products coming out soon that are specially designed for outdoor monitoring. I already have a weatherproof enclosure picked out and need to design the power supply. I'm thinking about whether to add on an amplifier to the front end, but it would decrease the battery life. Tradeoffs, tradeoffs...
report abuse
vote down
vote up
Votes: +1
awesome
written by knife, March 13, 2011
I got one of these boards from a competition I went to today as the badge for indicating which team I am on, and I must say this device is awesome. It was a lot of fun in the game of the competition I went to to be able to use these and send data over the airwaves without much extended effort.
report abuse
vote down
vote up
Votes: +0
...
written by Akiba, March 13, 2011
Ah, okay. I made a special batch for those badges. I'm glad you like it and let me know if you have any questions smilies/smiley.gif
report abuse
vote down
vote up
Votes: +0
awesome indeed
written by Lowlight, March 15, 2011
I also got one this weekend at the competition. I didn't get to play with it much but I'm looking forward to doing so. Once I work out the basics I'll probably have to get a second one so my first one has someone to talk to now that the competition is over.

@knife: Red or blue?
report abuse
vote down
vote up
Votes: +0
How to install the libraries?
written by reid, May 16, 2011
So are there instructions somewhere for installing the Chibi libraries? I'm running OS X and can't get the sample programs to compile. I've made a directory ~/Documents/Arduino/libraries/chibi , and placed all of the files that came with the chibi distribution there. When I try to compile the command line example #4 I get:

In file included from /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.h:26,
from /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Stream.h:24,
from /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.h:27,
from /Users/me/Documents/Arduino/libraries/chibi/chb_cmd.c:43:
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/WString.h:28: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'String'


With a lot more errors to follow. I'm not much of an Arduino library expert. I'm using Arduino 022.

Thanks if anyone can help smilies/smiley.gif.
report abuse
vote down
vote up
Votes: +0
Library installation howto?
written by reid, May 16, 2011
So are there instructions somewhere for installing the Chibi libraries? I'm running OS X and can't get the sample programs to compile. I've made a directory ~/Documents/Arduino/libraries/chibi , and placed all of the files that came with the chibi distribution there. When I try to compile the command line example #4 I get:

In file included from /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.h:26,
from /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Stream.h:24,
from /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.h:27,
from /Users/me/Documents/Arduino/libraries/chibi/chb_cmd.c:43:
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/WString.h:28: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'String'


With a lot more errors to follow. I'm not much of an Arduino library expert. I'm using Arduino 022.

Thanks if anyone can help smilies/smiley.gif.
report abuse
vote down
vote up
Votes: +0
...
written by Akiba, May 16, 2011
Hi reid.
I just tested it on a Mac OSX using Arduino 022. I took the most recent zip file from the chibiArduino project page and downloaded it into the ~/Documents/Arduino/libraries directory. I then unzipped it and renamed the folder "chibi". My directory structure currently looks like this:

~/Documents/Arduino/libraries/chibi

I then closed and re-opened the Arduino 022 IDE so that it can index the new library. After I did that, I opened example #4 and compiled it. I got a clean compile with no errors.

In your /Documents/Arduino/libraries/chibi directory, are the actual source files: chibi.cpp, chibi.h, and chibiUsrCfg.h in there? I'm asking this because if you unzipped the chibiArduino zip file into the /libraries/chibi directory, then you'll have another folder underneath the chibi directory which will contain the source files. This may be whats causing the problem. Otherwise, its possible there is a file conflict somewhere.

Is it possible to try a clean install of Arduino 022, then installing the chibi library, opening example 4, and then doing a compile? If this is not possible, can you send me a directory listing of the /chibi directory?

Thanks.
report abuse
vote down
vote up
Votes: +0
Arigato!
written by reid, June 12, 2011
Arigato, Akiba-sama. It took me a while but I finally got around to my Chibi boards again. I had placed everything from the src/ directory into my libraries/chibi directory (and also left the same files still in a src/ directory). So my directory structure essentially had two copies of src/: one copy of all of those files was in libraries/chibi/src/, the other in libraries/chibi/ . I guess the Arduino compiler was confused at finding the source files in two places. Removing the duplicates makes the Chibi examples compile now (and now maybe I can sniff the Itron meters attached to my house, assuming that they say anything via Zigbee yet).

So thanks a ton!

Reid
report abuse
vote down
vote up
Votes: +0

Write comment

busy
 

Discuss (13 posts)
Ian
Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Nov 14 2010 18:51:53
This thread discusses the Content article: Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking

The Arduino approach opens many possibilities for ease of use and making it pervasive.

Energy conservation by monitoring & control seems to be a prime driver for the wireless sensor industry uptake... Any thoughts on an Energy Harvesting board?

The 'Install & Forget' appeals! Zero batteries just adds value to whole smart energy market.

Also, in human nature terms by example, when my house smoke detector battery needs replacing and continuous bleeps I do what majority of all people do... I pull out the battery and then it takes me months to remember to buy and replace with a new one.
#2562

Akiba
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Nov 14 2010 22:17:56
Actually, that is on the drawing board. It's really more of a solar cell/supercap type board but with battery backup. I'm going to need to do some mods to get the power down low though.

For an indoor device, I would probably just use a TI MSP430 w/no energy harvesting circuitry. Those things can last couple years on 2-AAAs. There just aren't many good options to harvest indoor ambient energy, that I know of...
#2563
Neuromancer
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 02 2010 20:52:38
I don't know if you have seen this chip but I think it would be the next iteration of your board. ATmega128RFA1. You would have to figure out how to use the chibiArduino stack with this but it would be a pretty awesome single chip solution. Might save some cost as well.
#2610

Akiba
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 03 2010 14:22:42
Yes, I have about a 100 of those chips just sitting on my shelf. The problem is that those chips are sold out and heavily backlogged. Since the supply isn't stable, I don't really want to introduce them into a product. Otherwise, if I sell out and then tell people they need to wait 6 months before they're back in stock, it doesn't look very good. Those chips are perfect for WSN too...*sigh*
#2615
Lyle Merdan
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 09 2010 17:54:41
Just got my Freakduino-Chibi boards the other day. I soldered them up last night.

For a hardware change, I recommend changing the layout of the holes for the stacking headers and you might even go further and do this for the other through hole devices.
http://www.sparkfun.com/tutorials/114

I've got a board I made where I used this technique and it works REALLY well to hold parts in place while soldering.

On the instructions page, another tip for soldering the headers is to put the headers in place and then if you have an arduino shield around, place that on the headers to hold them straight.

Next on the instructions, you should tell the users to install the software into their home directory / documents / arduino / library directory and remove the version and date info from the folder name to comply with the arduino IDE - otherwise it complains.


I'm sure there will be a few more things as I dive deeper into it.
#2639

Akiba
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 10 2010 00:04:25
Thanks for the tips. Yeah, through hole is always a pain in the ass to solder down. I like the reverse (or mirrored connector) technique but the one I often use is the technique towards the end of my assembly tutorial.

Also, I totally forgot that I had the software inside my directory already when I made the tutorial. Thanks for that tip. Need to update the assembly and usage pics to show where to put the files.
#2640
Lyle Merdan
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 10 2010 04:30:54
I'm having fun with the chibiduino. Thanks for a great product.

Could you document the proper switch and jumper settings for these situations:

USB power
AA backpack power
AA through JST
DC jack

Just to make sure no magic smoke is accidently released from the board.

I also ask because if the jumper is set to DC and connected to USB the red pin 13 LED blinks... Oh the silkscreen for the 1 of 13 is voided because of the via. It looks like you could nudge a couple of traces to move the via towards the center of the board. The same goes for a couple of other labels voided by vias. hmmmm "Voided by Vias" sounds like a band name.

Also I decided to poke around on the FTDI, it has the max power set at 90ma. Is that an issue if I draw more than the programmed current? I used the FT_PROG program from the FTDI site to do the poking around. Looking at the Arduino Duemilanove it is also set for 90ma. So I'm not sure it matters.

On the subject of the FTDI, is it possible to draw power from the the battery backpack or JST and use the USB for serial communication in order to get a configuration as close to what one might use for deployment power usage yet keep the serial communication for debugging? What would the proper jumper switch config for that if it's possible?

Note that the Arduino IDE serial monitor does not work with the cmdline example #4. I tested on Win 7 and on OS-X 10.6.

I haven't tried an alternative to the arduino IDE serial monitor on the mac yet.

I'm wondering if it would be best to zero out the EEPROM of the 328 and then set a default short address. Maybe expand on that and follow the Uno practice of programming in some kind of serial number at the end of the EEPROM....

I also think it would be great if you layed out the pins in use by the wireless in a sample sketch header.

Maybe just steal this right from the datasheet:
/*
Two pins on the analog input connector are not available for use except for standard digital I/O. These are pins Analog 2 and Analog 3. Analog 2 controls the sleep mode and Analog 3 controls the chip select for communications between the microcontroller and radio IC. If the wireless functionality is not used, these pins are available as standard digital I/O but not as analog inputs. If possible, its best to avoid using these pins. If the wireless functionality is being used, the SPI bus is also required to communicate with the radio. That means that digital pins 10-12 (PB3 to PB5 or MOSI, MISO, and SCLK) will be dedicated SPI pins.
*/

Lyle
#2641

Akiba
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 12 2010 15:48:52
QUOTE:
Could you document the proper switch and jumper settings for these situations:

USB power
AA backpack power
AA through JST
DC jack

Just to make sure no magic smoke is accidently released from the board.


No problem. That's a great idea and I'll be adding it to the documentation.

QUOTE:
Also I decided to poke around on the FTDI, it has the max power set at 90ma. Is that an issue if I draw more than the programmed current? I used the FT_PROG program from the FTDI site to do the poking around. Looking at the Arduino Duemilanove it is also set for 90ma. So I'm not sure it matters.

On the subject of the FTDI, is it possible to draw power from the the battery backpack or JST and use the USB for serial communication in order to get a configuration as close to what one might use for deployment power usage yet keep the serial communication for debugging? What would the proper jumper switch config for that if it's possible?


There is a 3.3V regulator on the board rated for 1A so there shouldn't be a need to pull any power off the FTDI. One of the reasons I added a beefy 3.3V regulator is because most of the more recent chips run at 3.3V. So I think its important to have circuitry that supports this.

As for drawing power from the USB (for the FTDI) while battery powered, yes this is possible. The FTDI is powered separately from the rest of the circuitry. It gets its power directly from the USB power no matter what the switch setting is. So if the switch is set to battery power, then the USB would still power the FTDI. This is because I figured nobody would use the FTDI chip without a USB connection

QUOTE:
Note that the Arduino IDE serial monitor does not work with the cmdline example #4. I tested on Win 7 and on OS-X 10.6.

I haven't tried an alternative to the arduino IDE serial monitor on the mac yet.


Yeah, one thing that I'm not too fond of is that the Serial Monitor won't allow the "Enter" key to be pressed. In my command line code, the Enter key (carriage return) is the signal to parse the command that was entered.

If you're on the Mac, drop into Terminal and find the device name. Once you know the name of the device, you can just use the command "screen <device name> 57600" . That will open the device using "screen" as a serial terminal emulator and at a baud rate of 57600. To exit screen, you press <Ctrl-A> and then <d>.

QUOTE:
I'm wondering if it would be best to zero out the EEPROM of the 328 and then set a default short address. Maybe expand on that and follow the Uno practice of programming in some kind of serial number at the end of the EEPROM....


Not sure if I should program in a default short address. Short addresses are usually nicknames and aren't globally unique. There is a chance that in the future, I will buy a block of 64-bit addresses from the IEEE. If I do that, then I can program the boards with a 64-bit address that I can guarantee will be unique. It's similar to an Ethernet MAC address and that's the original idea behind the long address (64-bits).

QUOTE:
I also think it would be great if you layed out the pins in use by the wireless in a sample sketch header.

Maybe just steal this right from the datasheet:
/*
Two pins on the analog input connector are not available for use except for standard digital I/O. These are pins Analog 2 and Analog 3. Analog 2 controls the sleep mode and Analog 3 controls the chip select for communications between the microcontroller and radio IC. If the wireless functionality is not used, these pins are available as standard digital I/O but not as analog inputs. If possible, its best to avoid using these pins. If the wireless functionality is being used, the SPI bus is also required to communicate with the radio. That means that digital pins 10-12 (PB3 to PB5 or MOSI, MISO, and SCLK) will be dedicated SPI pins.
*/


That's a great idea! I'll need to modify my sketches, and I'm planning to add more. Those should be coming soon, but I'm in the middle of an interesting project at the moment. If I can get it to work, I think it would make the Freakduino boards very useful. Not sure if I can pull it off, though. If I do, you'll be hearing about it
#2649
Lyle Merdan
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 13 2010 01:23:24
Great info!

Would you like me to email suggested updates for the next release of software / docs or would you like me to keep posting? As I dig further I've got some questions and suggestions to make things more arduino crowd friendly.
#2650

Akiba
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 13 2010 01:46:15
I think its best to post the suggestions up publicly. It might inspire other ideas from people and I like keeping dialogs open as much as possible. Also, your suggestions would probably be useful for other people designing boards and shields for the Arduino crowd
#2651
Lyle Merdan
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 13 2010 05:20:45
Cool! I gotta get them out of the head because they stop other thoughts from happening.

So for chibiSleepRadio, how long of a delay (if any) should there be before attempting a transmit?

Also have you thought of doing an implicit chibiSleepRadio(false) whenever a transmit is done?

And on that thought, what about storing a sleep state before a transmit and restore that state following a transmit and all ACKs are complete? This feature is targeted towards nodes that primarily transmit...


Regarding the IEEE address, I'm wondering if there could be some borrowing from the ethernet library defined address when it's used. Just a thought in it's infancy at this time.

I've added some propoed documentation of valid ranges to the chibiUsrCfg.h. I filled in some of the min/max values on speculation. Please double check my work as I know enough to be dangerous and I speculate some of those ranges are wrong.

With regards to improving shields, I'm suprised no one has proposed any kind of label standard for pins used by a shield. Most people will attach a shield and any external devices before diving too far into software. So if a board / shield like yours had a $ instead of labels on analog 0 and 1, that would be a warning to users those are not availible for general use. Then in the case of SPI pins or I2C pins, use a # to designate that they are used for that protocol.
File Attachment:
File Name: chibiUsrCfg.h
File Size: 12233
#2654

Akiba
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 13 2010 13:49:44
Oh, that file is really nice. I just added it to my subversion repository. It should show up on the next release. Not sure when that will be, but probably in about a month's time. I'll be adding chibiArduino support for the AT86RF212 soon which runs on the 868 Mhz (Europe) and 915 MHz (North America) bands.

I like how you used the name "chibiduino". It has a nice ring to it and I'm considering changing the name of the board to it.

Regarding some of the other comments:

QUOTE:
So for chibiSleepRadio, how long of a delay (if any) should there be before attempting a transmit?


There shouldn't be any delay required. In the driver's chb_sleep() function, I set the state to RX mode on wakeup. The chb_set_state() function has a delay inside of it that blocks for the specified time required for the PLL to lock.

QUOTE:
And on that thought, what about storing a sleep state before a transmit and restore that state following a transmit and all ACKs are complete? This feature is targeted towards nodes that primarily transmit...


I think that for now, I'm going to leave the power management up to the user's sketch. People that play with the power management usually know what they want to achieve. I'd prefer to keep the driver as simple as possible, unless obvious patterns emerge that might be better handled down there.

QUOTE:
Regarding the IEEE address, I'm wondering if there could be some borrowing from the ethernet library defined address when it's used. Just a thought in it's infancy at this time.


Do the Wiznet chips come with pre-programmed MAC addresses? I had thought that there was no MAC address that came with them.

Incidentally, I've tossed around the idea of buying an OUI (Organizationally Unique Identifier) and then parsing out small blocks to individuals. An ethernet MAC address is just made of a 24-bit OUI and then an additional 24-bits internally unique to the company.

I'll probably have to let this idea gestate for a while, but anyone can pretty much do it. With 802.15.4, it's quite nice because the IEEE OUI is 24-bits but the 802.15.4 extended address is 64 bits. That means you get approximately 40 bits of unique addresses or roughly a trillion addresses.

Anyways, lemme know if you have any other comments or suggestions. I'll be integrating your suggestions into the docs and the example sketches. The additional descriptions you added to the user config file were awesome. That one is definitely going into the release folder
#2655
Lyle Merdan
Re:Introducing the Freakduino-Chibi, An Arduino-based Board For Wireless Sensor Networking
Dec 13 2010 19:30:02
Akiba wrote:
QUOTE:
Oh, that file is really nice. I just added it to my subversion repository. It should show up on the next release. Not sure when that will be, but probably in about a month's time. I'll be adding chibiArduino support for the AT86RF212 soon which runs on the 868 Mhz (Europe) and 915 MHz (North America) bands.

I like how you used the name "chibiduino". It has a nice ring to it and I'm considering changing the name of the board to it.


Please take a minute and double check the ranges I stuffed in there to make sure they are all good.

So for the name chibiduino, sorry but I accidentally started referring to the board as that. I didn't mean to ruin the millions of dollars and tens of thousands of hours spent by FreakLabs on branding. The name is what kind of stuck in my head for some reason. With other names like freeduino, sanguino and seeeduino out there the chibiduino seemed to just be the name I started referring to it as.


QUOTE:
Do the Wiznet chips come with pre-programmed MAC addresses? I had thought that there was no MAC address that came with them.

Incidentally, I've tossed around the idea of buying an OUI (Organizationally Unique Identifier) and then parsing out small blocks to individuals. An ethernet MAC address is just made of a 24-bit OUI and then an additional 24-bits internally unique to the company.


So the ethernet shields did not have a pre-programmed MAC. But the second gen shields have a sticker on them with a MAC: http://arduino.cc/en/Reference/EthernetBegin

Parameters

mac: the MAC (Media access control) address for the device (array of 6 bytes). this is the Ethernet hardware address of your shield. Newer Arduino Ethernet Shields include a sticker with the device's MAC address. For older shields, choose your own.


The thought train behind this is if an ethernet shield is in use, I'm just thinking of reducing code / defines space...

For the docs, I think you should add a note to the chibiSleepRadio function that there is no delay needed between wake up and transmission.

Now I'm at work so I can't really dig around too much but if in polling mode and there happens to be data in the receive buffer, and then the radio is put to sleep, then woken up later and there is no more data rx'd OTA before a receive is done, will that buffer still be populated or do you accommodate for that in the driver?
#2657


Discuss...
< Prev   Next >