6 Project Ideas to Get Started with IoT
There’s a lot of stuff written about the Internet of Things (IoT) at a conceptual level that doesn’t really cover anything concrete. If you’ve ever wanted to get started on a real IoT project but didn’t know where to start, you are in the right place.
This article will go over some things to take into consideration when planning your IoT project, then show six practical IoT projects with links to tutorials and source code so you can easily get started no matter your technical skill level.
What’s Needed for an IoT Project?
Before jumping into an IoT project, you’ll want to make sure you have planned properly because when hardware is involved, iteration becomes much more expensive. Let’s look at the main things you need to consider when planning your IoT project.
Depending on the scope of your project, the hardware could be the most expensive part, so you’ll want to make sure you don’t spend more than necessary if you can avoid it. There are a large number of IoT devices available for hobby projects or prototyping. Broadly, they can be broken down into the categories of microcontrollers and single-board computers (SBCs).
Microcontrollers are small computers with minimal resources in terms of CPU, RAM and storage space. They are programmed to perform specific tasks and don’t have a full operating system. A common example of a microcontroller is Arduino.
Single-board computers are general-purpose computers that have enough resources to run full operating systems and can be used for a wide variety of use cases. An example of an SBC is Raspberry Pi.
Which type of hardware you choose will come down to project requirements. If you only need a low-powered microcontroller to perform the task, it probably makes sense to use that rather than spending money on an SBC with computing resources you don’t need.
IoT Tools, Frameworks and Ecosystem
Another aspect to consider when planning an IoT project is which tools are available to save you time and make things easier. In this section, we’ll look at a few different areas you should research to decide what makes sense for your project.
Bandwidth speed and network reliability can be major challenges for IoT projects. If you know your devices will be deployed in places with reliable WiFi, this won’t be a significant issue, but for projects where devices will be in the field, you will need to consider different networking protocols and options for internet connectivity. The network protocol you choose for communication can have a significant impact on things like device battery life, reliability of data, bandwidth costs and development speed.
Here are a few common network protocols used for IoT projects in different circumstances:
Integration and Automation Tools
One of the most important parts of IoT is the “things” aspect, which is all the various devices that you can theoretically connect and have them communicate and work together. While you could write all of this code yourself, there are a variety of frameworks with active communities sharing code so people don’t have to reinvent the wheel. Two of the most popular tools are Node-RED and Home Assistant.
Node-RED is a good fit for any general-purpose IoT project. It makes it easy to handle messages being sent by devices in almost any common IoT network protocol, then take action based on those messages. This could be anything from storing the message, transforming it with custom code or sending the message to another device to perform some task.
Home Assistant is similar to Node Red but is focused on home automation, specifically. It has a number of features to help optimize for this use case. The community has made over 1,900 pre-built integrations and automations. If you need more power you can also leverage Node Red via Home Assistant.
Another potential component of your project could be a dedicated IoT platform or IoT cloud service. There are a number of these available to make common IoT application features easier to implement and manage. Whether you need to use one will depend on the scale of your project and which features you require. Some common features provided by IoT platforms are:
- Device management — This allows you to easily update device firmware and configuration settings remotely.
- Analytics — IoT platforms make it easy to stream and analyze your data, usually providing APIs or built-in integrations with other services.
- Security — Many platforms provide authentication services and encrypt your data.
- Networking — IoT platforms generally provide some sort of feature to allow data transfer from the edge to cloud.
In many cases, you will want some kind of persistent storage for the data being generated from your IoT project. This historical data can then be used later for visualization, analysis or creating forecasts of future trends. IoT data is generally some form of time series data, which has somewhat unique characteristics when it comes to querying that data.
While a relational database might be fine depending on the volume of data you will be generating from your IoT devices, it might be worth considering alternative options that are optimized for storing time series data.
Some common data storage choices for storing data for IoT projects are:
The reason for this is that they provide better data compression and are optimized for the OLAP (online analytical processing )-type queries that are typically run on time series data. The result is faster query performance, less hardware resource requirements and cost savings for storing your data.
IoT Project Ideas and Examples
A common starting point for IoT projects is setting up some basic home automation. This usually involves using something like a Raspberry Pi as a hub for connecting various smart devices around the house. One specific example would be using the automation tool IFTTT to connect to smart cameras, then taking automated action using a webhook event.
AI Security Camera
A more advanced (and expensive) home automation project would be creating an AI-powered security camera that is able to do image recognition on the edge device itself. For this example, you will need a device like an Nvidia Jetson that has an onboard GPU for quickly doing inference on images taken from a video stream.
An example use-case would be to only send alerts to your phone based on the type of object showing on the security camera. Other conditions like time of day could also be a factor. For example, if you have the camera in a store and a person is detected after closing time, it would make sense to send an alert because it could mean somebody has broken in.
Monitoring plants is another good beginner IoT project that will help you learn some of the basics that can then be extended to more complicated projects. In this example, you can program a microcontroller to pull data from a sensor to collect data about a plant’s soil. This project could then be extended to automatically water a plant based on the sensor data using robotic arms or other devices.
Air quality can have a major impact on your health and performance, so an easy IoT project that can have a quick positive impact on your life is making an air quality sensor. This example shows how you can use a Raspberry Pi to detect PM2.5 levels (particulate matter). You can also add additional sensors for things like carbon dioxide.
Once your data is being collected, you can define thresholds and integrate them with some of the tools discussed in this article to take action based on those levels. Some potential ideas:
- SMS message
- Change the color of your smart lights based on the levels
- Connect an alarm directly to the Raspberry Pi to make noise at certain levels
Remote-Control LEGO Robot
This project uses Python to control a LEGO robot via Bluetooth. The code can be extended to make the robot do a number of different things. In this case, the program is creating real-time data visualizations based on the sensor data being returned from the robot.
Self-Driving RC Car
With this more advanced project, you can take some concepts used for the AI security camera, such as using an Nvidia Jetson for image recognition and combine that with additional hardware that can then steer a remote-control car based on the data being generated from the camera.