Opportunities Abound Around the Internet of Things
Posted on January 17, 2017
Becoming recently engrossed in the “Internet of Things”, I’ve been surprised by the challenges associated with building solutions. A common flow can be seen in my work by evaluating a series of questions:
- What platform will I use?: This consists of a variety of sub-questions:
- Microcontroller (MCU) or System on a Chip (SOC)?: More specifically, this is a question of whether I need a microprocessor and operating system, namely Linux
- Software Development Platform: Can I use the Arduino development platform or do I use something else?
- How much GPIO and peripheral interconnect is required?: I2C, SPI, USB, Analog and Digial, multiple PWM, etc… all considerations.
- External/Network communications?: Do I need BlueTooth or BLE? Will XBee/ZigBee work? Maybe LoRa? WIFI or Ethernet?
- What are the power constraints?: Is AC power available nearby or is this battery powered?
- How will I collect and store data?: MQTT is the most popular method today, followed by HTTP REST, but other problems arise like SSL/TLS capabilities in the device as well as consequences of data storage on future processing
- How will I process the data?: Lambda? Custom processor? Big Data system?
- Am I just producing reports? For example, sending data to a traditional monitoring system or emailing someone without returning data to the device
- Am I taking action “real time”? For example, based on sensor flipping a relay
- Does the processing involve a single device or aggregate multiple devices?
- How will I visualize the data?
- Will the user utilize a Mobile app? This will require a complimentary app, either HTML based or a Native App (Andriod or iOS)
- Will the user utilize a cloud portal? This requires a web portal that can be logged into to view data, fairly traditional and well understood
- How will I communicate back to the device?
- Can I communicate locally with the device via BLE from a mobile device?
- Must I communicate to the cloud as a proxy to the device, even if I’m standing near the device?
- How do I update code on the device? Must I re-flash the device or can it be updated in place? How do you validate successful update and back-out if the update fails?
- How do I manage all my devices and manage a fleet?
There are a lot of questions and fewer answers than you’d expected.
While there is an explosion of devices out there fore makers, they continue to evolve quickly. ESP8266‘s are cheap but quality varies a lot and capabilities are limited. Arduino and friends are bullet proof but expensive. Raspberry Pi‘s are also expensive and have a variety of limitations but do offer excellent video capabilities like HDMI and Audio but have limited GPIO and may not include built-in BlueTooth and/or WIFI. BeagleBone Black has everything plus the kitchen sink, but the pricepoint is high. Intel Edison and Onion Omega2 are excellent fits for running Linux, while packing in WIFI and plenty of GPIO. Lots of options!
When it comes to sending and processing data, there are also a variety of options. Sparkfun & Adafruit both have their own in-house solutions, ARTIK Cloud and AWS IoT are great.
Where things fall down right now is in the area of creating mobile interfaces for your projects. You have solutions like Blynk and Cayenne, but both involve “slaving” your device to the cloud service to some degree. An alternative is to build your own native mobile app, but thats a big learning curve. Apple Homekit provides interesting opportunities, but that’s even more complicated and causes you to drift far away from your initial device development mindset. Intel provides an HTML5 app creator as part of Intel XDK, which is something of a happy middle ground.
In the device management space, most solutions are aimed at the industrial market, but Resin.io provides a modern developer friendly solution for IoT app deployment, even if it is a bit heavy it is incredibly novel and extremely exciting.
The best “out of box experience” belongs to Particle.io‘s solutions for both WIFI and Cellular boards. They handle a lot of the problems noted above for you and integrate everything beautifully. If you pair Particle up with AWS IoT then your only problem is the native Mobile app, which can be prototyped using Porter. When you do write your native app, Particle has native SDK’s to help speed things up.
I’m wandering around a bit here… but I really only wish to make one point. The IoT space is currently struggling to come together to provide truly integrated solutions. Particle has got the lead today but still has a lot of holes. This is a golden opportunity for a large number of new companies to come in and unify the problem space and provide really innovated solutions.