This post is aimed at the beginner who wants to build an IOT system at home.
If I had to explain what this whole website is about.. it is this post right here!
Because the ‘Internet Of Things’ is such a broad term, I couldn’t possibly explain everything here, but I will guide you through some basics that will get you creating some projects and start you off on this fascinating new journey.
The ‘Internet Of Things’ brings together technologies in a way that we can design and build our very own systems.
These comprise of physical electronic hardware, complete with sensors, along with servers, data storage, bespoke applications which we can create on our own, and online platforms that can help us achieve our goals.
Of course we also need to network all of these devices together to create a final working system.
Check out some of these components and see just what’s available to us.
Single Board Computers (SBC's)
Single Board Computers have been made popular since the first release of the Raspberry Pi. One of the top factors of this is due to it’s price.
These boards are inexpensive, and easy to setup in terms of hardware.
Once you plug in a mouse, keyboard, monitor and an SD card and assuming the operating system is installed then you’re ready to go.
The Raspberry is not a very powerful computer, however, for it’s cheap price it is one of the easiest and cheapest ways to get a fully-fledged personal computer up and working.
Although SBC’s are personal computers, they do not use the same architecture as a regular PC.
As regular PC’s generally use an x86 architecture, the Raspberry Pi uses ARM architecture.
This architecture is found in mobile phones and tablets.
If you’re willing to splash out on a more powerful SBC then there are alternative out there to the Rpi.
Odroid, Beaglebone, Orange Pi, Banana Pi and Asus Tinker are very common to see in the market today.
These boards will have various hardware specifications and price tags to match.
You will need to select your board carefully when designing your IOT system but it will usually come down to personal preference, the application you intend on using it for and of course, your budget.
Generally a Raspberry Pi will be sufficient for most personal projects.
I would recommend buying a Rpi3 and onwards as it’s possible to buy one of these boards at the same price as older generations at a cost of around $40 each.
These Raspberry Pi 3 (and above) boards have also undergone many hardware improvements since the first generation Rpi so there’s really no use for these older SBC’s (unless you acquire one for free of course!).
The SBC will most likely be one of the most expensive single purchase of a personal IOT system.
You will initially need a monitor or TV to connect a Raspberry Pi and get things setup.
But once it’s up and running we can disconnect the Pi from a monitor and run it without it. This is what we call “headless”.
The Rpi needs an operating system installed on to an SD card too. It is recommended to use a Class 10 micro SD card for this setup as data transfer speeds will be faster.
Note that a MICRO SD card is needed for Rpi 3/4 and anything above 32GB storage should be sufficient.
We can install our operating system onto our card with a PC/laptop and the use of a USB to SD card Reader if our PC/laptop doesn’t have this capability built-in.
SBC IOT Usage
In a personal setup to build an IOT system then, these SBC’s are excellent when used as a central point of the network.
Because we’re dealing with operating systems at this level, we have control of storing data, networking, bespoke applications can be developed and we can setup various server services such as a file server or webserver.
We can then connect our various other devices together and communicate with each other.
SBC Operating System
There’s not much choice when to comes down to choosing an operating system for a single board computer.
Although Microsoft has their foot in the door with this space, linux will be your go-to operating system of choice here.
Yes, okay, I may be bias here as I can’t get enough of running linux, but there’s a good reason for that.
Single board computers run (what we call) embedded operating systems. Linux was designed to fit in to anything that an operating system can fit in.
There’s just so much freedom to do what you please when running linux in general.
So having it in your SBC’s and in your IOT systems will open up a world of possibilities to you. Trust me on this one!
If you DO go for the Raspberry Pi as your single board computer of choice then Raspbian Linux would be my recommended operating system as Raspbian is the officially supported OS for the Rpi.
Raspbian Linux can be found here: Raspberrypi.org
If you’re new to linux then you can check out my ‘Getting Started With Linux‘ posts to get a good overall idea on the subject.
You could also try my ‘Linux Basics‘ posts to learn how to use the linux operating system and ultimately become Linux Admin skilled.
SBC Application Development
Developing programs may seem like a daunting task to most people but it’s certainly a skill worth having.
Besides, once you get going you will enjoy the process of creating something amazing and you may even find it addicting.
Although saying that, we can probably find open-source software that’s already been created for us that will perform many tasks that we need.
These ‘IOT’ programs can come in many forms.
We could have front-end applications as a web page that’s running on a web server for example, which we can use to interact with and view data remotely through a web browser.
But we can also run back-end applications that don’t need human interaction too.
Coming back to linux for a moment here, we could for example create bash scripts that run on our single board computers.
Python is a popular language to learn for such projects like IOT as we can create programs very quickly due to the nature of the language being a ‘high-level’.
But I won’t go into detail about that right now.
Imagination is the limit when it comes to application creation for our ‘Internet Of Things’ devices and systems and it all depends on what you are trying to achieve.
I have a post that gives my opinion on what programming language to learn here: ‘What Programming Language Should I learn?‘ if you would like more info on languages.
Micro-controller Development Boards
These boards may look similar to the Single Board Computers that I mentioned above, but these boards are very different.
We cannot install an operating system on these dev boards.
Here we are working more closely with the electronics.
We can connect electronic components to these boards and we can collect data from sensors, or control output components such as motors and lights.
The Arduino is a very cheap and popular dev board available on the market today.
The Arduino is a family of multiple variations of boards with the Uno being the most popular for beginner’s.
If you’re new to Arduino then you can check out my post ‘What Is Arduino?‘ to get a better understanding as it’s aimed at the beginner as an introduction.
The Arduino family of development boards are not the only choice that’s available to us if we want to create an IOT system.
We could opt for the NodeMCU, the Teensy family, or a number of other alternatives.
The way we control our electronic output components and to monitor data is achieved by creating a program in a language.
With respect to the Arduino then, we would most likely use C/C++.
After creating our program we would then write this program into the micro-controller chip (Integrated Circuit) that’s placed on the development board.
Electronics (Sensor Components)
If you’re looking to build an IOT system at home then you really won’t get very far without electronic sensor components.
Don’t be put off the whole project if electronics isn’t your thing.
With some basic electronics concepts you will soon become confident in creating something exciting, it will keep you interested and you’ll learn so much more as time goes on.
This isn’t a complete list of possible components to choose from but I’ve selected some of the most common that will peak your imagination as to where you could implement some of these:
Mobile App Development
You don’t need to be a hardcore coder to create mobile applications today.
Many platforms exist now that will have you creating a working project and usually these sites don’t ask you for any money.
These platforms that I will cover below are very similar to each other.
If you learn one of these platforms then there’s a good chance you will be familiar with them all as they all stem from the same code base.
There’s also a good possibility that a project created on one platform can be migrated over to another.
All of these platforms have an excellent community there and ready to help anyone who may need it from time to time.
They all also offer a feature to import extensions from third parties, allowing us to create many different types of apps.
App Inventor 2 (AI2)
App Inventor 2 was first created by Google then handed over to MIT. Only designed to create Android apps, AI2 has the very basic building blocks that will allow us to create apps.
You may want to start here if this whole concept is new to you due to it’s simplicity of official building blocks that are offered.
A drawback with this platform that I’ve noticed is that by default, all of our personal apps can be seen by anyone in the community.
This feature does have it’s pro’s for some people I guess, but if we want to keep our hard work private then we would need to send a little money their way.
This is the platform of choice for me and the one I would truly recommend to anyone right now.
At the time of writing this, Kodular has just joined forces with Appybuilder (my old ‘goto’ platform of choice) and so it now has a much bigger community and feature set.
Kodular takes commission from us through the advertising components that we may want to implement in to our apps but if we want to keep all of the revenue for ourselves then I believe Kodular can be bought off.
I can see this platform coming up with some great work in the years to come and I’m waiting for the possibility to create IOS apps as this feature would be great! But we will hopefully see this happen soon.
As I mentioned above, everyone is moving away from Appybuilder now so I wouldn’t go signing up there.
I guess this platform will be removed completely soon, but you can find all of the original community over at Kodular now.
If you would like more info on how YOU can build your very own Android app for free using Kodular then check out my post here.
A Side Note On App Business’s
With all this data we’re creating we need to store it some place right? With online servers we can remotely connect multiple devices for storing and retrieving the sensor data.
With multiple free and cheap options available to us such as Microsoft Azure, Amazon AWS and Google we’re spoiled for choice.
These vendors usually offer so much more than simply storing data and offer some kind of Saas (Software As A Service).
Other than the top Silicon Valley vendors, there’s many more out there we could choose from.
But we could also create our very own server at home!
This option is great for gaining the knowledge and skills needed to manage and maintain a server and it’s network, but with this option we need to be aware that security will be a higher risk and these measures will need you to pay very close attention to.
IFTTT (If This Then That)
If you have plans to build an IOT system at home then I would certainly recommend checking out IFTTT.
It’s free to use and the capabilities that this platform offers will surprise you.
IFTTT provides a range of services which you would connect together to create your own ‘applets’.
Because IFTTT provides so many possibilities, let me give you an example of where I’ve used it in a project.
I created an app where I wanted the user to provide me with an email address when signing up.
For me to verify that the user did indeed own the email address, I setup an applet in IFTTT to automatically send out a ‘One Time Password’ (OTP) via SMS or email.
The user would then use this password to confirm their account and login to my app.
(Note: We can also perform OTP functionality using Firebase, which I talk about in the next section).
All of this was done through automation and once the system was setup, there was nothing for me to do to manually.
To see a range of services that IFTTT supports then here is the link.
Google Cloud Platform (GCP)
Google Cloud Platform is so big now it has it’s own set of certifications!
It offers a plethora of services to us that could be utilised in more ways than we could possibly imagine. Don’t believe me, take a look for yourself here.
In fact, this list is so big that I think it warrants it’s own post here on this site. Hopefully I will get around to that sometime.
I myself have only used a handful of these services but I will give you an example of where I’ve used Firebase, just one of many GCP services.
Have you ever used an app where you can compete with strangers to gain points in a game?
Firebase is a database where it stores data, but this data is shared among others who are authorised to do so.
This fast data manipulation and sharing has many uses in apps and other projects.
Firebase is freemium.
That is, it’s free to use up to a certain point.
Then the more users/data that is needed then eventually you will need to hand over some cash to Google.
But if it’s for personal projects then the free tier will be suitable for most of us.
Networking (Bringing It All Together)
The best place to start out when looking to build an IOT system would be to have a high-level overview of what system you would like to have.
Then we would create each individual device by using the development boards complete with sensors and output components (motors, lights etc.)
It’s only when we start to network all of these devices, along with a central point such as cloud storage or a personal server will our system be complete.
The TCP/IP protocol suite is the de facto suite we all use to communicate over the internet today.
By gaining the knowledge on networking and putting it in to practice with our devices and system as a whole, we can achieve great things.
If you would like to learn more about TCP/IP networking then here is a link to my ‘Basic Networking‘ category.
Who says we need to build every component in to our IOT system?
We can of course incorporate commercial electronic products such as an Amazon Alexa in to our network which can greatly enhance an IOT setup to give us features that we otherwise wouldn’t have.
For example then, we could ask Alexa to “close the curtains” or “turn on the lights”.
Blynk is a system that’s been created to help us create our very own ‘internet of things’ at home, or any where else for that matter.
We don’t really need Blynk, at least that’s my opinion anyway, but it’s certainly an excellent platform to check out.
The Blynk app lets us build our own, unique app by giving us building blocks to work with and configure.
There’s a freemium business model to Blynk where we will need to pay for features later down the line of constructing our systems.
Although this may be perfectly reasonable for businesses, it’s not really a good solution for most of us who want to learn how the technology works.
So now you wondering, “This is all great and everything, but how do I put all of this together?” Am I right?
The projects that could be built here are seemingly endless and it’s up to you in what project you want to build.
We can put these components together in any way we like.. like Lego bricks!
Here is an example of a simple automated garden system:
We can use the micro-controller boards (Arduino as an example) with moisture sensors connected and place these at our plants.
We can send the sensor data to a central server such as a Raspberry Pi.
We could then download this data to an android device and view this data in graphs and charts.
We could remotely configure the Raspberry Pi to setup a schedule to send each individual Arduino a timing to water the plants.
We can also configure the Arduino it’s self to water the plants whenever the soil dries out.
This is just a very quick and simple demo and I hope to cover more projects in detail in the future.
There you have it. This post covered many components that can be used to build an IOT system at home and for a very reasonable price.
However, this will require you to put in the time to learn everything and this can’t be done over night.
Keep practicing, learning and acquiring new knowledge. Remember, Rome wasn’t build in a day!
I will keep this post updated in the future if I find any other relevant info that I may have missed.
Not everything I’ve mentioned here is the complete “be all, end all”! There could be many more components that we can utilise in an IOT environment and it’s a continuously growing space every day.