My search for the cheapest controller for IoT sensor data collection led me to investigate the Arduino family. Since I came from a Microsoft background, I had investigated the Raspberry Pi and Intel Galileo, both tipped to run the new version of Windows. You can run Linux on each of these right now which gives a powerful platform to build on. However my focus remained cost effective and reliable sensor data collection – a problem that I think plague these early years of IoT. I might not have my economics right but I just don’t see a 60$ controller as part of a sensor collection solution.
Some googling got me to the Arduino Nano V3.0.
The story behind the arduino is quite interesting. I left the embedded system space a decade ago and while the end result of making gyzmos had always appealed to me, the process was a tedious and frustrating. These guys from the Makers movement have simplified embedded programming so much that you need not be an engineer, or even a very good programmer to get your arduinos running.
The nano plugs into the USB port of a laptop and (unlike the Raspberry or the Galelio) can be powered by it. It has 14 digital GPIO pins and 8 analog input pins which are great for interfacing with sensors. I tried connecting it with a motion sensor module and a current/power measurement module and was able to do both in a few hours (with no prior experience in the sensors or Arduino. Incase you are wondering, the project here was to turn the lights of an entire floor off when no one is there. You can get canned solutions for this with regards to lights but not fans, ACs, laptops etc. Also, the whole solution here costs around 9$ for every 10 odd sensors. The coolest thing though is that it costs less than 6$ and is roughly 2 inches x 0.5 inches – which means you can plug this in pretty much anywhere. The board is designed to be breadboard friendly and even has an LED pre-fixed to the GPIO pin 13 for convenience sake. I tell you, these guys have thought of everything!
Programming is done via the Arduino IDE which is fully integrated with the devices. All you need to do to burn your code is to press the upload button and the rest gets done seamlessly. The programming language looks like a derivative of C or Java and is quite easy to learn. It comes stacked with samples and sniplets for the most common tasks. The place to start is the arduino site at http://arduino.cc/.
The drawbacks I could see this with were:
- There no build in means of communication. I would have liked to see a version with built-in WiFi. The raspberry is more powereful in that sense where almost all means of communication (Wifi, Bluetooth etc. can be plugged attached via USB). Arduinos have a class of boards with Wifi on them but the cost them becomes comparable to the Raspberry.
- The memory on these is tiny. 32 KB flash. Especially when you compare it to the raspberry which requires a 8GB memory card just to get going.
My conclusion was that this is a nifty little board for sensor collection type scenarios. Definitely worth the 6$ and a day well spent.