IoT devices continue to capture the imagination and dollars of consumers, and inventors are increasingly adding connected technology to their innovations.
However, adding connectivity can be intimidating. There are many different wireless protocols and microchips involved, not to mention the need for apps to show data or interact with the device.
Thinking about IoT products as a sandwich made of three layers can help simplify the main components of a connected device. The top layer is the application layer, which is the deployed device and associated hardware. The bottom layer is the perception layer which is how the data or controls are viewed, typically in the form of an app. The middle layer that connects the two, is the network layer, and this is how data is transferred between them. In order for an IoT device to function it needs to have all three layers working together. Fortunately, the technology has now matured and it can be easy to add a device to the Internet of Things and control it with an app. Here are 5 ways to add IoT technology to your prototypes.
One of the easiest way to add connectivity to a prototype is via the Nordic Thingy. Nordic is one of the world’s leading manufacturers of Bluetooth chips and they created the “Thingy” as a showcase of their technology. The Thingy is 60mm square and includes a number of sensors such as temperature, humidity, pressure, air quality color and light, a 9-axis motion sensor. It also has a microphone, speaker, and an RGB LED. The free app allows visualization and control of the device without writing a line of code. While the board may be slightly too big to fit into small consumer goods, the technology is awesome for use in proof of concept prototypes.
For those that are more tech savvy, the source code and circuit files are open and free to download for customization, and there is an SDK (software development kit) to create custom programs. The Thingy is available for about $40 from electronics warehouses like Digikey, Mouser and Arrow.
Hardware Development Boards
There are a number of hardware development boards that are easy to deploy with just a little bit of coding. My favorite is the ESP8266 which is a WiFi enabled board that is inexpensive and easy to set up. They can be programmed with the Arduino IDE (Integrated Development Environment) and most of the Arduino libraries are compatible with it. Electronics supplier Adafruit has a breakout board for the 8266 available for under $10 and a version called the Huzzah which is designed to the fit the Feather pinout system for easy integration of displays, relays, and other peripherals for less than $20. Adafruit also has a number of great tutorials and sample code to help get your device connected to the cloud.
My other favorite development board is the Particle Photon. It is also a WiFi enabled board, but has some slight differences. The Photons can be flashed wirelessly through Particle’s web based IDE, so there is no need for a USB cord and they can be programmed remotely. Particle also has a pre-built console where events and data can be written to the web without setting up any back end services. The programming is C++ based and is easy to navigate for anyone that has experience with Arduino.
Backends and Dashboards
Storing and visualizing data is what makes IoT technology so powerful, and there are many back-end and dashboard services to help. Adafruit.io is one of the fastest to get setup and use and is great for prototypes. Data feeds and dashboards to display them are easy to setup, and looks good on mobile devices. There is tons of sample code, and the free version gives you 10 data feeds, 5 dashboards, 30 data points per minute and 30 days of data storage, which is plenty for most prototypers.
If you need some more control over your dashboard or advanced features, you may want to consider a more sophisticated back-end like Losant. Losant has a free account that allows you to setup multiple feeds just like Adafruit.io, however it gives you much more control. My favorite features inside of Losant are the workflows which allow you to write your own commands based on incoming data. This lets you easily create SMS and other notifications, or do more advanced data analysis.
Blynk is an app that allows you to build your own app to control most popular development boards. Simply flash the dev board with the Blynk library, your app tokens, network credentials, and the very simple code, and you are ready to create. Blynk has a number of widgets that can be dragged into the app like buttons, sliders, LEDs, maps, RGB picker and many more to create a customized control for your board. Pins on the development board can be configured and controlled inside the app, which eliminates the need to develop custom code for the development board for many projects.
The app is free to download and you get 2,000 energy points that you can use add widgets, and additional energy can be purchased based on your needs. The app supports 70 different development boards with more forthcoming and it supports data transport via ethernet, WiFi, USB, GSM, Bluetooth and BLE. Blynk can also scale with your product. The free app supports up to 20 devices, with paid plans available that support unlimited devices, customization of the look of the app, and publishing on app stores.
App Design Software
Designing an app can be a daunting exercise, but there are tools that will help you layout the vision for the features of your app and what it will look like. An easy way to mock up an app and create a flow diagram (called wireframes) is to use the website draw.io. It is a drawing program similar to PowerPoint or other slide presentation software. The site offers templates for the shape of different brands of smartphones as well as a libraries of stylized icons. Files can be downloaded to save them and can be dragged back into the environment when you want to continue work on them later.
Another option is the recently released Adobe XD which helps to quickly and beautifully design app and web interfaces. The platform has the feel and some of the tools of Adobe Photoshop, but with the added functionality needed to develop UX/UI interfaces. You can create app and web pages quickly and design how the click through functionality will work. Then when you are ready to prototype, you can upload the design to the cloud and allow users to experience it via the Adobe XD app.