Your Developers’ User Experience

Designing for the Internet of Things

This is the third article in a series of six on designing connected devices, the previous article in the series is “Starting With One” and covered prototyping. The next is “Remember the Physical Environment,” and discusses deployment issues. Links to all six articles can be found in the series overview.

The Two Platforms

Until as little as five years ago for developers prototyping an Internet of Things device the choice of platform was actually fairly simple. If you wanted to talk to arbitrary bits of electronics your best bet was to buy an Arduino micro-controller board, if you needed the power of an Arm-based board and wanted to run Linux you should use a Raspberry Pi. Despite the drivers behind the adoption of both of these platforms being very different.

The “two platforms,” with a Raspberry Pi 3, Model B (top), and an “classic” Arduino Uno (bottom, right) along with a more modern Arduino MKR WiFi 1010 board (bottom, left). (📷: Alasdair Allan)

The New Platforms

However more recently, we’re seeing an explosion in new boards coming to the market, and there doesn’t seem to be any reason to expect that — at least over the next year or two — we’ll see any slow down in that trend. However looking at the new boards arriving onto the market to support the emergence of the Internet of Things there are two trends.

The Kitchen Sink Board

The great thing about using Raspberry Pi or Arduino is that lots of developers have them, and there is a great deal of community support around them. But newer boards have so many features, they can be hard to resist. There are now boards for instance supports GSM/GPRS, WiFi, Bluetooth BR/EDR and LE, LoRaWAN, SigFox, and have an onboard GPS, as well as GPIO, I2C, SPI, UART and Grove connector support. The designers have almost literally thrown the kitchen sink at them.

A proliferation of platforms often happens when people aren’t sure what to build, what the technology should be used for, so they go out and build platforms that are capable of many things.

This trend may be showing the immaturity of the Internet of Things. A proliferation of platforms often happens when people aren’t sure what to build, what the technology should be used for, so they go out and build platforms that are capable of many things. Conversely this proliferation, the sudden emergence of a new generation of platforms, could indicate that people went out to build specific ideas and found a lack of tools impossible. Certainly software tools companies like Balena, an Industrial Internet deployment solution for managing firmware updates across large scale clouds of connected devices, got started for precisely this sort of reason.

The “Use Everywhere” Board

The poster child of the cheap board movement is the ESP8266. The Espressif ESP8266 SoC was originally it released as a serial-to-WiFi bridge, the default firmware uses at AT command set to allow you to configure and use it. In other words it could provide WiFi access to another micro-controller, like an Arduino.

Capable Computing

Like many of the technological advances in the last hundred years the computer industry was born, and grew up, in the shadow of the first and second World Wars. Like the baby boomers, the smartphone is a child of the post-war years now grown to adulthood. However Chris Anderson, co-founder and CEO of 3DR, recently argued that a lot of the tools and technologies we use today are the peace dividend of another war, the smart phone war, arguing that, “when giants battle we all win.”

Prototypes Are Not Products

As technology matures, it becomes cheaper. The ubiquity of the Arm processor, used in pretty much every smart phone, has dramatically dropped the price of computing. This rapid drop in the price of computing platforms at the low end has made prototyping much easier, and has enabled a generation of new prototypes to be built and beyond. It has enabled startups to build a business selling things rather than software, something that hasn’t really been possible since the early years of the personal computer.

Right now the proliferation of the “kitchen sink” developer boards means it is easier than ever to prototype a product, however prototypes are not products.

The “use everywhere” boards are cheap, low powered, and can indeed be used, if not everywhere, then most places. Generally however development using these platforms is harder — there is more limited computing resources available, and the development environments are sometimes cruder — once you have thought about your problem, and prototyped it using a more heavy weight platform (essentially built a “throw away” prototype) its time to retreat to a cheaper, but slightly less capable platform to build your product. This is especially true if you’re adding networking, and smart features, to an existing product. Either in the home or in industry.

Transitioning From Prototype to Product

There are some companies offering integratable wireless modules, such as the Particle Wi-Fi modules, that provide the core functionality that drives their larger development boards. These modules offer a way to take your prototype and create a custom PCB and reuse the code from your prototype without changes. For instance Particle offer a series of purchase options depending on the scale you intend to use their product.

Talking to the Cloud

Oddly an Internet of Things device does not necessarily need to connect to the Internet. However while a connected “smart” device can operate in a stand alone fashion, or form part of a local (possibly mesh) network, most connect outwards to the cloud in some fashion. Although that might not make as much business sense as a lot of people seem to think.

Public, Private or Hybrid Cloud?

There are three main models of cloud computing, public, private and hybrid. A public cloud is one in which services and infrastructure is provided by a specialist cloud company — the largest of which is of course the Amazon Web Services (AWS) Cloud Computing Service, although there are others. A private cloud is one where services and infrastructure, the machines the services are running on, are owned and maintained by your own company. While finally a hybrid cloud is, perhaps predictably, a mix of public and private cloud infrastructure.

Self Deploying

However there’s no reason the cloud components of a smart thing need to be tied to the company that built it. There’s nothing to stop companies creating smart things that will self-deploy the cloud capability the device needs directly to the customer’s cloud provider of choice. This way, the customer both pays for their own cloud usage, which most people will find more palatable than a subscription service, and can migrate the device’s cloud components between different providers as needed. The has the additional benefit for the consumer that, when the device’s creator stops supporting it, it would still continue to operate. This sort of solution might help avoid the growing problem with Internet of Things abandonware, which has started to become a problem due to the unsustainability of the common business models used for consumer facing Internet of Things.

Scientist, Author, Hacker, Maker, and Journalist.