Hi, in this post I would like to cover something that is interesting to me about IoT (Internet of things), and that is the progress in just a couple of years. In my previous job, we developed and maintained a small IoT device that was responsible for controlling the pellet stove. Also, we needed to develop and maintained a server-side application and also something to control the device with, and in our case, that was a mobile app. So, very cool stuff. Now, after some 2,3 years I want to play around with IoT and I noticed that life is much easier. We have a couple already a good solutions out of the box that could and now can increase development speed of IoT devices multiple times. In this post, I would like to cover two of major improvements in internet of things in 2022 and those are:
Actually, what is IoT (Internet of Things)? There are a lot of definitions and if we just check google we have
The Internet of things (IoT) describes physical objects (or groups of such objects) with sensors, processing ability, software, and other technologies that connect and exchange data with other devices and systems over the Internet or other communications networks. Internet of things has been considered a misnomer because devices do not need to be connected to the public internet, they only need to be connected to a network and be individually addressable.Wikipedia
The Internet of Things (IoT) describes the network of physical objects—“things”—that are embedded with sensors, software, and other technologies for the purpose of connecting and exchanging data with other devices and systems over the internet.Oracle site
But if I can add mine it would be something like
IoT is a system or network whose purpose is to transfer information or control signals over the internet between group of devices. There are three types of devices in IoT:
- Devices that control and/or get information
- Devices that give users the option to select the desired action and/or display information
- Server or Cloud to route information between first to the type of devices.
So, for example.
We want to create an IoT device that can detect floods for washing machines when you are not at home. In order to have that we humidity sensor and some device that can read the data from the sensor and upload that data to the internet. A good example of a good device is ESP32. Next, the best device to update you with bad info that you’re washing machine isn’t working correctly is actually your mobile phone. Here we need only to implement the Android or iOS app that will receive information from the server and inform you. Last, we need a server that will route everything. This can be an old PC in the corner of the room or it can be in the cloud. So, let’s cover the Server side in more detail and see how this progressed in the last couple of years,
In order to have a working server and server application, first, we need to select the protocol for communication. In our case that perfect protocol is MQTT. Also, we need to decide on which platform, and operating system we want to install the MQTT protocol on. Will it be Linux or Windows? For me, it seems easier to build on Linux or more specifically Ubuntu Server. If we decide to create a server in the cloud we can use Amazon AWS (Amazon Web Services).
So, before 3,4 years we need to create an AWS EC2 instance of the server. Amazon EC2 stands for Amazon Elastic Compute Cloud and selects the resources that we need for our application. We needed to select the amount of CPU power and RAM size. Next, we needed select Ubuntu Server as desired OS. Then, in order for our Amazon EC2 instance to be visible all over the internet, we need to allocate a static public IP address for our instance, and that was all needed before we even started implementing the server-side MQTT server application.
Nowadays we simply have AWS IoT Core. This is basically a bundle of everything that we needed 4 years ago and more. We have built-in security. SECURITY. I need to highlight this part. It is using Message broker in order to have MQTT protocol
We can easily monitor device health and connection status.
Also, there is a lot of information on this topic online and furthermore, there is an official YouTube channel and playlist from Amazon dedicated to this topic
In the next YouTube videos and posts about internet of Things in 2022, I will try to connect and document the process of starting the AWS IoT core with my custom ESP32 development board, which was developed from scratch and fabricated by jlcpcb. Check out my other post on this topic:
But what if you don’t want to develop your own ESP32 board, and maybe you don’t want to spend time on hardware development, that can take a lot of time and money. I came across something very interesting. M5stack is creating modular hardware systems based on ESP32 but was a lot more. If we check the specific product M5Stack Core2 ESP32 IoT, we have everything that we can and will need. As it’s stated on the product page this is the perfect Development Kit for AWS IoT EduKit.
With this we have already built, a modular and fully configured Thing (as the Device is called in AWS IoT), even we can add battery power to make our device more mobile.
That is a large improvement in a couple of years because from my understanding this level of modularity and finished product out of the box wasn’t available. So, if you wanted to have some function-specific device, there were two options. Either, start from scratch and create an optimal system based on ESP32 and custom PCB, or start with some development board and add additional peripherals that you need. In this way, the development time and cost were increased multiple times, because you are not working only on needed specific functionality but you need to take care of things like is my device power enough, is my device connecting correctly, did we put some led diode on boot pin of ESP32 in development on PCB and now we have reset loops…
I was out of the IoT world for some time and didn’t follow trends, but this seems that should be the golden age of IoT. With solutions from AWS and M5stack, I think we can slash the development time multiple times, maybe even you don’t need multiple people to design and develop full IoT systems. Maybe with this help, you can focus on important specific functionality that is the purpose of your IoT system and don’t worry about the rest. leave the rest to the pros.