The Internet of Things (IoT) is an increasingly important sector of engineering with over 20 billion devices deployed globally. But IoT technologies are not just for commercial or industrial applications. Instead, they can also be applied to any maker project and it can be highly beneficial to do so! In this article, we will be introduced to what IoT is, how it can be useful to integrate, commercial Internet of Things solutions, and why a custom IoT solution may be better for you!
What is IoT?
The term “IoT” brings us visions of a future of devices all around interacting in unimaginable ways to create a society that is improved in all aspects of life. In reality, IoT is a buzzword for “simple devices connected to the Internet,” whereby the word simple is in itself very subjective. In the past, only PCs and large systems had Internet capabilities since connecting to the Internet required some beefy resources which were unavailable on microcontroller units (MCUs) such as 8-bit PIC12 and PIC16 MCUs. As time progressed, semiconductor technologies improved enough to allow microcontrollers access to the Internet either via a module that handled the Internet Protocol (IP) stack and communication or entirely integrated into a single-chip solution. When this happened, there was an upsurge of simple devices connecting to the Internet, and it was the clear differentiation between a tower PC and a microcontroller connecting to the Internet that gave rise to the term IoT. Hence, when engineers talk about IoT they often refer to basic devices such as microcontrollers and systems on a chip (SoCs) having internet capabilities. Simply put, a custom IoT solution is a do-it-yourself (DIY) Internet of Things application as opposed to an off-the-shelf option. Rather than using a tool such as Adafruit IO, a simple platform for integrating IoT into your projects, you'll roll your own platform by building a customized app.
What is custom IoT: A DIY method of integrating internet connectivity with a project.
How can IoT Help Your Projects?
One of the biggest advantages of having Internet technologies integrated into a maker project is that it allows for remote operation. Any project that has an Internet connection may be remotely connected with by any Internet access point around the world and this leads to many exciting project possibilities. In many ways, an Internet connection can be thought of as a wireless remote but with an increased amount of latency and an infinitely large radio range. The benefits of IoT projects are only improved when Wi-Fi is used as this allows for projects to not only be remote but not require a wired local area network (LAN) connection and thus can be 100% battery-powered in the middle of nowhere (within reason, since they still need a Wi-Fi access point after all). Including Internet technologies in maker projects also gives rise to data aggregation which can be potentially useful in future projects such as those based on artificial intelligence (AI). Projects based on AI, often referred to as S.M.A.R.T. (Self-Monitoring Analysis And Reporting Technology), require data to learn from, so gathering your own data could provide future projects a head start.
Examples of how internet capabilities can help you include:
- Remote control of a device (e.g. remote window opener)
- Remote data gathering (e.g. weather station)
- AI SMART projects (e.g. facial recognition security systems)
- Wireless project interfaces (e.g. setup page for a project)
What IoT Solutions are Available?
When integrating Internet technologies into a project you will almost certainly need an IoT platform to work with. An IoT platform is essentially a service that devices connect to, such as a webpage, that has the ability to perform tasks such as submitting data, receiving data, and receiving commands. Many commercial platforms exist all with their own advantages and disadvantages including Adafruit IO, Amazon Web Services (AWS), and Microsoft Azure. Adafruit IO is the simplest and easiest to use, with many prebuilt libraries that work flawlessly with Arduino like systems such as the ESP32. On the other hand, AWS and Microsoft Azure provide powerful features and commercial capabilities. Although these services do offer free versions, they all have limitations on what you can do, how many devices can communicate, and how much data can be stored. Plus, services such as AWS and Microsoft Azure are incredibly complex to use with steep learning curves and thus inappropriate for maker projects. This is where a custom IoT platform becomes a viable solution!
Why Create Your Own IoT Solution?
Creating a custom IoT solution may sound like a massive undertaking, but when planned out properly it's not only a fantastic coding exercise but provides a maker with infinite possibilities. A custom IoT solution can be incredibly trivial, only requiring a single PHP page that accepts power-on self-test (POST) requests and stores them into a text file. Alternately, a custom Internet of Things application can be incredibly complex with a dedicated computing running a Python program that allows multiple devices to connect, save data, and cross communicate with other devices while a front-end HTTP server provides users with a dashboard to see data visualized in real-time. Any custom IoT solution that is created will be tailored to a project's needs and will not contain bloatware on functions that are unnecessary or overly complex. Custom solutions also keep gathered data locally to a user as opposed to being stored remotely on a data centre which can leave potentially sensitive information vulnerable to attackers. This gives custom IoT solutions a privacy bonus, but even then strong security practices should be followed if possible.
What Will This Series Cover?
This Internet of Things series will look at each stage in not only implementing IoT technologies in a project, as well as explore different messaging protocols, frameworks, and how to build your own custom IoT solution. Hardware will be the first topic to be covered with a comparison of the ESP32 and the ESP8266, two common maker IoT SoCs. This will then be followed with a series of articles covering messaging protocols such as HTTP and MQTT, with a focus on which one to use and how to build a simple server using each method. From here, a series of articles will guide you through creating a totally custom MQTT-style server in Python including data management, dashboards, and interfaces. The last entry of the series will touch on security and the importance of implementing strong security practices in IoT projects.
Intro to the Internet of Things - Custom IoT Final Thoughts
IoT is an exciting topic and can transform any project that it touches. It can seem daunting when trying to implement Internet connectivity in a project which is something that I experienced strongly when first introduced to IoT. This is what drove the development of a custom IoT solution in the first place as the documentation and examples provided by other platforms were not only lacking but completely alien to anyone starting out. Hence, this series will not only guide you carefully but also make all aspects easily understood and explained in-depth to leave no stone unturned.