Embedded + Cloud = Internet of Things
by Michael Parks, PE, for Mouser Electronics
The Internet of Things (IoT) has gone by other names, including ubiquitous computing, pervasive computing, and haptic computing, to name a few. However, the concept remains the same: The IoT refers to objects with embedded sensors, processing, and communication capability that talk to each other to provide people and other systems with information to make more precise, well-informed decisions.
The impetus for IoT includes:
- Widely available, inexpensive yet powerful and tiny systems-on-chip (SoCs)
- Ubiquitous, highly reliable, high-speed Internet connectivity
- Cloud computing is shifting economic and technical feasibility for lean start-ups that specialize in niche products
- The maturing smartphone and Internet services markets are causing a search for new markets
Your web browser is part of the World Wide Web, and embedded electronics are part of the Internet of Things. Both have a complex yet hidden system of routers, modems, switches, access points, servers, and associated software. The 'cloud' alternative lets lean startups experiment and grow (or shrink) as demand dictates rather than fronting the significant cost of a private server farm. Several options in hardware and communication protocols exist for designing IoT products, and there are an incredible number of solutions providers for your IoT cloud-based backend, as well. What IoT cloud options are available? The below survey is not exhaustive, but rather provides enough understanding of the ecosystem to appreciate the nuances of available options.
The IoT Cloud Ecosystem at 50,000 Feet
Before comparing the different IoT cloud solutions, it is important to understand why the cloud is so vital to a blossoming IoT ecosystem. Historically, embedded engineers have had the luxury of designing products that are highly self-contained and leveraged a single programming language, with C being one of the most popular. The nature of IoT is forcing embedded system engineers into uncharted waters more often navigated by web and smartphone app developers. Thus, IoT will change how embedded engineers work.
Fully realizing 30 billion IoT devices by 20201 requires a backend support framework to automate large numbers of remotely-performed functions. The more common IoT backend services include the following features:
- Event Aggregation: To reframe an old financial adage for the Information Age, a gigabyte here and gigabyte there and soon you are talking real data. The IoT is going to flood the world's servers with time-stamped packets of data that will arrive asynchronously. Aggregating all these disparate blips of data in order to extract useful information is going to fall to the backend services.
- Data Storage and Search: Searching for trends means hosting a non-trivial amount of data for an extended period. The ability to store and quickly search through the heaps of data will require fast and robust search mechanisms that are only feasible with a cloud.
- Firmware Management: It is simply not scalable to have humans in the firmware update loop. The connection to the cloud will do the heavy lifting of keeping our IoT devices up to date.
- Device Management: Akin to firmware updates, device settings are often tweaked to meet the specific desires of the end user. People will not want to hookup a USB cable and reflash the firmware every time they wish to make a setting change. Users much prefer to fire up an app on their smartphone or tablet and remotely make changes. A secure backend will be necessary.
- User Account Setup and Identity Management Services: Just as with most web services, an account is required in to provide two functions: First, security to ensure only those with permission to access a device can do so. Second, to aggregate multiple individual devices so they can be controlled as one. As an example, if you have smart light bulbs throughout your home, you are going only to want your family to control them. Also, it is conceivable that you may want to turn on multiple lights at once when you get home late. This isn't limited to consumer IoT, as industrial settings have similar capabilities.
- Social Media Interface: While it may not be on everyone's list of desired features, some will find use cases to connect a smart device to social media outlets. We have seen fitness devices send updates to friends in hopes of encouraging exercise. As social media sites come and go, linking to them securely will fall more to the backend.
- Messaging/Notifications: If social media is not your thing, you still probably want to receive notifications of some support be it email or SMS message. For example, an email from your smart lock when the kids get home from school or a text message when the washer cycle in the apartment laundry room has ended.
- API for Third-Party App Support:It is hard to imagine that any one company could ever support every possible combination of interfaces an end user might desire. Thankfully with the advent of Application Program Interfaces (APIs), it's possible for a nearly infinite number of interactions without device developers having to do much additional work. Witness APIs' success in pure web-based services and APIs will no doubt play a significant role in helping to mainstream the IoT.
- Business Logic Interface: Companies have already invested millions of dollars in inventory control, industrial automation, and enterprise resource planning (ERP) software, so quickly importing IoT device data into business decision-making software will increase productivity, reduce cost, and nimble operations.
- Message Bus between Devices: Devices will be installed on assorted networks with varying security protocols. Ensuring that devices share the appropriate data in a timely fashion is going to require a smart backend. While mesh networking may be viable for devices that are co-located physically, a cloud-based model is best suited to coordinate geographically dispersed devices that comprise a larger interconnected system.
It's nearly impossible to do a strict apples-to-apples comparison of IoT cloud providers because the differences are both nuanced and significant even though the end goal is the same -- devices communicating with people and each other over the Internet. The below providers are grouped into four arbitrary and broad categories:
- General Cloud providers that provide IoT-focused features
- Dedicated IoT Cloud providers
- Embedded hardware manufacturers that provide a dedicated Cloud IoT backend
- Cloud providers that cater to the Do-It-Yourself (DIY) or pro-maker market
The point is to illustrate that there is a broad spectrum of cloud solutions available to IoT developers. All vary in cost, complexity, and feature sets. Marrying up requirements with available solutions is a critical part of the product development cycle. Choose incorrectly, and you could either be paying lots of money for features you never use or launch a product that fails under the weight of its success if you cannot keep up with demand. This illustration, in broad strokes, describes what the market offers and what to look for when making a choice for a cloud provider to support your IoT product.
General Cloud Providers that Offer IoT-focused Features
Figure 1: The Microsoft Azure IoT platform. (Source: Microsoft Azure platform screen capture)
The IoT will always remain a subset of the Internet. Traditional websites all benefit from cloud-based infrastructure, as well. The largest cloud providers dominate this market segment. They are: Google, Amazon, and Microsoft come to mind. The sheer volume of features these providers offer is mind boggling. These large platforms are trying to cater to the largest swath of customers whose needs are hugely varied (e.g. not just servicing an IoT application), which translates to a robust and sophisticated feature set.
Microsoft's Azure platform is one example of a product with both a broad and deep feature set. To an embedded designer, as an outsider looking at the web development community, Azure seems to offer everything you could need. Fortunately, they narrowed down the options for embedded developers and offered a suite of tools under the umbrella service called "IoT Hub." As of this writing, Azure's IoT hub pricing starts at free for up to 8,000 messages/day. Microsoft offers open-source device Software Development Kits (SDK) for multiple platforms, including Linux and Android in addition to Windows 10. Azure also uses some of the most widely-adopted standard protocols such as HTTP-based REST API, Advanced Message Queuing Protocol (AMQP), and MQ Telemetry Transport (MQTT). On the hardware side of the equation, Microsoft offers a search catalog on their website of the devices that are Azure-compatible. This extensive list runs the gamut from prototyping platforms such as the Texas Instruments' SimpleLink™ Wi-Fi® CC3200 and Arduino MKR1000, all the way to various thin client PCs, security systems, and point-of-sales systems. In other words, regardless of what embedded hardware you are using, there is a way to pipe data into Microsoft's Azure platform.
Dedicated IoT Cloud Providers
Figure 2: LogMeIn's Xively commercial cloud platform screen capture. (Source: LogMeIn)
LogMeIn's Xively commercial cloud platform began life in 2007 as Pachube (pronounced Patch Bay). Pachube gained international attention in 2011 following Japan's Fukushima nuclear disaster when it was used to patch together Geiger counters from around the country to monitor the radiation fallout. Eventually, Pachube became Cosm before being bought in 2011 by industry giant LogMein Inc. and subsequently rebranded as Xively.
Xively is dedicated to the Internet of Things concept and decidedly structured to support business customers versus the maker crowd. A 30-day free limited trial is available for those who want to test before they buy. Xively has a unique user experience called "Product Launcher" in that during the initial setup of an account it walks you through a step-by-step process of picking out the end product you are looking to build and then tailoring a default development environment based on the product selected. For example, if a garage door is selected as the product type, then the developer is presented with a template tailored for that class of product with pre-defined variables such as the open/close status of the door and garage interior temperature.
The overall experience and services provided by Xively are decidedly aimed towards hardware manufacturers who need a robust and efficient way to both launch and support huge numbers of consumer- and commercial-facing hardware. It is the most proprietary of the services discussed in this article, which understandably has appealed to companies looking for a serious IoT backend solution. The lack of readily available information on its inner workings may be a turnoff for those looking for a more open solution. That said, once registered for a developer account, one can access some documentation and tutorials that demonstrate a C-based library to use Xively's MQTT-based messaging protocol. Hardware platforms given a step-by-step tutorial include the TI CC3200, Raspberry Pi, and the Adafruit HUZZAH which is powered by an ESP8266.
Embedded Hardware Manufacturers that Provide a Dedicated Cloud IoT Backend
Figure 3: The Particle platform offers a dedicated cloud IoT backend.(Source: Particle.io)
Some companies that create hardware also offer a cloud backend. This "total ecosystem" approach has advantages. Namely, it makes the iterative development cycle occur much faster. Of course, the tradeoff for this convenience is that you become locked into a particular hardware solution. As long as the device meets your needs, this is not a problem. However, for some who want options for a wider variety of embedded platforms or maximum control, this may be too much to sacrifice.
An example of the above is Particle.io, who offers two embedded platforms: the Photon (a WiFi-based platform) and the Electron (a 2G/3G solution.) Both are ARM® Cortex™ M3-based microcontroller platforms for building out complete IoT solutions. However, Particle's work doesn't end at silicon and PCB; they offer the entire toolset to program their devices (tools on the web and a native IDE) as well as the "Particle Cloud," which is the glue between devices built with the Photon and Electron and your custom Internet-based applications.
To combat the perceived negative of platform lock-in, Particle's system firmware is based upon a Hardware Abstraction Layer (HAL); meaning other hardware manufacturers could produce their hardware while still leveraging the robust backend features that the Particle Cloud offers. Particle is also compatible with the Blynk app for Android and iOS. For those looking to create a mobile app to interface with their IoT hardware, then Blynk is a great solution in that it is pretty much a drag-and-drop development experience. For developers looking to prototype a complete end-to-end product rapidly, Particle hardware and backend is very appealing.
As of this writing, Particle offers a variety of pricing options that start at free for up to 25 devices and 250,000 messages per month. For organizations that need a more robust option, they offer a plan that supports up to 10,000 devices and 100,000,000 messages/month.
Figure 4: The Blynk app for Android and iOS can help you create a mobile app to interface with IoT hardware, offering a drag-and-drop development experience. (Source: Kickstarter.com)
Cloud Providers that Cater to DIY and Pro-Maker Markets
Figure 5: The IFTTT.com site has a simple interface that almost anyone can master. (Source: IFTTT.com)
For those who are interested in "home brewing" their own IoT device and yet eschew the complexity and cost of more robust options, then IFTTT.com and their Maker Channel might be a good place to start. IFTTT was built to make it as simple as possible for almost anyone to customize the interaction of various web services. IFTTT dispenses with technical jargon for simple-to-understand terminology to convey concepts to the user. Applets (formerly called "Recipes") represent a combination of a trigger and an action. Want to make a note in Evernote (action) every time someone mentions your Twitter handle (trigger)? IFTTT could make that happen. In 2015, they expanded beyond connecting only web services, to allowing hardware to either receive or make web requests via a REST API. Using simple HTTP methods like GET and POST, users could let their customer hardware creations interact easily with web services like Google Sheets. While IFTTT is free to use for the most part, if you are looking at creating and selling a product that relies on the IFTTT backend, then a few hundred dollars month are required for a dedicated channel for users to make their own applets using your hardware.

Figure 6: Ubidots is an IoT backend provider has direct support for many popular embedded platforms and takes the IFTTT concept one step further. (Source: Ubidots)
Ubidots is an IoT backend provider that might be of interest to the maker community, given its direct support for many popular embedded platforms. Taking the IFTTT concept one step further, Ubidots provides many open source libraries for more well-known platforms including Arduino, BeagleBone Green, Raspberry Pi, Electric Imp, ESP8266, Intel® Edison, chipKit32 Uno, Onion Omega, Particle.io, and the Texas Instruments' SimpleLink Wi-Fi CC3200. The libraries make interacting with Ubidots backend service very easy since you don't have to write all the necessary code from scratch. Simply include the appropriate library and use the pre-built functions to get the hardware talking to the Internet. Ubidots has a few pricing options that should appeal to everyone from a garage tinkerer to business grade customers.
Figure 7: ThingSpeak is more for the strictly DIY type of developer, with an open source solution to backend services. (Source:ThinkSpeak.)
For those who are looking to keep it strictly DIY and are looking for an open source solution to the backend services then ThingSpeak is worth a look. It is a product of MathWorks, the same company behind MATLAB. In addition to a free hosted version, ThingSpeak source is available to download from GitHub (written in Ruby) and installed on your own server. From the hardware perspective, ThingSpeak is supported on Arduino, Particle.io, Photon, Raspberry Pi, and the Electric Imp. A unique feature of ThingSpeak is a tight integration with MATLAB that allows for complex analytics and data visualization without adding additional overhead.
The Bottom Line of the IoT Backend
In a telling sign that this is still the wild west of technology, IoT pricing and feature sets are constantly evolving. Providers are changing their pricing structures often in these early days. Pricing structures vary widely, and a combination of the following factors seems to influence pricing across IoT backend providers:
- Number of devices
- Number of messages over time (per day or month)
- Size of payload/message (e.g. kilobytes or megabytes)
| Cloud Provider |
Category |
Trial Period (Subject to Change) |
Noteworthy Features |
Protocol / Platforms Supported |
| Microsoft Azure (IoT Hub) |
General Cloud |
Free up to 8,000 messages per day. 0.5KB message size. |
Extensive support for many platforms and protocols, not just Microsoft Windows. Industrial strength IoT features but still offers a limited free tier for the budding startup or maker crowd. |
AMQPS, HTTPS, MQTT |
| Xively |
IoT Specific Cloud |
Free 30-day limited trial. |
"Product Launcher" is a tool provided in the browser to help rapidly prototype an IoT device backend and user facing smartphone app. |
MQTT. Offers a C-based library and specific example on how to use it geared toward the TI CC3200, Raspberry Pi, and ESP8266-based development boards. |
| Particle.io |
Embedded Platform Specific |
Free for up to 25 devices and 250,000 messages/mo. |
The complete stack from hardware to cloud service which means a level of reliability and simplicity that is hard to match. Fear of "lock-in" is reduced by the fact that they provide a mechanism for other hardware vendors to use the Particle Cloud backend. |
Particle REST API with SDKs for iOS, Android, Windows, and JavaScript |
| IFTTT |
DIY / Pro-Maker |
Simple applets are free. |
A Huge community that is very engaged means lots or pre-built applets you can use to get started fast. Very simple to use, but may be too simple for power users itching to get their hands dirty under the hood. |
IFTTT REST API |
| Ubidots |
DIY / Pro-Maker |
The free account offers support up to 5 devices and 500,000 messages per month across all devices. |
Commercial product that has a large maker following as well thanks to its prebuilt libraries for some platforms that makes interacting with Ubidots very straightforward. |
REST API with pre-built client libraries for popular programming languages including Python, Ruby, Node.js, Java, Android, C, C#, PHP |
| ThinkSpeak |
DIY |
Free If self-hosted, do consider the costs associated with web hosting or running your own server. |
If you don't feel safe with the Cloud just yet, ThinkSpeak will let you roll your own backend. Just grab the code from their GitHub repository. MATLAB functionality is huge for data scientists who love the analytical capability they can apply to the raw data collected by their IoT devices. |
ThinkSpeak REST API |
Reference
- Harald Bauer, Mark Patel, and Jan Veira. "The Internet of Things: Sizing up the Opportunity." High Tech. McKinsey " Company, n.d. Web. 05 Dec. 2016.
Michael Parks, P.E. is a contributing writer for Mouser Electronics and the owner of Green Shoe Garage, a custom electronics design studio and technology consultancy located in Southern Maryland. He produces the S.T.E.A.M. Power Podcast to help raise public awareness of technical and scientific matters. Michael is also a licensed Professional Engineer in the state of Maryland and holds a Master’s degree in systems engineering from Johns Hopkins University.