Technology has played a huge role in increasing efficiency in the work place, improving living conditions at home, monitoring health and environmental conditions and saving energy and natural resources. This has been made possible through continuous development of sensing and actuation devices. Due to the huge data handling requirements of these devices, the need for a more sophisticated, yet versatile data handling and storage medium, such as the Internet, has arisen. That’s why many developers are adopting the different Internet of Things platforms for prototyping that are available.
There are several different prototyping platforms that one can use to add internet connectivity to his or her prototypes. It is important for a developer to understand the capabilities and limitations of the different platforms if he or she wants to make the best choice. So, here is a quick look at each platform.
Arduino is a popular open-source hardware prototyping platform that is used in many devices. It comprises several boards including the UNO, Mega, YUN and DUE among several others. However, out of all the boards, only the Arduino Yun has built-in capability to connect to Wi-Fi and LAN networks. The rest of the boards rely on the shields, such as the Wi-Fi shield and Ethernet shield, to connect to the Internet.
The official Arduino Ethernet shield allows you to connect to a network using an RJ45 cable. It has a Wiznet W5100 Ethernet chip that provides a network IP stack that is compatible with UDP and TCP. Using the Ethernet library provided by Arduino you will be able to connect to your network in a few simple steps.
If you are thinking of connecting to the Internet wirelessly, you could consider getting the Arduino Wi-Fi shield. It is based on the HDG204 wireless LAN 802.11b/g System in-Package and has an AT32UC3 that provides a network IP stack that is compatible with UDP and TCP. Using this shield and the Wi-Fi library provided by Arduino, you can quickly connect to your prototypes to the web.
The Arduino Yun is a hybrid board that has both Ethernet and Wi-Fi connectivity. It is based on the ATmega32u4 and the Atheros AR9331 which supports OpenWrt-Yun. The Atheros processor handles the Wifi and Ethernet interfaces while the ATmega32u4 handles the USB communication. So, if you are looking for a more versatile Arduino board for an Internet of Things project, this is it.
There are several advantages to using the Arduino platform for internet of things projects. For starters the Arduino platform is easy to use and has a huge community that you can rely on for technical support. It also is easy to create a prototype using Arduino, since you can design a PCB based on the boards. Moreover, apart from Arduino official shields, the Arduino platform can also work with third party Wi-Fi and Ethernet shields such as the WiFly shield. Therefore, your options are limitless.
On the down side, all Arduino boards, apart from Yun, need an external module so as to connect to the internet. So, you have to invest more. In addition to this, there are very many available shields that are compatible with the Arduino. This makes it difficult for you to choose. Also, you still need to choose the right Internet of Things platform for your project, such as Xively or EasyIoT.
The Raspberry Pi is an open source prototyping platform that features credit-card sized computer boards. The boards have USB ports for a keyboard and a mouse, a HDMI port for display, an Ethernet port for network connection and an SD card to store the operating system. There are several versions of the Raspberry Pi available in the market. They include the Raspberry Pi 1 A, B, A+ and B+ and the Raspberry Pi 2 B.
When using a Raspberry Pi board you can connect to the Internet either wirelessly or via an Ethernet cable. Raspberry Pi boards, except version A and A+, have an Ethernet port where you can connect an Ethernet cable. Normally, the boards gain internet connection immediately after you connect the Ethernet cable. However, your router must be configured for DHCP (Dynamic Host Configuration Protocol) for this to happen. Otherwise, you will have to set the IP address of the Raspberry Pi manually and the restart it.
To connect your Raspberry Pi to the internet wirelessly, you have to use a Wifi adapter, preferably one that supports the RTL8192cu chipset. This is because Raspbian and Ocidentalis distributions have built-in support for that chip. However, there is no need to be choosy. Almost all Wi-Fi adapters in the market, including the very low cost budget adapters will work without any trouble.
Using Raspberry Pi boards for IoT projects is advantageous because you don’t need extra shields or hardware to connect to the internet. Moreover, connecting to your wireless or LAN network happens automatically, so long as the router that has DHCP configured (most routers do). Also, you don’t have to worry if you are a newbie, since there is a huge Raspberry Pi community. You can get help quickly.
The disadvantage of using the Raspberry Pi platform to make IoT devices is that it is not easy to use. It would take tremendous time for newbies to learn how to set up everything and code apps. Another demerit is that the Raspberry Pi boards cannot be easily integrated into a product. There are also numerous operating systems that the Pi boards can run on and it is not easy to decide on the best operating system for the device you are creating.
ESP8266 WiFi Chip
The ESP8266 is a self-contained Wi-Fi module that can provide any microcontroller with access to Wi-Fi networks. It is has a System on Chip (SOC) with an integrated TCP/IP protocol stack. It performs several tasks, such as hosting an application or offloading all Wi-Fi functions from another application processor.
The module has preprogrammed AT commands that enable you to simply hook it onto your Arduino board and give your project Wi-Fi capabilities. Connecting it to your Arduino board or another microcontroller is easy, since it can communicate over UART. The module can also be integrated with application specific devices and sensors easily through its GPIOs. It can also function perfectly on its own, for example using the ESP8266 Arduino IDE project.
It is advantageous to use the ESP8266 since it is more of a plug and play Wi-Fi module. You don’t need to write huge chunks of code to get started. The module is also very cheap, so it shouldn’t have a huge impact on your project’s budget. Finally, it is easy to integrate the ESP8266 on a PCB, which makes it perfect for building prototypes.
Some disadvantages of this module are its lack of SPI communication and support of SSL. It also doesn’t have 5V to 3V logic level shifting. So, you have to purchase a level shifter. Another disadvantage is that it lacks a voltage regulator on-board and sometimes uses big spikes of current which the 3.3v pin on the Arduino cannot supply. So, you may need to use an external 3.3v voltage regulator. Compared to other platforms, the module is harder to use, and you still need to find the right IoT online service for your projects.
Spark Core (as well as Photon & Electron)
The Spark Core is a Wi-Fi enabled IOT development platform that makes connecting devices an easy task. It is powered by the STM32F103CB ARM 32-bit Cortex M3-based microcontroller and CC3000 Wi-Fi module. So, you do not need to attach extra boards to achieve Wi-Fi capability.
The back end of the Spark Core is a website platform cloud that allows you to send and receive data. So, instead of having to access all your data from your local network, the Spark core connects to the Spark.io network to enable you to access your data seamlessly from anywhere. The module is hooked up to the cloud by default, but you can set up your own connection protocols if you like.
The merits of using this internet of things platform for prototyping is that it is easy to integrate on a PCB as the Spark Photon chip, it is easy to use, has a good online community and comes connected to a cloud platform. Its disadvantage is that it is linked to the Spark platform, which you have no control over.
Which Platform to Choose?
The different features that come with each platform make it ideal for certain applications, but not all. Therefore, if at all you have not yet made up your mind on the platform to use, try selecting them based on usage.
The Raspberry Pi is ideal for IoT applications that are server based. This is because it has high storage space and RAM and a powerful processor. Moreover, it supports many programming languages that can create server-side apps, such as Node.js. You can also use the Raspberry pi in instances where you want to access web pages and view data posted on online servers, since you can connect a display to it and view the pages on the web browser. The Raspberry Pi can connect to both LAN and Wi-Fi networks. However, it is not advisable to use the raspberry Pi for projects where you would want to integrate it into a finished product or create a custom made PCB.
On the other hand, Arduino comes in handy as a client. It can log data on an online server and retrieve data from the server. It is ideal for logging sensor data and controlling actuators via commands posted on the server by another client. However, there are instances where you can use Arduino boards for server functions such as hosting a simple web page that you can use to control your Arduino from the local network it is connected to. The Arduino platform can connect to both LAN and Wi-Fi networks.
The ESP8266 has a very simple hardware architecture and is best used in client applications such as data logging and control of actuators from online server applications. You can use it as a webserver as well, but for applications or web pages that you would want to access from the local network that the module is connected to.
The Spark Core platform is ideal for both server and client functions. It can be used to log sensor data onto the Spark.io cloud or receive commands from the cloud. Moreover, you don’t have to worry about getting online server space, since the Spark cloud is available for free. You can also create graphical user interfaces based on Node.js to visualise incoming data from sensors connected to the Spark Core and send commands to the Spark Core for activation of actuators.
So, there you go. That’s is basically everything that you should know about the internet of things platforms for prototyping that have been elaborated in this article. Now you can make an informed choice. What is your favorite platform for Internet of Things projects prototyping? Please share below in the comments!