Arduino: Enabling the Internet of Things


The Arduino is a micro-controller platform (AVR ATmega) constructed completely from open-source hardware and software. Since the Arduino is open, inexpensive, easy to acquire and very easy to use … it has become quite popular amongst the hacker community.

There are many different Arduino form-factors (development boards, just the bare-bones chip and even wearable). There are also many communications options (USB, Ethernet, Bluetooth and ZigBee, I2C, SPI and more). In all cases, the designated low-level use of the micro-controller pin-outs, the software development environment and run-time environment are effectively the same. However, if the Arduino isn’t powerful enough, you can use the 32-bit ARM Cortex M3 powered Cortino and still maintain the same Arduino development board form-factor and pin-outs.

This combination of standardization over a number of levels and flexibility has been the catalyst for a significant number of projects and examples based on the Arduino.
Creating a higher-level standard for Arduino run-time examples (a mini-framework)

Creating a higher-level standard for Arduino run-time examples (a mini-framework)

Many of the on-line Arduino projects and examples focus on connecting just one piece of hardware to an Arduino. This isn’t a bad thing, because they have helped us all get into our Arduinos much faster (thanks everyone !).

Unfortunately, when you try to combine aspects of different examples, you’ll find overlaps between the pin-out usage and various software fragments that just don’t work well together. The examples aren’t modular (componentized) and often use simple large delay loops (rather than timers or interrupts), because of an implicit assumption that one example doesn’t have to share the processor (or run-time environment) with other examples.

Wouldn’t it be excellent, if there was some higher-level standardization across Arduino examples that allowed you to cherry-pick want you needed and plug them together quickly ?

For example, I’d like to grab a one-wire temperature sensor, a light sensor, an LCD display and wirelessly transmit the results using VirtualWire … and quickly have this working.

  • Aiko-Platform: OpenWRT router combined with an Arduino and a ZigBee mesh network
  • Arduino “standard project run-time” Aiko framework (GitHub source code repository)
  • Arduino shield with LCD, temperature and light sensors, buttons and a couple of relays (GitHub source code repository)
  • Arduino shield for rocket avionics (or a plane) (GitHub source code repository)
  • Arduino “standard project pin-out usage” definition (needs to be updated !)

Software and Documentation License

The Arduino mini-framework and modular examples are open-source under the FSF GPLv3 software license.

All associated documentation is available under the Creative Commons Attribution-Noncommercial-Share Alike 2.5 Generic license.