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.
Right now one of the main problems facing developers when building an Internet of Things device is platform proliferation. This problem is particularly evident in the proliferation of new development boards, but can also be seen in the cloud, and amongst development environments. As a result, it’s becoming more than a little difficult to choose between the competing offerings.
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 evolution of micro-controller boards aimed at the individual developer — rather than large enterprise development teams — has been interesting to watch. They’ve become progressively easier to use, more accessible, and a lot of that can be directly attributed to the arrival of the Arduino. As a result, the Arduino has many imitators, its model for software development has been copied many times, and it fundamentally disrupted the market for boards aimed at enterprise companies. Large companies, like Texas Instruments with its LaunchPad boards based around their MSP430 processor, have gone out of their way to provide Arduino-compatible development environments in an attempt to capture the developer community.
Conversely, and unlike the Arduino, the Raspberry Pi was never really designed as a platform to be used by developers. However at $35 it almost overnight created a market for single-board computing, and it was months after its release before supply caught up with demand. The release of the Raspberry Pi Zero, at $5, was met with a similar rush. Supply still hasn’t caught up with demand. While not optimised for development, the board was good enough and cheap enough to build a community around it.
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.
On one hand platforms are becoming more expansive. It’s cheap to add radios to boards and the still uncertain landscape of the Internet of Things has cause the a great deal of uncertainty, which some platform builders have addressed by a tendency to produce “kitchen sink” boards. These platforms take the attitude that if one radio is good, another is better. If you can cram another sensor onto the board with only a minor increase in the Bill of Materials, then another one again seems like a good idea.
On the other hand we’re seeing the emergence of new “use everywhere” boards, these boards have minimal features but are cheap, have onboard networking of some sort or another — usually Bluetooth LE or WiFi — and are usually optimised for low power environments. Typically they also come in small form factors.
If anything, we should expect to see more new boards, not less — although most of these new boards will disappear just as rapidly as they arrived — and all of these will advertise themselves as “designed for the Internet of Things.”
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.
Boards like these are designed to be a platform for prototyping Internet of Things, however they’re not designed to work as an Internet of Things device itself. Right now a lot of the work being done inside the Internet of Things community is exactly this, to build platforms, developing something that other developers will build on.
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.
But it cost less than $2, and as a result a somewhat bewildering selection of module and breakout boards have been produced. It was so cheap people started looking at it really rather closely, the until then Chinese-only datasheet and documentation were translated by a community that was quickly building up around the board and it was discovered that it is a full micro-controller in its own right
In fact it’s a very capable 80 MHz micro-controller based around a Tensilica Xtensa LX3 core with WiFi support, both as client and as an access point, supporting 802.11 b/g/n protocols at 2.4 GHz and WPA/WPA2 with a full onboard TCP/IP stack with DNS support. It has GPIO, I2C, I2S, SPI, and PWM support. It also has a 10-bit ADC.
Most of these “Use Everywhere” boards are designed with small form factors and low power requirements. Many rely on Bluetooth LE for networking which is — by design — an inherently low power. However other boards, like the ESP8266 make use of WiFi. In almost all cases they also come with advanced power management capabilities, and the ability of sleep (and wake) based on external interrupts.
These boards exist in a very different niche to the “Kitchen Sink” boards being developed as platforms for experimentation, instead these boards serve a need. They provide infrastructure for already identified Internet of Things niches, remote distributed sensor networks — it’s notable that the ESP8266 is capable of participating in a WiFi mesh network to extend the range of the network — and wearable technology.
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.”
This technology dividend is very evident when you start to look around. Sensors such as accelerometers, gyroscopes, magnetometers, and even cameras, are now trivially cheap and readily available.
Capable computing, that is to say computing that is “good enough,” is now available for just a few dollars something that seems almost inconceivable even to those of us that have grown up with Moore’s Law. Because after fifty years of Moore’s Law we’re getting to a place where computing is not just cheap, it’s essentially free.
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. These sorts of boards give the illusion of progress in the Internet of Things space, but they are essentially tools for thinking. They’re relatively expensive, often have large form factors, and can’t be integrated into products. They’re intended to aid development, not for the core of your product, no matter what some manufacturers claim.
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.
Right now it’s easy to add networking to anything where there is already a power supply, and the marginal cost will not be noticed except in areas where products compete on the slimmest margins. However the real trick here is to decide what the networking is for, and build a product, rather than adding it for its own sake, building a prototype.
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.
Not withstanding our discussion in the architecture of most connected devices being sold directly to consumers for use in the home is similar, there is the thing itself, an application running on a smart phone that controls the thing, and a cloud service that backs both the device and the app on the smart phone. In some cases the smart phone app can talk directly to the smart device if they are both on the same local network, in others the device is only controllable via the remote cloud service and the smart phone app will talk to the cloud service instead.
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.
Right now most connected devices sold to the home users are backed by applications running on a public cloud, while conversely enterprise cloud devices are often backed by private or hybrid clouds, unless the data from the enterprise devices flows through a Software-as-a-Service (SaaS) provider who may host their services in the public cloud.
Some platform vendors, such as Particle, provide both hardware development kits and a cloud backend. These sorts of development kits make building cloud connected devices much easier since, with an integrated cloud backend all the connectivity problems can be buried inside a convenient vendor SDK.
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.