The Internet of Things (IoT) is the main topic of conversation throughout the industry at the moment. Some experts will tell you that it is the next big thing, while others will tell you that it is already here. Whatever side of the discussion you are on, it is important to understand the concept behind the IoT and how it is supposed to benefit designs.
In its purest of forms, the IoT is all about connecting things (non-human) together to make decisions as quickly and accurately as possible. The things can come in many different forms – from smart objects, such as phones and watches, to small standalone nodes the size of a postage stamp, but in general they all have common components and traits. These things are part of a larger system, and they generally acquire data from the environment through sensors, the data is then processed by a microcontroller and the processed data is sent back to a node to be passed on through the Internet to a server, which then may make a decision to take action on the data, or store it for future use.
Designing products for the IoT is much the same as designing microcontroller-based products for any other application; usually the first step is choosing the correct development kit, and to do that requires a thorough understanding of the target application. For IoT applications there could be three different types of projects:
Cloud connected – These can be the largest of any projects. They have the potential to connect systems from around the world to a cloud infrastructure. The cloud is made up of servers using dedicated software to analyse and process the data collected from the systems.
Local networked – These are generally a set of systems tied to a single location and may use a local intranet to communicate.
Gateways – Gateway systems are often used to retrofit existing systems to the Internet.
Development kits for cloud systems
Developing products for cloud-connected systems highlights the main differences between developing for the IoT and developing a traditional embedded system. As mentioned above, the cloud consists of one or more servers to provide storage and services for the overall system. The nodes that make up the ‘things’ of the IoT connect to these cloud servers. While the nodes gather the data, the cloud stores the information to build a historical picture of the operation of the system, and analyses and processes the data in real-time to tailor the system to its optimal efficiency.
Trying to build a cloud connected IoT system from the ground up has the potential to be a daunting task. It could be expensive and time consuming and require expertise in many different engineering disciplines. The servers need to be set up with hardware and software. Drivers and application code would also be required for both the server and the IoT node. The hardware would need to be designed for the node. After this, the whole system would be required to be tested and debugged to ensure the connectivity between the servers and the node was seamless.
All the tasks above would need to be completed before the application code for the system was written. Luckily for developers, there are cloud development tools available that can provide an ecosystem with various connectivity options and application code that has already been tried and tested. These tools can allow the developer to get a prototype up and running in a short amount of time – sometimes in under a day.
To give an example of the different options that one manufacturer can offer developers, Intel has two boards designed to facilitate cloud development, or which can even be used as end devices. The Intel Edison measures only 25 x 35,5 mm, enabling it to be integrated into products that need to be situated in small areas. Although small, the board packs a powerful punch through its 22 nm Intel Atom SoC with a dual-core, dual-threaded CPU running at 500 MHz, as well as a 32-bit Quark MCU running at 100 MHz. The processors are supported by ample memory of 4 GB Flash and 1 GB RAM. To provide the connectivity required for IoT applications, Wi-Fi and Bluetooth are included.
To support the board and make the server aspect of the system easier to integrate, Intel offers Intel IoT Analytics Cloud Server. This offering gives the developer the ability to collate, store and analyse data from the Edison without having to develop a custom server solution. The cloud server also acts as a development tool. To support application development and debug on the Edison, Intel provides an Arduino development environment.
The second Intel IoT board is larger and offers more features over the Edison. The Intel Galileo Gen 2 Arduino-certified board has a 400 MHz 32-bit Intel Quark X1000 SoC at its heart and offers a raft of common embedded connectivity options, including SPI and UART. Connection to the Internet is taken care of with 10/100 Ethernet. As with the Edison board, the Galileo 2 is supported in the cloud by IoT Analytics Cloud Server.
Both the Edison and the Galileo 2 development kits allow the gathering and transportation of data, with easy integration to cloud services. They are basic kits that offer an easy initial migration to IoT development, but in some cases a more comprehensive solution with more powerful features may be required.
Microchip takes the IoT concept a stage further with a cloud development platform that uses Amazon’s Elastic Compute Cloud (EC2) infrastructure. EC2 allows communication in both directions, both from the node to the cloud and back from the cloud to the node. This ability allows Microchip’s development platform to be controlled directly from the cloud without any human intervention whatsoever.
Development kits for local networked IoT
The main difference between developing for cloud systems and locally networked IoT implementations is that the local network may not necessarily require a TCP/IP communications link like Ethernet or Wi-Fi. Bluetooth and ZigBee are two very popular standards which can be used for this type of networking and have other useful features such as lower power consumption and more resistance to industrial interference.
The Texas Instruments (TI) CC2650STK SimpleLink Bluetooth Smart SensorTag loT Kit is a good example of a development kit intended for a local network IoT application. The kit allows the developer to gather information as well as process the data and send it on. To facilitate data gathering, the board includes ten sensors for different applications including acceleration, temperature and ambient light measurement. The kit can also use an Android or iOS app, which connects to the development kit via Bluetooth. The app is used to display the readings from the sensors and provide basic analytics. It can also be used to control the sensors.
Another kit that provides a similar set of capabilities is the Sensor Puck from Silicon Labs. This kit offers a wide variety of sensors for ambient light, UV index, ambient temperature and humidity. The Sensor Puck kit also boasts an app for iOS or Android, which is connected to the board through a Bluetooth Low Energy (BLE) link. A useful feature on the Sensor Puck board is support for BLE broadcast, which can allow the app to collect data from multiple Sensor Puck kits. The developer can then write an application that analyses the data from multiple sources.
Development kits for gateways
Gateway devices allow data to be sent to the cloud from devices that are not able to support TCP/IP connections. These devices communicate using wireless standards like ZigBee instead of Wi-Fi or Ethernet. Because ZigBee isn’t based on TCP/IP, it doesn’t assign IP addresses. Therefore, if the developer wants to send the data over the Internet without the extensive time and money penalties that bespoke development would bring, a gateway has to gather the information from the ZigBee network and translate it.
For these type of applications, Digi has launched its XBee ZigBee Cloud Kit. The Cloud Kit translates the ZigBee data into TCP/IP packets and forwards it to the cloud via Ethernet or Wi-Fi. Digi has a sponsored device cloud account to host the data uploaded from the gateway. The developer can then use a browser to access the cloud control panel and interact with the data through the XBee Cloud Kit.
Intel also has a solution for gateways, intended for IoT designs that are more complex. As well as supporting 10/100/1000 Ethernet and Wi-Fi, the DK300 series gateway solution can also send data to the Internet through cellular 2G/3G/4G. To gather the initial data from the nodes, the gateway boasts Bluetooth, USB, serial ports and ZigBee.
A developer starting from the ground up will have to consider the cost and time to design the complete system, as well as the numerous different types of specialist skills that are required to implement such a system. The company would have to have access to personnel with expertise in wired and wireless communications, embedded hardware and software design, and driver development for the data gathering nodes, as well as the skills such as cloud and mobile app development for the IT side of the system.
Development kits designed specifically for the IoT provide the hardware, software, firmware and tools for the IoT system, letting the developer concentrate entirely on the application development that is specific to that unique implementation.
With such a wide variety of development kits available, which feature options for almost every conceivable communications protocol, as well as scalable cloud functionality, getting an IoT system up and running has never been easier.