Over the videos, we have built up our knowledge, starting from the very lowest levels.
We started out with Transports where we analyzed the different ways to move bits of data around.
We talked about small-hop transports like Bluetooth Classic and Low Energy, ZigBee and Z-Wave, and their use in small scale area networks, such as within a home.
We also covered longer range transports like WiFi, SigFox and LoRa that can cover a building.
Finally, long-distance protocols like Cellular or satellite can connect you anywhere in the world.
Each transport has different power needs, and bandwidth capabilities. Some are handy in that they connect directly to the Internet. Some need gateways to access the Internet, which can add cost and complexity. Transports directly affect your bill of materials and chipset selections, and it's very hard to adapt a product to use a new or different transport, and transports don’t have a ton of overlap in their capabilities, so that’s why it’s the first thing to pick.
Next, we dove into Protocols, which is how we program the Transport we’ve already decided on. This episode was a super-deep exploration of different transport protocols like HTTP, MQTT, CoAP as well as encoding methods such as XML, JSON and base64 raw data.
Which one you use depends on your transport speed, bandwidth capabilities, and data responsiveness needs - HTTP gives you a direct connection to Internet services, but with a heavy price in data usage. MQTT is light and nimble, with little overhead data-wise, but requires a gateway to get you the data you want to the greater internet. Usually there’s a little more flexibility in what Protocols and encoding methods you get to use, and a good decision here can save you money and support pain later.
Once we sorted out our hardware transport and our firmware protocol, we moved up the stack to the software Services. Just like protocols encode the data that moves over the lowest-level protocols, services package up and direct that encoded data. Services can also store data for later analysis, or provide meta-services like notifying you by text-message when no data has been reported for 24 hours. You could roll your own, but it’s a huge effort and there’s easily a hundred services available for any sort of IoT usage.
We covered some of the most popular ones, from Plotly to Carriots, Particle to AWS. Some services are prototyper-friendly, or are designed with scientists in mind, others are designed for enterprise-level deployments. We went through examples of using each service so you can find the right match for the complexity of your product.
After touring all the different services available, we took a deep dive into our own IoT service, Adafruit IO. While we focused on just one service, there’s a lot of similarities between Adafruit IO and other services, so even if you end up with a different IoT provider, it's beneficial to see how the pieces fit together.
This was also the first video where we provided code and schematics to build a complete project for temperature logging. We used WiFi as our transport, since its the most popular transport for Internet connectivity. The projects were shown with both Arduino/C microcontroller programming on a Feather ESP8266 and in Python on a Raspberry Pi single board computer. The Arduino code utilized MQTT as a protocol, and the Raspberry Pi used REST, showing you can get similar results with both low-power/low-level microcontrollers and higher-power/high-level microcomputers.
Together, we went through each step of signing up for an account, making a new feed, creating a dashboard, and plotting output data. Then, we explored extensions like webhooks, triggers, and integrations.
After building our first project and connecting it to Adafruit IO, it was time to cover Security, a wide-ranging but important topic that has thankfully gotten more attention in recent years. Security practices are never-ending in complexity, and even as we write, new IoT security alerts and warnings are being published. Instead of looking at specific exploits or attacks, we categorized different ways that you can protect and harden your attack surface. Some of these techniques are super simple, like having unique, un-guessable passwords. Some are more advanced, like requiring bi-directional TLS certificate checks and hardened crypto-storage.
Either way, following the checklist we provided in the video will do a lot to protect your product, data and customers from prying eyes.
Finally, we’ve reached this final video - where we will explore using Digi-Key IoT Studio, an all-in-one solution for creating a complete IoT prototype or project.