So, what is the best way to learn IoT at home?
The traditional method of mastering any subject has always been through formal education such as college and university.
The problem with technology is that it’s moving faster than any school curriculum can keep up with.
Subjects such as basic electronics and linux commands haven’t changed for decades and it’s knowledge in these areas that would become a life-long skill.
Internet Of Things incorporates multiple technologies (old & new) and would require many years of studying to become proficient though these traditional means.
If you’re interested in robotics (let’s face it, who isn’t?) then the information in this post would also be relevant to you.
It’s time to get a hold of as much learning material as possible along with some hardware and dig-in.
Remember..the world won’t wait for you.
Can I Learn IoT On My Own?
Yes you certainly can learn IoT on your own. Providing that you have access to the internet and other resources such as books as well as tools and other hardware.
Most of my knowledge about IoT has been through self-teaching.
Official bodies such as College and University provide a structured approach and you will be told what to study.
The problem in this situation is that you’re not thinking for yourself.
All you need to do is create your own structured approach to learning.
When you find yourself getting tired then I would recommend taking a break once in a while.. but never give up!
In my opinion there isn’t a “one-course fits all” as the “Internet of Things” is made up of many subjects.
If you’re going down the ‘course’ route then many specialist courses may need to be taken and I will note any courses in this post.
What Skills Are Needed For IoT?
There are a multitude of skills that are needed for creating IoT systems.
If you’re a beginner just starting out in your IoT learning journey then this section covers some important skills that you will be expected to have.
I believe that mastering any type of skill and becoming successful in any field requires at least these three personal qualities:
Confidence is key here and if you don’t believe in yourself then no one else will.
Other qualities include:
- Good dexterity as you will be handling small components
- Logical thinking
- Willingness to learn
- Problem solving skills
- Regular practice
- Basic computer literacy
The following list shows what you can expect to be involved in when building IoT systems.
I would consider these topics to be the primary subjects to get started but there are other technologies that can be used.
I’ve created this list in order of where I recommend to start your journey from top to bottom and in the next section I will cover these topics in more detail.
- Reading electronic schematics
- Practical electronic circuit construction and testing
2) Embedded Programming
- Microcontroller circuit construction
- Microcontroller programming
3) Embedded Operating Systems
- Single Board Computing
4) Higher Level Programming
- TCP/IP Networks
6) Websites & Apps
- Web servers
- App development
7) Advanced Topics
- Network Security
- IoT Protocols
- SaaS (Software As A Service)
- Other IoT Software
How To Learn IoT Online From Scratch
The best way to learn anything is by doing and in IoT it’s even more important.
You won’t do yourself any favours by reading book after book yet you don’t follow it up with some practical work.
Learn with open-source hardware as you will have full control over your projects.
You probably won’t find all the learning material that you need in once place and I wouldn’t recommend you only use one source of information.
If you really want to learn IoT then you need to get used to researching.
Start with electronics theory and construction. Don’t over-complicate the theory here and only learn the very basics to begin with. Find a small electronic project online that you would like to build. Some of the best beginner projects involve 555 timers. Don’t incorporate microcontrollers here just yet.
Learn how resistors work and how to identify their values in ohms by reading the color coded stripes as well as tolerance. Learn Ohm’s Law. Learn how NPN and PNP transistors work. Understand capacitors, diodes and sensors as these are all basic components.
Another important skill is getting comfortable reading circuit schematics. You will need to design a circuit layout from schematic drawings and eventually building your project.
Stay clear of making your own PCB’s (Printed Circuit Boards) for a long time as this is a more advanced topic and essentially a project in it’s self.
Stick with strip board/veroboard and breadboard for now.
I would also stay away from radio projects as a beginner unless it’s something simple but try to immerse yourself in electronics as much as possible.
Microcontrollers & Embedded Programming
Next I would recommend building some microcontroller projects starting with Arduino Uno.
Here is my Arduino post for beginner’s where I cover this excellent little microcontroller board in more detail.
I also cover some basic hand tools and equipment that you will need to construct microcontroller projects as well as general electronics construction.
Arduino is programmed using the C/C++ programming languages. Start learning the basics of C/C++ but many Arduino programs (known as sketches) can be found on the internet and in the Arduino IDE.
Find yourself an Arduino project that you would like to build and go for it.
Once you’re familiar with Arduino Uno then why not try other microcontroller boards. Arduino has a whole family of boards with different capabilities or you could even try a NodeMCU.
NodeMCU has a TCP/IP stack meaning that it’s capable of connecting to the internet. It’s possible to run a web server on a NodeMCU and so you can connect to it remotely just as if you were browsing any other website.
Some Arduino boards may have capabilities such as this too.
Single Board Computers, Embedded Operating Systems & High Level Programming
Single board computers (SBC’s) such as the Raspberry Pi can make for an excellent smart home hub.
We can connect multiple devices either wired or wireless to the SBC central server where we can collect data and control remote devices.
The Python programming language is widely used with Raspberry Pi as many developers have created Python libraries for us to use with the Pi.
Raspberry Pi and other SBC’s will generally be running the linux operating system.
Not only will you encounter linux in embedded systems but most likely in servers and end-user devices too.
There’s not getting around it. If you want to effectively build IoT systems at home then you’re going to need to know the basics of linux.
Once you know the basics then it’s not difficult to build upon your knowledge and continue learning this amazing operating system.
Now that we have knowledge on constructing IoT devices we can now think about connecting them to the internet. This is where TCP/IP networking will be needed.
By learning all the basic networking concepts and how switches, routers and bridges work along with IP addressing and subnet masks we can truly start to make our IoT systems come to life.
Websites & Apps
There will be many IoT devices and systems that don’t require human interaction.
However if we do want to interact with our IoT systems then the most obvious way to do this is via a mobile application or a web frontend.
These applications should not be your priority just yet. Focus on building the circuits and embedded programming first.
Get those devices working, communicating and storing data first.
It’s only after gaining sufficient knowledge and skills in linux and TCP/IP networking will you be ready for network security.
The most popular linux distribution in this field is kali linux.
I see many people wanting to learn Kali linux but most of the time they don’t have any linux or networking knowledge and skills!
Don’t try to run before you can walk is my advice here.
It’s best to know the TCP/IP protocol suite in networking before trying to understand how other protocols work as these are generally built on top of TCP/IP.
Once we have a good understanding of a particular protocol we can then try different software (usually free and open-source) to utilise that protocol.
It’s possible for us to setup a database in our Raspberry Pi or another single board computer and use this to store our sensor data.
We can also setup a remote server somewhere on the internet and store the data here too.
We can view and manipulate this data by creating a web frontend by using free tools such as WordPress if we wanted to.
SaaS (Software As A Service)
Online platforms such as IFTTT (If This, Then That) provide some excellent features and functionality for IoT home systems.
I would recommend looking into webhooks and see what ideas you can come up with.
Again, SaaS should not be your priority here. Get your electronic projects built first.
Other IoT Software
Free tools such as NodeRed can be ran on multiple hardware platforms including Raspberry Pi and Android devices. It’s possible to create event-driven applications for a seemingly endless amount of use-cases.
How Long Will It Take To Learn IoT?
IoT is not to be rushed.
IoT is a broad subject and for anyone to become proficient in the basics will take many years.
In fact you will most likely never know everything. As with any IT subject there’s always something new to learn and new technology emerges all of the time so this will be a life-long learning journey.
But this is what makes it so fun!
Not even programmers know every programming language.
Once you immerse yourself in a project you will eventually understand how it works. Any problems you stumble upon is just another opportunity to learn.
Before you know it you will learn a great deal.
Programming Languages For IoT
Don’t get too caught up in programming in the beginning.
The best way to learn programming is to pick a project that you want to build.. and build it!
Only learn the code that you need to know in order to get your project working.
The reason I say this is because learning a programming language doesn’t happen overnight as it will take quite sometime before becoming proficient in it.
There are many frontend programming languages that can be used for creating mobile apps and webapps. Languages such as Java and Ruby for example.
However, if you spend most of your time in this area then you won’t be learning as much about IoT and robotics but more about programming its self.
The C/C++ and Python languages would be a great choice to study to build IoT systems at home.
You can read more about IoT programming in my other post.
IoT Learning Path At Home
As there’s no official route to take when learning IoT at home, all I can give is advice from my experience.
Hopefully you stick around on this site because that’s what I’m all about and you can check out my IoT learning road map here.
Just a quick heads-up here: You’re going to need to buy a whole lot of kit to build IoT projects and the cost can sharply increase very quickly.
How To Learn Electronics At Home
You’re going to need an assortment of electronics parts such as this one from Amazon as well as a multitude of tools.
My advice would be to buy some basic tools and then only buy a tool when you feel that you need it.
My other post on basic hand tools for electronics can help you out here if you’re a beginner. I also cover some basic electronic components and equipment too.
Right now I don’t have any basic electronics tutorials on this website but I hope to write some in the future. Right now I would recommend getting a hold of a basic electronics course or find free video content on YouTube.
Some electronics books for beginner’s would help too.
The best way to learn electronics is to find some interesting projects and build!
And learn along the way.
Everyday Practical Electronics (now re-branded as ‘Practical Electronics’) is a UK-based magazine company that I highly recommend.
It offers it’s monthly publication both in physical and digital format.
I’ve been a fan of PE(EPE) since I was a teenager and I always look forward to reading the latest issue.
How To Learn Microcontrollers & Embedded Programming At Home
Arduino provides some excellent kits for sale such as this Arduino Fundamentals kit.
Not only that, but once you’ve built the many projects in this kit and feel confident enough, you can take the Arduino fundamentals exam for around $30 and gain an official certification.
Wouldn’t this look cool on your resume/CV?!
Low Level Programming
The C and C++ programming languages are not recommended for a beginner who is learning a language for the first time. However C was the first language that I started learning and I enjoyed it.
My Arduino post will explain things in more detail.
I also have more information about high and low level programming plus lot’s more programming information for the ‘Internet of Things’ here.
How To Learn Linux, Single Board Computing & High Level Programming At Home
Possibly the cheapest and most convenient way to learn linux, Python and automated electronics together using sensors would be getting a Raspberry Pi.
I wouldn’t recommend buying books on linux. I own several linux books at home that sit on my book shelf and are almost untouched.
Linux is a very ‘hands-on’ subject and you will learn faster by playing around in linux with occasional web searches when you need help.
Having said that, the LPIC1 certification will teach you everything you need to know as an every-day linux user. Try following along with my linux LPIC1 tutorial posts although I recommend reading this linux command line for dummies post to begin with and gain a good understanding of how the linux command line works.
How To Learn Networking At Home
Networking has been one of those subjects that have taken me many years to understand.
I would always come back to networking time and time again as there is so much going on here.
There’s binary conversions, IP addressing, OSI model and so much more.
It’s a subject that I never loose interest in and the more I learn, the better I get at setting up networks at home.
If you can get your hands on some course material then this well help you out so much.
As you can see here I have started some networking posts and I hope to cover the complete CCNA certification eventually.
You can start learning networking at home with some cheap, old routers and switches.
Learn Website & App Creation
You don’t need to be a professional app developer to create your very own apps!
If I can do it then so can you. Kodular.io is an excellent free online tool for beginner’s to create great apps. Don’t think this is for kids though. We can make some very sophisticated applications here.
I have a post about Kodular here if you’re interested in taking this further.
WordPress.org is another excellent and free tool we can use without any coding experience.
Most of the websites on the internet use WordPress (including this website) and I would recommend installing it on your PC/laptop at home to gain some invaluable skills with websites.
Books On IoT Subjects
Get your hands on some books. I know that we can all get free information from the internet.
If you spend some money on a book then you’re more likely to read it as you’ve already invested. (we call this “skin in the game”).
Having the book physically in your hand will motivate you.
Get books with practical projects that you can follow along with.
FREE Download: CIoTP Checklist!
The ‘Certified Internet of Things Practitioner’ Certification provided by CertNexus is an excellent blueprint to begin learning IoT.
Enter your Email address below and grab your free printable checklist today!
Pluralsight is a premium online platform with tons of great video course content.
Working as a Software Test Engineer I spent many hours on this and is an excellent place to learn many of these subjects. It gets a recommendation from me.
What is the best way to learn IoT from home?
Start building projects!
I’ve covered many topics in this post but this is just scratching the surface.
The topics that I covered here are fundamentals.
I hope I’ve inspired you to get into this ever-evolving and exciting field and I’m sure you will love it as much as me.