Wednesday, November 12, 2014

Introduction to Rapid Prototyping: Internet of Things

Internet of Things, or IoT for short, is one of the new big trends in technology, in brief, it is about making everything and anything connected to the cyberspace of the internet, so you can access your home via your smartphone, or make your car talk to you or to other cars, from the smallest temperature sensor on top of your house to the biggest data centers and servers everywhere are going to be connected, though the matter of data security is still in debate but undoubtedly IoT will help to improve many services.

In this article, we will continue the discussion about different platforms for low-cost rapid prototyping, but we will be more specific and target only platforms suitable for IoT applications, compare them from price and technical perspectives. Mainly an IoT platform needs two features:
-        Internet connectivity, the platform must be equipped with some sort of a connectivity interface to the internet via a wired Ethernet, Wi-Fi, Bluetooth or at least with a USB that is connected to PC or a modem to connect it to the internet or any other sort of networks.
-         Web service: an IoT platform in most cases is required to have an onboard web server, not necessarily an advanced one; in many cases just a light weight web server is more than enough to communicate the data to other peers/terminals.

First let’s start with most common low-cost development kits that support network/internet connectivity via Ethernet and Wi-Fi, though they are quite handy for controls applications, compact form factor applications, home appliances and others but requires a lot of work on the low-level programming side, hardware wiring and packaging:  

-        Arduino YÚN: 66.36$
CPU: Atmega32U4 8-bit RISC.
Connectivity interfaces: wired Ethernet, Wi-Fi and USB
Development environment/IDE: Arduino IDE (C -like programming language).
Website:

-        Arduino Blend: 32$
CPU: Atmega32U4 8-bit RISC.
Connectivity interfaces: Bluetooth.
Development environment/IDE: Arduino IDE (C -like programing language).

-        Tiva C Connected LaunchPad: 20$
CPU: 32-bit ARM Cortex-M4/120 MHz
Connectivity interfaces: wired Ethernet, USB (host or device).
Development environment/IDE: TI Code Composer Studio (C/C++), Energia IDE (the Arduino IDE equivalent for TI Launchpad kits, C –like programming language).

-        SimpleLink Wi-Fi CC3200 LaunchPad: 30$
CPU: 32-bit ARM Cortex-M4.
Connectivity interfaces: Wi-Fi
Development environment/IDE: TI Code Composer Studio (C/C++), Energia IDE (the Arduino IDE
equivalent for TI Launchpad kits, C –like programming language).

-        Intel Edison: 50$
CPU: 32-bit Intel Quark/100 MHz.
Connectivity interfaces: Wi-Fi, Bluetooth.
Development environment/IDE: Edison Arduino IDE.
Note: Requires Arduino expansion kit for development and prototyping purposes.

-        Microchip Comm Demo Board: ~50$
CPU: Microchip 32-bit MIPS
Connectivity interfaces: Wi-Fi.
Development environment/IDE: MPLAB IDE and C32 compiler.
Website:

-        PIC32 Ethernet Starter Kit-I and -II: 75$ and 89$
CPU: Microchip 32-bit MIPS/80 MHz.
Connectivity interfaces: wired Ethernet, USB (host & device).
Development environment/IDE: MPLAB IDE and C32 compiler
Website:

Particle Core (formerly Spark Core): 39$
     CPU: ARM Cortex-M3/72 MHz.
     Connectivity interfaces: Wi-Fi.
     Development environment: Web-based IDE using REST API.
     Website: https://www.particle.io/

NodeMCU: ~7-13$
    CPU: 32-bit Xtensa LX3 Architecture (A.K.A. ESP8266).
    Connectivity interfaces: Wi-Fi.
    Development environment: Lua, ESPlorer, Arduino IDE.
    Website: www.nodemcu.com
    Arduino package for NodeMCU: https://github.com/esp8266/Arduino

HC-05 and HC-06 (Serial (UART) to Bluetooth module): ~3.5-5$
   CPU: N/A.
   Connectivity: Bluetooth and UART.
   Development environment: There is no standard development environment for the HC modules, they can be easily integrated with any system that supports standard UART interface.
   Datasheet:
   http://www.tec.reutlingen-university.de/uploads/media/DatenblattHC-05_BT-Modul.pdf

These platforms aren’t specifically designed for IoT applications but they support it through general purpose operating system (Android, QNX, Linux…etc) they operate on, the main advantage of such platforms is the high computational power they offer in comparison to other platforms mentioned previously like advanced webserver/web hosting, running complicated algorithms and multitasking, however, they aren’t suitable for low-power or battery powered applications:
                                                                              
-        Raspberry Pi Model A+: 20$
CPU: ARM11/700 MHz/256 MB.
Connectivity interfaces: USB (host), ability to connect to Wi-Fi or Bluetooth via USB Wi-Fi adapters.

-        Raspberry Pi Model B+: ~38$
CPU: ARM11/700 MHz/512 MB or 1GB.
Connectivity interfaces: wired Ethernet, USB (host), ability to connect to Wi-Fi or Bluetooth via USB Wi-Fi adapters.

-        BeagleBone Black: 55$
CPU: Texas Instruments AM335x ARM Cortex A-8/1 GHz.
Connectivity interfaces: wired Ethernet, USB (host), ability to connect to Wi-Fi or Bluetooth via USB adapters.

-        Intel Galileo: ~64$ (G1), ~75$ (G2)
CPU: 32-bit Intel Quark SoC X1000/400 MHz.
Connectivity interfaces: wired Ethernet, USB host and device.
Development environment: Arduino IDE, Linux port is available for this platform.

Other platforms designed specifically for IoT

-        Kinoma: 149$
Description: A JavaScript powered IoT construction kit
CPU: ARM/800 MHz.
Connectivity interfaces: Wi-Fi, Bluetooth, USB OTG.
Development environment: Kinoma Studio.
Website:  http://kinoma.com/

-        Wunderbar: 199$
Description: Wi-Fi enabled sensor modules (Humidity, Temperature, Light/Color, Motion…etc).
CPU: Freescale ARM Cortex-M4 MK24
Connectivity interfaces: Wi-Fi, Bluetooth.

-        1sheeld: 55$
Description: a platform that uses smartphone as an Arduino shield via a Bluetooth breakout board for connectivity purposes.
CPU: N/A; depends on the smartphone connected.
Connectivity interfaces: Bluetooth.

Update (December, 2014):

Your data to the Cloud:
Cloud platforms for IoT offer internet connectivity & communication, data visualization,  activity monitoring and remote access services for IoT devices/nodes; you can connect your device through any of these platforms to a personal/corporate emailing system, home automation, public access and many other applications, most known cloud platforms to date of the article:
- Exositehttp://exosite.com/ : For data visualization, logging and node's remote control.
- Temboohttp://www.temboo.com/ :data visualization, activity logging, node's remote control, communication via email and other social networking platforms, data storage...etc.
- Nexmohttps://www.nexmo.com/ : For communicating via Short Text Messages (SMS) with your node.
- IBM IoT Foundationhttps://internetofthings.ibmcloud.com/ : For data visualization, logging and node's remote control.
- PubNub: http://www.pubnub.com/ :data visualization, activity logging, remote control.

Last but not least, we all know technology advances rapidly, and all these kits and platforms we reviewed as the latest trend might get obsolete in the near future and something else will come up to replace them, all what I wanted is to give you the first step to get through the door of IoT electronics but my advice is keep developing yourself, update yourself with the latest and don’t wait.
   
The author would like to thank Hesham Omran, a multimedia researcher, for his input and contribution to the article.

--
Karim El-Rayes
Nov. 12, 2014
Vancouver, Canada

An example of a wireless controlled robotic arm over home Wi-Fi network using Texas Instruments Tiva C Connected LaunchPad development kit: