
In this introductory lecture, I'll talk a little bit about the Arduino, what it is, how it came to be, and why it is important.
I am also going to show you the gadget that you will build as you go through the course. This gadget, which I call JING (not an acronym!) will take readings for temperature, humidity, barometric pressure and light intensity from the room in which you happen to put it, and record the data on a free web service on the Internet, from where you will be able to look at them as graphs.
What parts will you need to complete this course? Here's a shopping list:
1) An Arduino, I suggest the Arduino Uno.
2) An Arduino Ethernet Shield
3) A few photoresistors
4) A DHT22 sensor
5) A BMP085 sensor
6) An LCD screen, based on the common Hitachi HD44780 or compatible controller, 16 columns by 2 rows.
7) Assorted resistors
8) A potentiometer (pot)
9) A push button
10) A couple of breadboards (so you can have one for Jing and one for running experiments with)
11) Lot's of wires.
You can purchase this from my affiliate shop at http://txplore.com/components-bundle-for-beginning-arduino (fultiffled by Amazon), Ebay, element14, Sparkfun, Adafruit, among many other places.
All sketches used in this course are available for download from my Github account.
Components Needed for This Project
Before we begin building, let's make sure you have the components you'll need throughout the course.
I've created a complete parts list for this project, including links to each component and recommendations where appropriate.
You can find it on the external link below.
If you're purchasing components for the first time, don't worry if you need to spend a little time finding suitable suppliers. Learning how to source electronic components is an important part of becoming a maker and an engineer. As your skills grow, you'll become familiar with comparing specifications, identifying compatible alternatives, and choosing components that best suit your projects.
For this course, I recommend using a genuine Arduino Uno, but a compatible board will also work in most cases. The remaining components are inexpensive and widely available from electronics retailers around the world.
Take a few minutes to review the parts list before continuing. Once everything has arrived, we'll be ready to start building your Arduino IoT environment monitor.
I'll see you in the next lecture.
In this video, I show you where to find all the source code used in this course so that you don't have to do any typing at all.
Please watch this video before continuing with the rest of the course!
In this lecture I will show you how to put together your first circuit, write the sketch for it, and then upload the sketch to your Arduino to make it all come to life. This circuit will make an LED light to blink on and off.
In the process of getting this circuit to work, you will learn some basic Arduino programming commands and structures, what is a digital output, and, of course, what is an LED!
In this Part 1, I discuss diodes and LEDs, and construct the circuit.
In this lecture I will show you how to put together your first circuit, write the sketch for it, and then upload the sketch to your Arduino to make it all come to life. This circuit will make an LED light to blink on and off.
In the process of getting this circuit to work, you will learn some basic Arduino programming commands and structures, what is a digital output, and, of course, what is an LED!
In this Part 2, I discuss the sketch.
In the previous lecture, we created a simple circuit in which an LED blinks on and off. The Arduino sketch that drove the circuit simply wrote a HIGH or LOW value to the digital output pin 9, and the LED was turn on or off accordingly.
In this lecture I will show you how to make the LED not blink but fade on and off. We will be keeping the exact same circuit, and we'll only make a small change in the sketch to make this happen.
In this lecture, I’d like to talk about how the sketch that you write is translated to code that the micro-controller can understand, instructions and functions.
Then, I take you on a tour of some very useful functions that are built into the IDE.
There are a few components of the Arduino language that you will find yourself using very frequently, so it is worth the effort to have a good look at them and learn what they are and what they do. This will save us a lot of time later. Much of what we’ll learn in this lecture will be hands-on, so keep your Arduino board handy, with the circuit you build in the second lecture (the blinking LED).
The Arduino language can be broken down to a few basic components:
Assuming that you are fairly new to programming languages, I would now like to introduce you to these components through examples. If you are already familiar with these concepts, feel free to skip this lecture.
In this Part 1 (of 3), I discuss Operators.
There are a few components of the Arduino language that you will find yourself using very frequently, so it is worth the effort to have a good look at them and learn what they are and what they do. This will save us a lot of time later. Much of what we’ll learn in this lecture will be hands-on, so keep your Arduino board handy, with the circuit you build in the second lecture (the blinking LED).
The Arduino language can be broken down to a few basic components:
Assuming that you are fairly new to programming languages, I would now like to introduce you to these components through examples. If you are already familiar with these concepts, feel free to skip this lecture.
In this Part 2 (of 3), I discuss Control Structures.
There are a few components of the Arduino language that you will find yourself using very frequently, so it is worth the effort to have a good look at them and learn what they are and what they do. This will save us a lot of time later. Much of what we’ll learn in this lecture will be hands-on, so keep your Arduino board handy, with the circuit you build in the second lecture (the blinking LED).
The Arduino language can be broken down to a few basic components:
Assuming that you are fairly new to programming languages, I would now like to introduce you to these components through examples. If you are already familiar with these concepts, feel free to skip this lecture.
In this Part 3 (of 3), I discuss frequently used build-in functions.
As your sketches grow in size and complexity, you’ll need to think about organising them so that they are easy to understand when you read them days or months after your write them, and so that the chances of introducing defects are reduced.
The best way to organise your sketches is by making good use of functions. You already know a lot about functions, since you have already played with sketches that contain at least two of them, setup() and loop(). In this lecture, you will write your first custom function, and use it in your sketch.
A micro-controller’s primary task is to interact with its environment. This is done with the help of a variety of input and output devices connected to compatible pins. The Arduino Uno has 20 of those pins, and in this lecture you will learn how to use them.
The easiest way to think about interaction between a computer and its environment, is by splitting all interactions into two categories: Analog and binary (or, from now on, digital).
In this lecture (Part 1 of 2), I discuss digital and analog values and how to deal with them when reading and writing.
A micro-controller’s primary task is to interact with its environment. This is done with the help of a variety of input and output devices connected to compatible pins. The Arduino Uno has 20 of those pins, and in this lecture you will learn how to use them.
The easiest way to think about interaction between a computer and its environment, is by splitting all interactions into two categories: Analog and binary (or, from now on, digital).
In this lecture (Part 2 of 2), I show you how to take a digital reading from a push button, an analog reading from a photo-resistor and explain the voltage divider circuit.
In the last lecture, you learned how to connect a photoresistor to your breadboard, and how to use the analogRead function to take a raw reading.
In this lecture we will think a little bit deeper about how to deal with raw analog sensor readings, and in particular I’ll show you how to convert a raw reading from the photoresistor into a lux reading.
In this Part 1 (of 2), I introduce the Lux as the unit of measurement of light intensity, and discuss the Axel-Benz formula that will help us calibrate a photo-resistor circuit. I also explain how to convert an arbitrary reading from the photoresists to a Lux value.
In the last lecture, you learned how to connect a photoresistor to your breadboard, and how to use the analogRead function to take a raw reading.
In this lecture we will think a little bit deeper about how to deal with raw analog sensor readings, and in particular I’ll show you how to convert a raw reading from the photoresistor into a lux reading.
In this Part 2 (of 2), I put the theory we learning in Part 1 to practice and create a circuit that measures light intensity in Lux.
In this lecture you will learn how to measure temperature and humidity. To do this, we will use a sensor from the DHT family of temperature and humidity sensors.
In this lecture I will show you how to measure barometric pressure with the the BMP085 sensor.
In this lecture I will show you how to use a character LCD screen. Once we get the screen going by showing a simple message on it (Part 1 - this), we’ll start adding the sensors to the breadboard and then create a sketch that shows their values on the screen (Part 2 - next).
In this lecture I will show you how to use a character LCD screen. Once we get the screen going by showing a simple message on it (Part 1 - previous), we’ll start adding the sensors to the breadboard and then create a sketch that shows their values on the screen (Part 2 - this).
In this lecture, I'll show you how to connect your Arduino to the Internet with an Ethernet shield.
In Part 1, you will create a simple echo server on your Arduino. In Part 2 (next), you will learn how to transmit sensor data to a Telnet client.
In this lecture, I'll show you how to connect your Arduino to the Internet with an Ethernet shield.
In Part 1 (previous), you created a simple echo server on your Arduino. In Part 2 (this), you will learn how to transmit sensor data to a Telnet client.
In this lecture I am going to show you how to create an account on Emoncms, and walk you through it’s basic features. Then, we will modify our last sketch from the previous lecture so that instead of sending the photoresistor data to the Telnet client, it will send it to Emoncms.
Once you learn how to do data logging on the cloud for the photoresistor data, we’ll expand our scope so that we log all of our sensor data to Emoncms. At that point, you will have almost completed the construction of JING. Lastly, I’ll show you how to visualise and publish all the data you have collected so that you can view them on your computer and your smartphone.
In this Part 1 of the lecture, I walk you through Emoncms.
In this lecture I am going to show you how to create an account on Emoncms, and walk you through it’s basic features. Then, we will modify our last sketch from the previous lecture so that instead of sending the photoresistor data to the Telnet client, it will send it to Emoncms.
Once you learn how to do data logging on the cloud for the photoresistor data, we’ll expand our scope so that we log all of our sensor data to Emoncms. At that point, you will have almost completed the construction of JING. Lastly, I’ll show you how to visualise and publish all the data you have collected so that you can view them on your computer and your smartphone.
In this Part 2 of the lecture, I show you how to upload sensor data from a photoresistor to your Emoncms account.
In this lecture I am going to show you how to create an account on Emoncms, and walk you through it’s basic features. Then, we will modify our last sketch from the previous lecture so that instead of sending the photoresistor data to the Telnet client, it will send it to Emoncms.
Once you learn how to do data logging on the cloud for the photoresistor data, we’ll expand our scope so that we log all of our sensor data to Emoncms. At that point, you will have almost completed the construction of JING. Lastly, I’ll show you how to visualise and publish all the data you have collected so that you can view them on your computer and your smartphone.
In this Part 3 of the lecture, I show you how to log (as in "record") the data from your sensor, and how to create a visualisation in the Emoncms dashboard.
In this lecture I am going to show you how to create an account on Emoncms, and walk you through it’s basic features. Then, we will modify our last sketch from the previous lecture so that instead of sending the photoresistor data to the Telnet client, it will send it to Emoncms.
Once you learn how to do data logging on the cloud for the photoresistor data, we’ll expand our scope so that we log all of our sensor data to Emoncms. At that point, you will have almost completed the construction of JING. Lastly, I’ll show you how to visualise and publish all the data you have collected so that you can view them on your computer and your smartphone.
In this Part 4 of the lecture, I show you how to add the remaining sensors to the breadboard, and complete the hardware side of Jing.
In this lecture I am going to show you how to create an account on Emoncms, and walk you through it’s basic features. Then, we will modify our last sketch from the previous lecture so that instead of sending the photoresistor data to the Telnet client, it will send it to Emoncms.
Once you learn how to do data logging on the cloud for the photoresistor data, we’ll expand our scope so that we log all of our sensor data to Emoncms. At that point, you will have almost completed the construction of JING. Lastly, I’ll show you how to visualise and publish all the data you have collected so that you can view them on your computer and your smartphone.
In this Part 5 of the lecture, I walk you through the final version of the Jing sketch.
In this lecture I am going to show you how to create an account on Emoncms, and walk you through it’s basic features. Then, we will modify our last sketch from the previous lecture so that instead of sending the photoresistor data to the Telnet client, it will send it to Emoncms.
Once you learn how to do data logging on the cloud for the photoresistor data, we’ll expand our scope so that we log all of our sensor data to Emoncms. At that point, you will have almost completed the construction of JING. Lastly, I’ll show you how to visualise and publish all the data you have collected so that you can view them on your computer and your smartphone.
In this Part 6 (and last) of the lecture, I show you how create visualisation of the data retrieved from the sensors, and complete the Emoncms dashboard.
Congradulations!
You have reached the end of this learning journey. You have created perhaps your first Internet of Things gadget, JING, but you are already capable of much more. In this last lecture I’d like to give you some ideas about things that you can make using the knowledge that you already have, and about things that you can go on exploring next.
Learn Arduino by Building a Complete IoT Project
The best way to learn Arduino is by building a real project.
This course is designed for beginner Arduino learners and makers who already have a basic understanding of electronics. Together, we'll build a complete Arduino IoT environmental monitoring system while developing the practical skills needed to confidently tackle future electronics projects.
Using an Arduino Uno, you'll assemble electronic circuits, connect multiple sensors, display live measurements on an LCD, and publish environmental data to a cloud logging service so you can monitor your surroundings from anywhere. Rather than simply following instructions, you'll learn how each component works, why it is used, and how it contributes to the finished project.
Every lesson builds on the previous one, helping you understand not only what to do but also why you are doing it. This practical, project-based approach makes it easier to retain what you've learned and apply those skills to your own Arduino and IoT projects long after you've completed the course.
Building hardware doesn't always go exactly to plan, and that's part of becoming a maker and an engineer. Components sometimes behave unexpectedly, wiring mistakes happen, and software occasionally needs careful debugging. Throughout this course, you'll develop a systematic approach to solving these challenges, building the confidence, resilience, and growth mindset that every successful engineer relies on. Every obstacle is an opportunity to learn, improve, and become a more capable problem solver.
The course is organised into three progressive parts.
Part 1 introduces the Arduino platform and guides you through building your first circuits, giving you the confidence to begin creating your own projects.
Part 2 focuses on Arduino programming, the Arduino IDE, and the core concepts you'll need to control hardware, read sensors, and understand how your code interacts with the physical world.
Part 3 brings everything together as you build JING, your own Internet-connected environmental monitoring system. You'll assemble the hardware, write the software, and integrate each component step by step until you have a fully functioning IoT device.
Along the way you will learn how to:
Build Arduino circuits using commonly available electronic components.
Connect and program temperature, humidity, air pressure, and light sensors.
Display real-time sensor readings on an LCD.
Publish environmental data to a cloud logging service.
Develop practical Arduino programming skills through a complete project.
Troubleshoot hardware and software using proven engineering techniques.
Build the confidence to design and create your own Arduino and IoT projects.
One of the practical skills you'll develop throughout this course is learning how to source electronic components. Finding suitable hardware is part of the engineering process, and becoming familiar with suppliers, component specifications, and equivalent parts is a valuable skill that will benefit you well beyond this project. I'll explain the purpose of each component and help you understand why it has been chosen, so you can confidently source parts for your own future projects.
To get the most from this course, you should already have a basic understanding of electrical concepts such as voltage, current, and resistance, along with basic computer skills. Previous Arduino experience is not required, and while some programming experience is helpful, it is certainly not essential.
Hardware required
You'll need the following components to complete the project:
Arduino Uno (a genuine Arduino Uno is recommended)
DHT22 temperature and humidity sensor
BMP085 barometric pressure sensor
Photoresistor
16×2 HD44780-compatible LCD display
Breadboard
Potentiometer
Assorted resistors
Breadboard jumper wires
These components are inexpensive and readily available from electronics suppliers around the world.
Your instructor, Peter Dalmaris, is an engineer, educator, author, international conference speaker, and founder of Tech Explorations. He has taught hundreds of thousands of students through his practical, project-based courses. Peter is the author of Maker Education Revolution and the best-selling KiCad Like a Pro series, trusted by makers, students, educators, and professional engineers worldwide. He has been a featured speaker at Elektronika with Elektor, Maker Faire Athens, and KiCon Asia in Shenzhen, where he has shared his expertise with the global engineering, electronics, and maker communities. His teaching philosophy is simple: the best way to learn engineering is by building real projects, understanding how they work, and developing the confidence to solve problems independently.
Whether you're taking your first steps with Arduino or expanding your electronics skills into IoT, you'll finish this course with much more than a completed project. You'll have developed practical engineering skills, a structured approach to problem solving, and the confidence to continue designing, building, and troubleshooting your own Arduino and IoT projects for years to come.