We may earn an affiliate commission when you visit our partners.
Dr. Peter Dalmaris

I will help you get started with the basics of creating circuits with the Arduino prototyping board, and by the end of this course you will have an Internet-connected home environment monitoring gadget, build with your own hands.

A very basic understanding of programming is a bonus, but not absolutely necessary.

JING (not an acronym. ) is the environment monitoring system that you will put together piece by piece, and line by line.

Materials:

Enroll now

What's inside

Learning objectives

  • Make simple circuits based on the arduino board
  • Acquire data from sensors and display them on an lcd screen
  • Upload sensor data to a free cloud logging service and visualise it in a dashboard
  • Understand the basics of programming for microcontrollers

Syllabus

Introduction

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.

Read more
Please read this before continuing!
Components needed for this project

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.

Arduino development basics

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:

  • A syntax,
  • A few operators,
  • Several control structures
  • Functions

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:

  • A syntax,
  • A few operators,
  • Several control structures
  • Functions

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:

  • A syntax,
  • A few operators,
  • Several control structures
  • Functions

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.

Constructing JING

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.

Sometimes, it's better to make a video to answer a student question...
How to configure a widget (and why is a widget blank?)
Wrapping up and Bonus Lecture

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.

Bonus Lecture

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Provides a hands-on project, guiding learners through building a functional IoT device from scratch, which is ideal for practical application and skill development
Starts with the basics of Arduino and circuit building, making it accessible for learners with little to no prior experience in electronics or programming
Requires specific hardware components like an Arduino Uno, Ethernet Shield, and various sensors, which may require additional investment beyond the course fees
Teaches how to upload sensor data to Emoncms, a free cloud logging service, enabling learners to visualize and analyze data, which is useful for IoT projects
Explains fundamental programming concepts like syntax, operators, control structures, and functions within the Arduino environment, which builds a solid foundation
Uses the BMP085 sensor for measuring barometric pressure, which is now considered obsolete and has been superseded by newer, more accurate sensors like the BMP180 or BMP280

Save this course

Save Arduino: Make an IoT environment monitor to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Arduino: Make an IoT environment monitor with these activities:
Review Basic Electronics Concepts
Reinforce your understanding of fundamental electronics principles like Ohm's Law and voltage dividers, which are crucial for understanding how sensors and circuits work in the course.
Browse courses on Ohm's Law
Show steps
  • Read about basic circuit theory.
  • Solve practice problems related to Ohm's Law.
  • Simulate simple circuits using online tools.
Brush Up on C++ Programming Fundamentals
Strengthen your C++ programming skills, as Arduino programming relies heavily on C++. This will make it easier to understand and modify the code examples provided in the course.
Browse courses on C++ Syntax
Show steps
  • Review C++ syntax and data types.
  • Practice writing simple C++ programs.
  • Familiarize yourself with Arduino-specific libraries.
Read 'Practical Arduino Engineering'
Supplement the course material with a comprehensive guide to Arduino engineering, providing deeper insights into practical applications and advanced techniques.
Show steps
  • Obtain a copy of 'Practical Arduino Engineering'.
  • Read the chapters relevant to sensor integration and data logging.
  • Experiment with the examples provided in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Practice Blinking LED Circuit
Reinforce the basic circuit and code by repeatedly building the blinking LED circuit. This helps solidify understanding of digital outputs and basic Arduino programming.
Show steps
  • Gather the necessary components (LED, resistor, Arduino).
  • Connect the circuit on a breadboard.
  • Upload the blinking LED sketch to the Arduino.
  • Modify the code to change the blink rate.
Document Your JING Build Process
Solidify your understanding by creating a detailed blog post or video tutorial documenting your experience building the JING environment monitor. This forces you to articulate the concepts and troubleshoot any issues encountered.
Show steps
  • Take photos or videos of each step of the JING build.
  • Write a detailed description of each step.
  • Explain the purpose of each component and code snippet.
  • Share your documentation online.
Expand JING with Additional Sensors
Deepen your knowledge by expanding the JING project to include additional sensors, such as a rain sensor or a soil moisture sensor. This requires you to research new sensors, integrate them into the existing circuit, and modify the code accordingly.
Show steps
  • Research and select additional sensors.
  • Connect the new sensors to the Arduino.
  • Modify the code to read data from the new sensors.
  • Update the Emoncms dashboard to display the new data.
Contribute to an Arduino Library
Enhance your understanding of Arduino programming by contributing to an open-source Arduino library. This involves understanding the library's code, identifying areas for improvement, and submitting your changes for review.
Show steps
  • Find an open-source Arduino library on Github.
  • Study the library's code and documentation.
  • Identify a bug or a feature to implement.
  • Submit a pull request with your changes.

Career center

Learners who complete Arduino: Make an IoT environment monitor will develop knowledge and skills that may be useful to these careers:
Internet of Things Developer
An Internet of Things Developer focuses on creating and maintaining software and hardware for connected devices, also known as IoT devices. This course is valuable for this role because it provides practical experience in developing a basic IoT device, specifically an environment monitoring gadget called JING. The course covers the complete process from circuit design to programming the microcontroller and uploading data to the cloud. This helps build skills in hardware-software integration and cloud connectivity, which are important for an Internet of Things developer. This is especially helpful for candidates looking for hands-on learning.
Maker
A Maker is someone who enjoys creating and building things as a hobby or profession. This course is helpful for Makers as it offers a project-based approach to learning about electronics and programming. The course introduces hands-on learning and provides the necessary knowledge to design and build an Internet-connected environment monitor, using an Arduino board. A Maker will find the course helpful for developing skills in circuit design, microcontroller programming, and data logging.
Embedded Systems Engineer
An Embedded Systems Engineer designs, develops, and tests embedded systems, which are computer systems with a dedicated function within a larger mechanical or electrical system. This course helps build a foundation for this role by offering first-hand experience with circuit design and microcontroller programming using Arduino. The course also shows how to acquire sensor data and transmit it to the internet, crucial skills for many embedded systems applications. This course is useful for anyone aspiring to work with embedded systems because it provides practical, hands-on experience with the typical hardware and software involved in creating a connected device.
Hobbyist Inventor
A Hobbyist Inventor is someone who enjoys creating new devices and inventions for personal use. This course is helpful for a hobbyist inventor by providing hands-on experience with microcontroller programming, sensor integration, and circuit design. The course shows how to build a practical project, the JING environmental monitor. The project provides a practical platform for applying these skills in a hands-on project. Anyone hoping to invent or design their own devices will find this approach to learning beneficial.
Data Acquisition Specialist
A Data Acquisition Specialist is responsible for designing and implementing systems that collect, process, and store data. This course provides a valuable introduction to data acquisition, as it specifically covers how to gather data from sensors and upload it to a cloud service. The practical experience of building and programming the JING device to collect and visualize environmental data is exactly the kind of work that a Data Acquisition Specialist does. The course helps build skills in using sensors to gather and transmit information.
Sensor Systems Specialist
A Sensor Systems Specialist designs, tests, and implements sensor systems for various applications. This course is helpful for this role as it focuses on using different sensors to gather data, which is essential in sensor system design. The course provides an understanding of how to interface with sensors and process their readings. This practical experience, particularly with the JING project, is directly relevant to the work of a sensor specialist and increases readiness to work with sensing solutions.
Prototyping Technician
A Prototyping Technician builds and tests prototypes of new products and systems. This course can help in this career by providing experience with assembling electronic circuits and testing their functionality. The course focuses on building a working prototype, the JING environmental monitor, which includes integrating different components and writing code. This experience makes the course valuable for anyone interested in a career in prototyping, helping them to build practical skills that are directly useful in this role.
Electronics Technician
An Electronics Technician assembles, tests, and repairs electronic equipment. This course is helpful for this role because it provides an understanding of circuit design and basic electronics principles, which are crucial for an electronics technician. The hands-on experience in building circuits and working with components such as resistors, sensors, and LCD screens in the course is directly applicable to the tasks performed by an electronics technician. This direct, practical experience offers a useful foundation for this profession.
Research Assistant
A Research Assistant provides support to researchers in various scientific and engineering fields. This course helps research assistants through providing practical experience in setting up experiments that involve data acquisition from sensors and working with microcontrollers. The course's focus on building the JING device is particularly helpful, as it helps build data collection and processing skills that are often needed in research settings. The skills gained are also relevant for data analysis.
Hardware Engineer
A Hardware Engineer designs, develops, tests, and manufactures physical computer components and related products. This course may be useful for a hardware engineer because it introduces the basics of circuit design and working with various electronic components using an Arduino board. The course includes practical exercises like creating circuits and using sensors, which can build a foundation for someone working in hardware design. The focus on hands-on projects is useful for a hardware engineer wanting experience with prototyping.
Lab Assistant
A Lab Assistant offers support in laboratory settings, including setting up experiments and collecting data. This course may be helpful by providing hands-on experience with working with sensors, microcontrollers, and data acquisition techniques. The course teaches how to build and program circuits to collect and transmit environmental data. This is very helpful in laboratory settings where data collection from sensors is frequently needed. This course will be useful for anyone aiming to work as a Lab Assistant, particularly in labs where sensor data is used.
Robotics Technician
A Robotics Technician assists engineers in building, testing, and maintaining robots. This course may be useful for a robotics technician because it helps build familiarity with microcontrollers, sensor integration, and basic programming. The course provides hands-on experience with circuit building and data acquisition, which are foundational skills needed for working with robotic systems. Anyone looking to become a robotics technician will find this experiential approach to learning particularly helpful.
Automation Technician
An Automation Technician works with automated systems and equipment in various industries. This course may be useful for this role because it provides an understanding of how microcontrollers and sensors are used in automation. The course's hands-on approach to circuit design, sensor data acquisition, and basic programming can help a technician understand the fundamental principles behind automated systems. The construction of the JING device provides valuable experience relevant to this role.
Control Systems Technician
A Control Systems Technician works with automated control systems in various industries. This course may be useful because it introduces the basics of sensor data collection, microcontroller programming, and internet connectivity, which are core concepts in control systems. The hands-on experience of creating circuits using the Arduino board, acquiring data from various sensors and sending this data to a cloud service provides useful insight into the workings of control systems. The JING project is a practical example of a simple control system.
Environmental Data Analyst
An Environmental Data Analyst collects and analyzes environmental data to study trends and patterns. A background in engineering and/or science is usually needed to enter into this field. This course may be useful to an Environmental Data Analyst because it provides hands-on experience with acquiring data using sensors and processing this data. The course’s focus on building an environmental monitoring system (JING) provides skills in setting up and using sensors to gather environmental measurements. While advanced knowledge of statistics and data analysis is needed, the course may build a foundation for a career in this field.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Arduino: Make an IoT environment monitor.
Provides a practical, hands-on approach to Arduino engineering. It covers a wide range of topics, including circuit design, sensor integration, and data logging. It serves as a valuable reference for expanding your knowledge beyond the scope of the course and tackling more complex projects.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser