Electronic – arduino – How to connect RFduino to internet


I backed the RFduino project on Kickstarter to use it in my next project. It is basically a tiny Arduino compatible board with built in Bluetooth LE that supports additional shields.

I've also got a regular Arduino Uno with an Ethernet Shield.

What I'd like to build

I'm thinking about a sensor network (humidity and temperature) for indoors using multiple RFduinos with the coin battery shield lying around the house. The Arduino Uno with the ethernet shield and a bluetooth shield connected to a router would send the data to my server, so I can monitor the stats remotely.


I'd like to transmit data every 10 mins to keep energy consumption low. How can I wake up the sensors and my mainstation (the uno) at the same time, transmit data (from sensors to mainstation and from mainstation to my server) and put them back to sleep again? Is there any risk at losing data because one of the sensors might be awake when the mainstation is still sleeping? Can the Uno Bluetooth shield interfere with the Ethernet shield?

I'm not asking for code but does the idea make sense? Links to related projects would help a lot. I also thought about using xbee for data communication but i found it quite complicated and now that Bluetooth LE needs less energy I can't see any advantages of xbee over Bluetooth LE.

Best Answer

It sort of makes sense.

There isn't much of a problem keeping the Uno on 24/7 (it doesn't consume much energy). Instead of connecting it to a battery, get a good wall wart for it. This way, you don't have to worry much about synchronizing the RFduinos as well. Just have it wait patiently for an RFduino to connect to it. However, if you do want to keep them in sync, then just use the Time library, somehow turn them all on at the same time (easy if you use the reset pin), and pray that their power source is uninterrupted.

About the RFduinos: you probably can keep them on as well, on a loop that breaks every 10 minutes to turn on bluetooth and send data. Even better, use a library like this one which gives you a power efficient sleep mode to work with.

If you don't want to keep the RFduinos on, though, a simple circuit using a 555 timer and a relay ought to suffice to turn it on every few minutes (it can turn itself off via the RESET pin of the 555). As long as the Uno is on 24/7, you need not use any special sync and can have the RFduinos sending values at staggered intervals.

Here's a schematic:

enter image description here

Connect the part that says "To Pin" to some pin on the RFduino. Send a constant HIGH output on it. When you want to shut down, send a LOW signal.

The "To Vin" and "To GND" parts go to the respective pins on the RFduino.

If you can't find a 866K resistor, something of a nearby value ought to work. Basically, ln(2)*R2*C2 should be 600 seconds.

Note that 555s have different RESET behaviors. We want the one which goes on it's LOW cycle when reset.