Getting Started With IoT Hobbyist Projects
Thanks to low-cost project components, anyone can tinker with IoT.
Join the DZone community and get the full member experience.Join For Free
The Internet of Things is revolutionizing not only several aspects of our lives, but it is also having a big impact on several areas, for example:
- Smart cities
- Smart homes
An interesting aspect of IoT is that we can use it to build hobbyist projects and we can experiment with them by ourselves, thanks to the availability of low-cost components.
When we approach the IoT for the first time, we may feel confused and disoriented, because it involves several disparate technologies, some of which are widely used, such as HTTP, and others which are specific to IoT development.
Moreover, an important role is played by hardware components such as sensors and microcontrollers. This article aims to be a practical guide to help you approach the development of an IoT project from a hobbyist's point of view.
When you start building your first IoT project, there are several pieces you need to consider. Generally speaking, an IoT project is built on several small bricks, including:
- Prototyping boards
- IoT cloud platforms
- External peripherals
- Applications developed using different programming languages
Before analyzing the roles these bricks play, it is important to briefly describe what kind of IoT projects you can build by yourself.
There are countless projects we can build to experiment with IoT tech. From the hobbyist's point of view, we can group these projects into these categories:
- Sensor-based projects
- Cloud-based projects
- Projects with external peripherals (such as LEDs, displays, servos, motors, etc.)
This is the easiest IoT project you can build. These kinds of projects use sensors, such as:
- Temperature sensors
- Pressure sensors
- Humidity sensors
- Light sensors
- Gas sensors
For these projects, we want to read the sensor data values and use them locally without the need for an internet connection. A typical example could be a weather station or a system that monitors gas leakages.
This is a more complex project in which we use an IoT cloud platform to store and analyze data. An IoT cloud platform is a cloud platform that provides several services to simplify IoT project development. These services can include:
- Data ingestion
- Data analysis
- Data visualization
- Connection and device management
- Provide security and authentication
This type of project is an extension of the sensor-based project, except the data that is acquired are sent to the IoT cloud platform through the Internet. It is also possible to use IoT cloud platforms to remotely control these devices.
Projects With External Peripherals
These IoT projects use external peripherals connected to prototyping boards. For example, a simple IoT project might use an LED strip connected to a prototyping board (such as Arduino or ESP8266). We can also connect DC motors or servos to build a simple robot. Another interesting use case is based on a relay that we can use to turn an appliance on or off.
Another interesting use case is based on the integration between smartphones and an IoT ecosystem. Almost all of the categories described above can be integrated with a smartphone so that we can control a prototyping board remotely or visualize information gathered by sensors.
IoT Project Architecture Overview
Before starting an IoT project, it is useful to have an overview of the architecture of an IoT project so that you can understand the role played by individual components.
This simplified IoT project overview is based on using prototyping boards.
Generally speaking, at the edge of an IoT system, there are sensors connected to some prototyping boards. In this context, the prototyping board controls the sensors and acquires data from them. At this level, there are also actuators, which are devices that we can use to intervene in the physical world. For example, they can switch lights on or off, open or close a door, and so on.
These prototyping boards do not do heavy work. Usually, these kinds of prototyping boards exchange data with a gateway that collects all the information coming from several boards/sensors, applies some data transformation to it, and sends it to a cloud platform.
The simplest way to include an IoT cloud platform is by using data ingestion and data visualization. A common project is to visualize the data coming from sensors, which requires a cloud platform to both analyze the data and, consequently, to take some action to implement a specific business process. For example, using a specific algorithm and the data gathered from soil sensors, an IoT cloud platform could send a command to an actuator to turn on the watering system in a garden. The rise of machine learning algorithms integrated with IoT are creating new scenarios where machine learning can be used to control devices and appliances.
Another typical use case of an IoT platform is to integrate cloud services so that when an event occurs, it will trigger a chain of events that involves those services. For example, it is possible to send a notification to our smartphone when a value measured by a sensor is over a threshold.
There are several IoT platforms that provide a free account with some limitations, which we can use to build a hobbyistIoT project.
When you build an IoT project, you can simplify the architecture shown above, connecting the prototyping boards directly to the IoT platform as long as the prototyping board supports the platform protocols and security standards.
The rise of machine learning algorithms integrated with the IoT are creating new scenarios where machine learning can be used to control devices and appliances
In the project overview defined above, it is important to specify and describe the IoT protocols that we should use when building a project.
As mentioned before, in this context there are some protocols we already know from other applications, such as HTTP/HTTPS, but there are other protocols specific for IoT and more oriented to an M2M data exchange. One of the most widespread protocols is MQTT. It is a widely adopted, message-based, lightweight protocol based on the publish/subscribe (pub/sub)paradigm. To make things simple, the key component is an MQTT-broker that dispatches messages to one or more MQTT clients. The broker uses topics to filter the MQTT clients that will receive the message. There are several MQTT implementations for different prototyping boards (Arduino, Raspberry, and so on).
Almost all IoT platforms use MQTT to exchange data. There are other protocols that we'll just mention without covering them in depth, including AMQP, CoAP, and Stomp.
IoT Prototyping Boards
By now, we have described which kind of IoT projects we can build by ourselves as well as prototyping boards. Nowadays, there are several boards, which have different features and computing power. The classic development boards commonly used when developing DIY IoT projects are:
- Arduino family boards
- Raspberry family boards
- ESP boards
- Particle boards
This is just a small list of the dozens of development boards available on the market that can fulfill our needs. It is important to select the right board according to the role it will play in our IoT project. A rule of thumb is:
- If we only need to control sensors or actuators, we can use an Arduino Uno or compatible boards.
- If we require an internet connection, we can select an ESP family board (i.e ESP8266) that has built-in Wi-Fi support.
- If we need more computational power because we need to implement application logic, we can use a Raspberry Pi 2 or 3. We could run some machine learning algorithms or frameworks on these boards (see Tensorflow).
- If you want to develop an IoT project within a complete ecosystem where you do not have to worry about selecting a specific IoT platform, you might consider Particle boards.
At the end of this brief introduction to IoT, we've reviewed the dozens of IoT projects you can build to experiment with IoT.
These low-cost components and boards allow us to take our first steps into the IoT world without spending too much or committing to massive industrial IoT projects.
Opinions expressed by DZone contributors are their own.