Arduino Step by Step: Your complete guide

Learn how to create electronic projects with the Arduino, the world's friendliest electronics prototyping platform!
23 reviews
TAUGHT BY
  • Dr Peter Dalmaris Tech Guru @ Futureshock Enterprises

    Peter is fascinated by technology because of its ability to make amazing things happen, and science because of its ability to make nature transparent.

    He is an Electrical and Computer Engineer, has a PhD (most of which was spent reading philosophy of knowledge) and a couple of Masters in Information Systems.

    He has been a lecturer for over 13 years in a variety of IT (and occasionally management) subjects. During this time, he has developed a hands-on teaching style, whereby he invites and challenges his students to learn by doing. He has taught thousands of students in dozens of undergraduate and postgraduate courses.

    Peter is also a software developer at Futureshock Enterprises, making applications using Ruby, Ruby on Rails, and iOS.

    Peter has been an electronics enthusiast since he remembers himself when he wrecked his sister's digital watch and his parents VCR. He replaced the watch but managed to fix the VCR.

    Now, he is particularly fascinated by the rapid prototyping opportunities that the Arduino and similar platforms has brought about.

    He lives in Sydney, Australia.

WHAT'S INSIDE
  • Lifetime access to 102 lectures and 34 quizzes
  • 17+ hours of high quality content
  • A community of 6800+ students learning together!
  • 230+ discussions
SHARE

Arduino Step by Step: Your complete guide

Learn how to create electronic projects with the Arduino, the world's friendliest electronics prototyping platform!
23 reviews

HOW UDEMY WORKS?

Discover courses made by experts from around the world.

Take your courses with you and learn anytime, anywhere.

Learn and practice real-world skills and achieve your goals.

COURSE DESCRIPTION

Arduino is an open-source electronics platform based on easy-to-use hardware and software. Sensing the environment by receiving inputs from many sensors, Arduino affects its surroundings by controlling lights, motors, and a number of other accessories. It's intended for anyone making interactive hardware projects.

This course is designed to introduce the Arduino hardware and programming environment to get you started on building projects as soon as possible.

Unleash Your Inner Tony Stark With this Comprehensive Course

  • Arduino Ecosystem and Programming Introduction
  • Shields, Accessories, and Sensors
  • Internet Integration and Communication
  • Advanced Integrations with Motors, Gears, and Movement
  • DIY Projects and Quick Tips

A Platform for Creating Any Device Imaginable
Created in 2005 by students at the Interaction Design Institute in Italy, Arduinos are microcontrollers that make the creation of interactive electronic devices accessible and fun. In recent years have become a favorite of electronic hobbyists and DIYers because of their ease of use and extremely low cost.

Notable projects include Ardupilot, a UAV platform able to control aerial drones, and Xoscillo, an open-source oscilloscope.

Contents and Overview
This course is designed for anyone interested in learning electronic design. No experience is required, and all you need is an Arduino and several low cost components.

With over 18 hours of content in 102 lectures, this course will take you from zero experience in electronics or programming to Arduino Master.

    • No materials required if you only wish to view the course
    • Computer (Windows, Linux, Mac)
    • An Arduino prototyping board
    • A detailed list of materials is provided in Lesson 1
    • Over 102 lectures and 18 hours of content!
    • Program the Arduino prototyping platform
    • Understand the principles of programming micro-controllers
    • Understand basic principles in electronics desing
    • Understand and use many types of sensors and components
    • Connect your Arduino to the Internet for reporting and controlling
    • Use tools to build electronic devices
    • Anyone with a curiosity for making electronics
    • People with no experience in electronics
    • People with an intermediate knowledge of electronics
    • Children over 12 years old (or younger with supervision)

THE UDEMY GUARANTEE

30 day money back guarantee
Lifetime access
Available on Desktop, iOs and Android
Certificate of completion

CURRICULUM

  • SECTION 1:
    Getting started with the Arduino
  • 1
    Introduction
    01:54
    This is the introduction to the course, what it's about, and a bit about Peter.


    List of parts

    This is a Google sheet that contains the parts I am using in the demonstrations in this course. Use this sheet when you are shopping for parts.

    Source code

    The source code for all sketches is available for view or download on Github. Feel free to get this code and play. If you find any errors, or wish to recommend improvements, either email me (peter@arduinosbs.com) or make a push request on Github.

  • 2
    The Arduino ecosystem
    07:50

    Before setting up the "hello world" demo app of the electronics world (the blinking LED), let's have a really quick look at the Arduino ecosystem. The members of this ecosystem are the bits and pieces that come together when you build an Arduino project.

    The Arduino ecosystem is made up of these parts:

    1. The Arduino board
    2. The Arduino IDE
    3. The Arduino core software library ("Arduino language")
    4. Third party software libraries
    5. Shields
    6. Components

    This lecture looks into these parts of the Arduino ecosystem.


    Notes

    1. Here is a complete list of current official Arduino boards.
    2. Download the Arduino IDE.
    3. The Arduino language references page.
  • 3
    Lecture 2 quiz
    6 questions
  • 4
    Tools and prototyping workflow
    07:51

    In this lecture I will show you the tools and process involved in prototyping with the Arduino.

    I will discuss:

    1. The prototyping process
    2. Multimeters
    3. Solderless Breadboards
    4. Jumper wires
    5. Power supplies

    Notes

    • Breadboard power supply from eBay.
    • An Arduino battery pack from eBay.
  • 5
    Lecture 3 quiz
    5 questions
  • 6
    Let's make a light blink!
    11:34
    In this lecture, I discuss the Light Emitting Diode (LED), and make one blink on and off in our first Arduino sketch. I also discuss the structure of an Arduino sketch, and specifically functions and variables.

    Do all diodes emit light? In the start of the video, I mention that "all diodes emit light", not just LEDs. It would have been better to qualify this statement. There is a discussion going on in the Udemy forums about this, which I encourage you to read and participated if you are interested in this topic.I am looking into the literature to better understand the light emission process before I can "safely" revise this video. I hope I am not confusing you too much with this.

    Notes:

    1.Light Emitting Diodes on Electronics Club

    2.Diodes from Wikipedia.

    3.Arduino language reference, a list of the core functions in the Arduino language.

    Parts

    * An LED.

    * A resistor.

  • 7
    Lecture 4 quiz
    3 questions
  • 8
    Make the LED fade on and off
    04:39

    In Lecture 4, 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.

    What we want to do in this lecture, is to make the LED not blink but fade on and off. We will be keeping the exact same circuit, and we'll only change the sketch to make this happen.

    Parts

    * An LED.

    * A resistor.

  • 9
    Lecture 5 quiz
    3 questions
  • SECTION 2:
    Sensors
  • 10
    About sensors
    03:03
    This is a short introduction to the world of sensors. I enumerate the sensors that I'll be showing you in this section, and then get straight into it!
  • 11
    Measuring light
    08:29
    In this lecture, you will learn about how to detect and measure light using a photo-resistor. You will also learn about a common technique in electronics, the voltage divider. You will put all this in practice in a simple Arduino circuit.

    Notes

    1. More about voltage dividers.

    2. More about photoresistors.

    Parts

    * A photoresistor. Get them in bulk.

  • 12
    Temperature and humidity
    07:09

    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. You will also learn about the dielectric property of certain materials, and of how to include an external software library to your Arduino sketch.

    Notes:

    1. The dielectric phenomenon.
    2. The pull-up resistor.
    3. The DHT library on Adafruit's Github page.

    Parts

    * The DHT22 or DHT11 sensor. You can get it from eBay.

    * A resistor.

  • 13
    Lecture 8 Quiz
    6 questions
  • 14
    Barometric pressure sensors
    07:11
    This lecture discusses barometric pressure and how you can measure it with the BPM085 sensor. You will also learn about the I2C communications interface that this sensor uses to communicate with the Arduino,

    Notes

    1. About atmospheric pressure.
    2. The piezo-electric property.
    3. The Adafruit BMP085 library on Github.

    Parts

    * The BPM085 barometric pressure sensor from eBay.

  • 15
    Lecture 9 quiz
    4 questions
  • 16
    Infrared motion sensors
    09:03

    In this lecture, we will connect a passive infrared sensor to our Arduino, calibrate it, and turn an LED on every time motion is detected. We also discuss the different technologies used to detect motion.

    Notes:

    1. The Doppler effect.

    2. More technical details for the PIR sensor.

    Parts

    * HC-SR501 passive infrared sensor from eBay.

    * A resistor

    * An LED.

  • 17
    Lecture 10 Quiz
    4 questions
  • 18
    Ultrasonic distance sensor
    10:10
    In this lecture you will learn about how to measure distance using an ultrasonic distance sensor. This is a fairly sophisticated sensor that carries out a quite involved function when it comes to the physics of its implementation, however, as you will see, its application is as simple as it can be. You will also learn how to use a more advanced function of the Arduino language, the pulseIn function, through which you can time external events.

    Notes:

    1. Principles of the sonar.

    2. More about ultrasonic sensors.

    3. More about the pulseIn function.

    Parts

    * HC-SR04 ultrasonic distance sensor from eBay.

  • 19
    Lecture 11 Quiz
    3 questions
  • 20
    Detecting acceleration
    06:36

    In this lecture, you will learn how to use a common 3-axis accelerometer, the ADXL335, to accurately measure the acceleration applied to an object. At the end of the lecture, you will be invited to create your first non-trivial circuit using this accelerometer.

    Notes:

    1. Newton's Second Law.

    2. Product details for the ADXL335 sensor.

    Parts

    * The ADXL335 sensor from eBay.

  • 21
    Lecture 12 questions
    2 questions
  • 22
    Line sensor (infrared)
    03:36

    In this lecture, we look at the infrared line sensor, a sensor that can detect the reflection of infrared light that it emits of nearby objects. Sensors like this are used in toy robots, for detecting colour, tracking objects, even in measuring pulse in medical equipment.

    Notes:

  • 23
    Lecture 13 exercises
    2 questions
  • 24
    Tilt and impact
    08:53

    In this lecture, you will learn how to use a simple sensor that can detect the shock of an impact or being upside down. Even though in an earlier lecture we learned about the accelerometer, a sensor that can give us a lot of details about impact and the forces applied to it from which we can derive information about orientation, sometimes our needs are simple enough no not warrant using something as sophisticated as that. A simple switch that engages depending on its orientation or if something hits it is enough in such cases.

    Notes:

    1. A great tutorial on soldering electronics.

    2. How to use the "else" conditional instruction in the Arduino language, from the Arduino reference web site. You will need this for one of the exercises from this lecture.

    Parts

    * A cylindrical tilt and impact sensor from eBay.

  • 25
    Lecture 14 exercises
    3 questions
  • SECTION 3:
    Interaction
  • 26
    Buttons
    06:18

    Buttons are everywhere!

    This lecture will show you how to use a push button. You will assemble a circuit where pressing a button turns on an LED. You will also learn about the different kinds of buttons that you can use in your projects.

    Parts

    * Mini push button. Here is an example from eBay.

    * Red LEDs. Example.

    * Resistors. You can purchase them in bulk.

  • 27
    Lecture 11 questions
    1 question
  • 28
    Potentiometer
    07:25

    In this lecture I'll show you how to use a potentiometer.

    I will also explain how potentiometers work, and what Pulse Width Modulation is, avery useful feature in some of Arduino's digital pins (which we have used in an earlier lecture but did not explain).

    Parts

    * A linear rotary potentiometer. Buy in lots of 10 or more.

    * An LED.

    * A resistor.

  • 29
    Lecture 16 questions
    1 question
  • 30
    The flex sensor
    04:56

    This lecture shows you how to use a flex sensor, a device for which the resistance changes when it is bent.

    Parts

    * A flex sensor, from Sparkfun.

    * A resistor.

  • 31
    Lecture 17 Quiz
    2 questions
  • 32
    Membrane potentiometer
    04:12

    This lecture shows you how to use a membrane potentiometer, a device electricaly similar to a regular rotary potentiometer but where instead of rotating a knob in order to change the resistance of the middle pin, you can slide your finger over the sensor's surface.

    Parts

    * A membrane potentiometer from Sparkfun.

  • 33
    Lecture 18 exercises
    2 questions
  • 34
    Making noise with a buzzer
    05:26

    Generating simple tones with this little buzzer is very easy. In this lecture I'll show you how.

    Parts

    * A passive buzzer from ebay.

    * A potentiometer.

  • 35
    Lecture 19 exercises
    1 question
  • 36
    Direct current motors, Part 1
    18:12

    In this lecture I will show you how to use a DC motor through a series of demos. All involve two geared DC motors (why use just one when we can use two?) and a motor break-out circuit. I’ll explain what these are in a minute. Here’s what we are going to build in this lecture:

    • First, we’ll just hook the motors to the Arduino via the motor break-out board, and make them spin in a single direction. This is part 1 of 3.
    • Second, we’ll get the motors spinning forwards and backwards using a potentiometer as a controller. This is part 2 of 3.
    • Third, we’ll use an ultrasonic sensor to get the motors to spin faster or slower depending on the distance between the sensor and an object in front of it. This is part 3 of 3.

    Because this lecture turned out to be massive, I have broken it into three parts.

    Parts

    * A DC motor, perhaps from an old toy, or a new one with a gearbox from ebay.

    * A motor controller board containing the L298N IC, from ebay.

    * A battery powerpack (preferred) or external power supply that can provide 10V-18V.

    * A potentiometer.

  • 37
    Exercises for Lecture 20
    2 questions
  • 38
    Direct current motors, Part 2
    08:00

    This is Part 2 of the lecture on the direct current motor. In this part, you will learn about how to control the speed and direction of rotation of a motor using a potentiometer.

    Parts

    * A DC motor, perhaps from an old toy, or a new one with a gearbox from ebay.

    * A motor controller board containing the L298N IC, from ebay.

    * A battery powerpack (preferred) or external power supply that can provide 10V-18V.

    * A potentiometer.

  • 39
    Exercises for Lecture 21
    2 questions
  • 40
    Direct current motors, Part 3
    12:05

    This is Part 3 of the lecture on the direct current motor. In this part, you will learn about how to control the speed and direction of rotation of a motor using an ultrasonic distance sensor. After that, you could go ahead and design your fist autonomous driving vehicle.

  • 41
    Exercises for Lecture 22
    2 questions
  • 42
    Servo motors, Part 1
    15:22

    In this Lecture, we will learn about how to use a servo motor. We will use both the build-in servo motor library that comes standard with the Arduino IDE, and a third party library that adds a bunch of very useful features.

    Parts

    Here's a list of parts from eBay (you can use these as samples - try to find something matching these samples from a source closer to you):

    * Servos. Most of these will work just fine. Price depends on the rated torque, materials used (plastic the least expensive), and bundled accessories.

    * Capacitors: here's the one I used in my demos. You can use alternatives, as long as they are not smaller.

    * Potentiometer: You could use something like this.


    Building servo library documentation

    Here is the documentation for the Arduino IDE build-in servo library: http://arduino.cc/en/reference/servo

    Servo library

    Here is the Github page for the VarSpeedDemo library: https://github.com/netlabtoolkit/VarSpeedServo

  • 43
    Servo motors, Part 2
    11:14

    This is part 2 of the lecture on the servo motor in which I show you how to use a third party library that adds a bunch of very useful features on top of what is available through the build-in servo library.

    Parts

    Here's a list of parts from eBay (you can use these as samples - try to find something matching these samples from a source closer to you):

    * Servos. Most of these will work just fine. Price depends on the rated torque, materials used (plastic the least expensive), and bundled accessories.

    * Capacitors: here's the one I used in my demos. You can use alternatives, as long as they are not smaller.

    * Potentiometer: You could use something like this.

    Building servo library documentation

    Here is the documentation for the Arduino IDE build-in servo library: http://arduino.cc/en/reference/servo

    Servo library

    Here is the Github page for the VarSpeedDemo library: https://github.com/netlabtoolkit/VarSpeedServo

  • 44
    Lecture 23 and 24 Exercises
    1 question
  • 45
    LCD character screen, Part 1
    14:40

    This 2-part lecture will show you how to connect and use and LCD character screen. In part 1, I'll show you how to wire up the screen and display a message on it. And in part 2, we'll connect a sensor and display its readings to the screen.

    Parts

    * An LCD screen. Something like this will do. No need for a shield unless you really want to. Also, best NOT to buy an 2x8 screen since those come with their pins arranged in two rows which makes it a big pain to connect to your Arduino. When pins are arranged in two rows, you can't use a breadboard as is, you will need to make an adaptor. Avoid!

    * The DHT22 or DHT11 sensor.

    * A potentiometer. Something like this or equivelant will do.

    Documentation

    Here is the LiquidCrystal library documentation.

  • 46
    LCD character screen, Part 2
    07:50

    This is part 2 of the lecture on the LCD screen. In this lecture, we expand the project from part 1 by adding a DHT22 sensor and displaying its readings to the screen.

    Parts

    * An LCD screen. Something like this will do. No need for a shield unless you really want to. Also, best NOT to buy an 2x8 screen since those come with their pins arranged in two rows which makes it a big pain to connect to your Arduino. When pins are arranged in two rows, you can't use a breadboard as is, you will need to make an adaptor. Avoid!

    * The DHT22 or DHT11 sensor.

    * A potentiometer. Something like this or equivelant will do.

    Documentation

    Here is the LiquidCrystal library documentation.

  • 47
    Lectures 25 and 26 Exercises
    1 question
  • 48
    LCD TFT screen
    16:41

    In this lecture, I show you have to add a TFT LCD screen to your Arduino project in order to produce colourful text and shapes. The lecture contains two demos in which I demonstrate one of the common TFT LCD shields. In the first one, I show you how to use the screen itself, while in the second how to use the 5-button joystick that is integrated into the screen shield.

    Parts

    * Apart from the Arduino Uno or compatible, you will need a TFT LCD screen. The one I used, is this.

    Documentation

    The documentation for the screen I use in this lecture is here.

  • 49
    Lecture 27 Exercises
    1 question
  • 50
    Keypad, Part 1: Introduction
    04:05

    In this lecture, I will demonstrate how to connect a common 4x4 membrane keypad that contains numbers, letters “A”, “B”, “C”, and “D”, a “*” and a “#”. I will do it in two ways. First, I’ll use the keypad library that comes with the Arduino IDE in a sketch that reads the keypad, while the keypad is connected in parallel. In demo 2 I will show you how to hack together a solution that allows a connection that uses a single signal pin.

    Parts

    * A membrane keypad, something like this from ebay.

    * Various resistors, I prefer those with 1% tolerance. Typically resistors are sold in a package containing multiple values, like these.

    * Diodes. Anything you have should do. I used these.

    Documentation

    The Keypad library, used in Demo 1, is documented here.

  • 51
    Keypad, Part 2: Parallel connection wiring
    12:24

    This is Part 2 of 5 of the keypad lecture. In this lecture, I will go through the parallel wiring for the keypad. In Part 3 I explain the sketch that works with this hardware configuration.

    Parts

    * A membrane keypad, something like this from ebay.

    * Various resistors, I prefer those with 1% tolerance. Typically resistors are sold in a package containing multiple values, like these.

    * Diodes. Anything you have should do. I used these.

    Documentation

    The Keypad library, used in Demo 1, is documented here.

  • 52
    Keypad, Part 3: Parallel connection sketch
    05:14

    This is Part 3 of 5 of the keypad lecture. Here I describe the sketch that works with the parallel wiring of the keypad. This configuration was demonstrated in Part 2.

    Parts

    * A membrane keypad, something like this from ebay.

    * Various resistors, I prefer those with 1% tolerance. Typically resistors are sold in a package containing multiple values, like these.

    * Diodes. Anything you have should do. I used these.

    Documentation

    The Keypad library, used in Demo 1, is documented here.

  • 53
    Keypad, Part 4: Single wire connection
    12:35

    This is Part 4 of 5 of the keypad lecture. Here I describe an alternative way to connect the keypad that only uses one signal wire. The single wire configuration concludes in Part 5.

    Parts

    * A membrane keypad, something like this from ebay.

    * Various resistors, I prefer those with 1% tolerance. Typically resistors are sold in a package containing multiple values, like these.

    * Diodes. Anything you have should do. I used these.

    Documentation

    The Keypad library, used in Demo 1, is documented here.

  • 54
    Keypad, Part 5: Single wire connection conclusion
    11:32

    This is Part 5 of 5 of the keypad lecture. Here I conclude the discussion of the single wire connection configuration.

    Parts

    * A membrane keypad, something like this from ebay.

    * Various resistors, I prefer those with 1% tolerance. Typically resistors are sold in a package containing multiple values, like these.

    * Diodes. Anything you have should do. I used these.

    Documentation

    The Keypad library, used in Demo 1, is documented here.

  • 55
    Exercise for Lectures 28-32
    1 question
  • SECTION 4:
    Ethernet and Internet communications
  • 56
    The Ethernet shield, Part 1
    24:08

    In this 2-part lecture I will show you how to get your Arduino gadget to speak to the Internet! In part 1, I will show you how to connect your Ethernet shield, and how to make your Arduino part of your local network. Specifically, I will show you how to connect to the network by automatically acquiring an IP address via DHCP, or how to acquire an IP address manually.

    In the 2nd part, I will show you how to turn on and off an LED, and to read light intensity through a Telnet connection to your Arduino from your computer.

    Parts

    * Arduino Uno

    * Arduino Ethernet shield, like these.

  • 57
    The Ethernet shield, Part 2
    14:17

    In this 2-part lecture I will show you how to get your Arduino gadget to speak to the Internet!

    In part 1, I will showed you how to connect your Ethernet shield, and how to make your Arduino part of your local network. Specifically, I will show you how to connect to the network by automatically acquiring an IP address via DHCP, or how to acquire an IP address manually.

    In this 2nd part, I will show you how to turn on and off an LED, and to read light intensity through a Telnet connection to your Arduino from your computer.

    Parts

    * Arduino Uno

    * Arduino Ethernet shield, like these.

    * An LED

    * A 1kΩ resistor

  • 58
    Exercises for Lectures 33 and 34
    2 questions
  • 59
    A simple Arduino reporting web server, Part 1
    05:04

    In this lecture, we’ll look into the scenario of using a web server running on the Arduino that reports values from its sensors.

    In part 1 (of 3), I discuss the basic principals of running a web server on the Arduino.

    In part 2, we will examine the web server example that comes with the Arduino IDE.

    In part 3, we look at a custom web server that reports temperature, humidity, and light intensity.

    Parts

    To complete the experiments in all three parts of this lecture, you will need:

    * An Arduino

    * An Arduino Ethernet shield

    * A DHT11 or 22 sensor

    * A photo-resistor

    * A 10KΩ resistor

    Resources

    Keep these sites handy for additional information:

    * http://ascii.cl, for information on the ASCII codes table

    * http://arduino.cc/en/Reference/Char: Documentation for the char data type

    * http://arduino.cc/en/Reference/Ethernet: Documentation for the Ethernet library

    * http://requestb.in, for inspecting HTTP requests

    * https://developers.google.com/chrome-developer-tools/, for information on Google Chrome developer tools, especially for Networking

    Sketches

    The sketches shown in this lecture are available on Github.

  • 60
    A simple Arduino reporting web server, Part 2
    19:38

    This is Part 2 (of 3) of the reporting web server lecture.

    In this lecture, we look into the scenario of using a web server running on the Arduino that reports values from its sensors.

    In part 1 (of 3), I discuss the basic principals of running a web server on the Arduino.

    In part 2, we will examine the web server example that comes with the Arduino IDE.

    In part 3, we look at a custom web server that reports temperature, humidity, and light intensity.

    Parts

    To complete the experiments in all three parts of this lecture, you will need:

    * An Arduino

    * An Arduino Ethernet shield

    * A DHT11 or 22 sensor

    * A photo-resistor

    * A 10KΩ resistor

    Resources

    Keep these sites handy for additional information:

    * http://ascii.cl, for information on the ASCII codes table

    * http://arduino.cc/en/Reference/Char: Documentation for the char data type

    * http://arduino.cc/en/Reference/Ethernet: Documentation for the Ethernet library

    * http://requestb.in, for inspecting HTTP requests

    * https://developers.google.com/chrome-developer-tools/, for information on Google Chrome developer tools, especially for Networking

    Sketches

    The sketches shown in this lecture are available on Github.

  • 61
    A simple Arduino reporting web server, Part 3
    10:33

    This is Part 3 (of 3) of the reporting web server lecture.

    In this lecture, we look into the scenario of using a web server running on the Arduino that reports values from its sensors.

    In part 1 (of 3), I discuss the basic principals of running a web server on the Arduino.

    In part 2, we will examine the web server example that comes with the Arduino IDE.

    In part 3, we look at a custom web server that reports temperature, humidity, and light intensity.

    Parts

    To complete the experiments in all three parts of this lecture, you will need:

    * An Arduino

    * An Arduino Ethernet shield

    * A DHT11 or 22 sensor

    * A photo-resistor

    * A 10KΩ resistor

    Resources

    Keep these sites handy for additional information:

    * http://ascii.cl, for information on the ASCII codes table

    * http://arduino.cc/en/Reference/Char: Documentation for the char data type

    * http://arduino.cc/en/Reference/Ethernet: Documentation for the Ethernet library

    * http://requestb.in, for inspecting HTTP requests

    * https://developers.google.com/chrome-developer-tools/, for information on Google Chrome developer tools, especially for Networking

    Sketches

    The sketches shown in this lecture are available on Github.

  • 62
    Exercise for lectures 35, 36, 37
    1 question
  • 63
    An Arduino controlling web server
    25:29

    In this lecture, I will show you how to setup a web server on the Arduino that allows you to control LEDs via a web browser. You could replace the LEDs for other devices, like motors, without having to introduce significant changes to the sketch we’ll see here. We will do this in the next lecture (Lecture 39).

    Just like in lecture 35, we first look at the HTTP request parsing issues that we will need to deal with before implementing the controlling web server sketch. Because the web browser will be sending information with instructions to the Arduino, the Arduino’s web server HTTP parser will have a lot more work to do.

    Parts

    * An Arduino

    * An Arduino Ethernet shield

    * One red LED

    * One yellow LED

    * Two 10KΩ resistors

    * Four jumper wires

  • 64
    Exercises for Lecture 38
    3 questions
  • 65
    Controlling a motor with a web browser
    16:40

    In this lecture, I’ll show you how to send HTTP GET requests that contain values other than 1s and 0s as we did in the previous Lectures. To do that I will demonstrate how you can control a DC motor through your web browser. Motor control requires sending direction and speed values to the Arduino from your web browser, and this adds realism to our controlling web server.

    Parts

    * An Arduino

    * An Arduino Ethernet shield

    * One or two DC motors

    * An L298N motor control bridge

    * A battery pack with 4 x 1.5V AA bateries or a 18V-9V power supply

    * A bunch of jumper wires

  • 66
    Exercises for Lecture 39
    2 questions
  • 67
    Web logging to Nimbits, Part 1
    08:58

    In this lecture I show you how to use a cloud logging service, Nimbits, to record your Arduino's sensor data. Nimbits is one of several such services, but I prefer it to others because it is fully open-source software, which means that you can even setup your own logging server with Nimbits.

    In part 1 of this lecture, I will talk a bit about logging services and show you how to setup your Nimbits account.

    In part 2, I will walk through the logging sketch and post photo-resistor values to Nimbits.

    IMPORTANT PLEASE READ BEFORE WATCHING THIS LECTURE:

    Nimbits has release a new version of their API which has rendered part of this lecture out of date. I will update this lecture accordingly, however in the mean time please know that:

    1) Posting of data requires that the data is in JSON format. Here's an example.

    2) An Arduino library has been released to make it very easy to work with Nimbits without having to construct the HTTP body manually as I show in this lecture)

    Sorry about this, I will try to upload to update as soon as possible.

    Parts

    * An Arduino

    * An Arduino Ethernet shield

  • 68
    Web logging to Nimbits, Part 2
    18:47

    In this lecture I show you how to use a cloud logging service, Nimbits, to record your Arduino's sensor data. Nimbits is one of several such services, but I prefer it to others because it is fully open-source software, which means that you can even setup your own logging server with Nimbits.

    In part 1 of this lecture, I will talk a bit about logging services and show you how to setup your Nimbits account.

    In part 2, I will walk through the logging sketch and post photo-resistor values to Nimbits.

    IMPORTANT PLEASE READ BEFORE WATCHING THIS LECTURE:

    Nimbits has release a new version of their API which has rendered part of this lecture out of date. I will update this lecture accordingly, however in the mean time please know that:

    1) Posting of data requires that the data is in JSON format. Here's an example.

    2) An Arduino library has been released to make it very easy to work with Nimbits without having to construct the HTTP body manually as I show in this lecture)

    Sorry about this, I will try to upload to update as soon as possible.

    Parts

    * An Arduino

    * An Arduino Ethernet shield

  • 69
    Exercise for lecture 40 and 41
    1 question
  • 70
    Social logging to Twitter
    16:32

    In this lecture I will show you how to post your Arduino sensor data to Twitter using the arduinoTweet proxy server and library. You can setup your own instance of this proxy on your own server (you can use a free virtual server on Google's App Engine cloud service) so that you can control privacy and access, or use public instances like arduino-tweet.appspot.com or my own asbs-twitter.appspot.com.

    In this lecture, I'll show you how to set up your tweeting Arduino using asbs-twitter.appspot.com as the proxy. In the first demo, you will learn about getting the first tweet out there, and in the second, to post sensor data.

    Parts

    * An Arduino Uno

    * An Arduino Ethernet shield

    * An analog sensor, which ever you have handy.

    Other resources:

    * The Github repository that contains the proxy software in case you want to install your own: https://github.com/NeoCat/ArduinoTweetLib-server

    * The Arduino SbS Arduino-Twitter proxy service: http://asbs-twitter.appspot.com/

  • 71
    Exercise for lecture 42
    1 question
  • SECTION 5:
    Bonus materials!
  • 72
    Wireless connectivity with Bluetooth, Part 1
    12:34

    In this lecture, you will learn how to use a Bluetooth breakout board to create a wireless serial connection between your computer and your Arduino. With this connection, your Arduino will be able to send and receive data to and from your computer.

    There are 2 parts in this lecture. In the first part, I discuss some basic concepts around Bluetooth, and compare with other wireless technologies, then in demo 1, I demonstrate how to connect the breakout board with the Arduino and establish a serial channel.

    In the second part there are 2 demos. In the first demo, I show how to do 2-way communication, and in the second demo I how to use software serial (instead of hardware serial as in demos 1 and 2).

    Parts

    * An Arduino Uno,

    * An LED

    * A photo-resistor (or other analog sensor)

    * 2 x 1KΩ resistors

    * A Bluetooth breakout board, like the one I used (HC-06).

  • 73
    Wireless connectivity with Bluetooth, Part 2
    09:51

    In this lecture, you will learn how to use a Bluetooth breakout board to create a wireless serial connection between your computer and your Arduino. With this connection, your Arduino will be able to send and receive data to and from your computer.

    There are 2 parts in this lecture. In the first part, I discuss some basic concepts around Bluetooth, and compare with other wireless technologies, then in demo 1, I demonstrate how to connect the breakout board with the Arduino and establish a serial channel.

    In the second part (this) there are 2 demos. In the first demo, I show how to do 2-way communication, and in the second demo I how to use software serial (instead of hardware serial as in demos 1 and 2).

    Parts

    * An Arduino Uno,

    * An LED

    * A photo-resistor (or other analog sensor)

    * 2 x 1KΩ resistors

    * A Bluetooth breakout board, like the one I used (HC-06).

  • 74
    Exercises for lectures 33-34
    3 questions
  • 75
    Reading and writing to an SD card, Part 1 of 3
    13:56

    In this 3-part lecture, I will show you how to take advantage of SD card mass storage using a cheap (less than $2 on eBay) breakout.

    SD cards have matured over the years. Their sizes have expanded to many gigabytes, and their prices have dropped to a few cents per gigabyte. Compared to build-in memory, SD cards offer a really good mass storage solution. On the Arduino, an SD card can be used with the appropriate hardware extension and with an easy to use library that comes with the IDE. Your Arduino Ethernet shield comes with a micro-SD card slot, but you can also get them as a separate breakout board. In this lecture, I opted to use a dedicated, small and cheap break-out board.

    In Part 1, I will show you how to connect the SD card module to the Arduino, format an SD card, and verify that it can be used.

    Parts

    * An Arduino

    * An SD Card socket reader/writer (like these from ebay)

    * A bunch of jumper wires

  • 76
    Reading and writing to an SD card, Part 2 of 3
    10:31

    In this 3-part lecture, I will show you how to take advantage of SD card mass storage using a cheap (less than $2 on eBay) breakout.

    In Part 2, I will show you how to store sensor measurement data to the SD card, and import to Excel for charting.

    Parts

    * An Arduino

    * An SD Card socket reader/writer (like these from ebay)

    * A bunch of jumper wires

  • 77
    Reading and writing to an SD card, Part 3 of 3
    09:48

    In this 3-part lecture, I will show you how to take advantage of SD card mass storage using a cheap (less than $2 on eBay) breakout.

    In Part 3, I will show you how to use a recursive function in order to excaustively traverse files and directories.

    Parts

    * An Arduino

    * An SD Card socket reader/writer (like these from ebay)

    * A bunch of jumper wires

  • 78
    Exercise for Lectures 45, 46, 47
    1 question
  • 79
    Real time clock, Part 1 of 2
    16:00

    In this 2-part lecture, I’ll show you how to use a typical real time clock with your Arduino. I will be using the DFRobot DS1307 RTC breakout, which I purchased on eBay for around $4. This device, like many others, is based on the popular DS1307 clock IC, and it can do anything you would expect a good clock can do. It counts seconds, minutes, hours, days, years, goes up to 2100 and compensates for leap years.

    In this Lecture 1, I show how to connect the RTC module to the Arduino, set the time, and read the time from it. In Lecture 2, I show how to time-stamp sensor readings and store them in an SD card. Lecture 2 builds on knowledge gained in Lecture 47.

    Parts

    * DF Robot DS1307 (also search for it on eBay)

    * An Arduino Uno

    * Two 1kΩ resistors

    * A photo resistor

    * A thermistor

  • 80
    Real time clock, Part 2 of 2
    07:29

    In this 2-part lecture, I’ll show you how to use a typical real time clock with your Arduino. I will be using the DFRobot DS1307 RTC breakout, which I purchased on eBay for around $4. This device, like many others, is based on the popular DS1307 clock IC, and it can do anything you would expect a good clock can do. It counts seconds, minutes, hours, days, years, goes up to 2100 and compensates for leap years.

    In Lecture 1, I show how to connect the RTC module to the Arduino, set the time, and read the time from it. This this Lecture 2, I show how to time-stamp sensor readings and store them in an SD card. Lecture 2 builds on knowledge gained in Lecture 47.

    Parts

    * DF Robot DS1307 (also search for it on eBay)

    * An Arduino Uno

    * Two 1kΩ resistors

    * A photo resistor

    * A thermistor

  • 81
    Exercises for Lectures 48, 49
    2 questions
  • 82
    Wifi connectivity, Part 1 of 4
    02:45

    In Lecture 33 and 34, you learned about the Arduino Ethernet shield, and connected your Arduino to the Internet. In this lecture, we’ll again connect the Arduino to the Internet, but we’ll do that using Wifi, and go completely wireless!

    For this lecture, I chose the Adafruit CC3000 breakout board, with an on-board ceramic antenna. This product also is It comes as a shield, and with a connector for an external antenna if you need extended range. At around $35, it offers 802.11a/g connectivity, very small size, a nice library, and lots of documentation.

    I will go through 3 demos in this lecture. In the first one (Part 2 of this lecture), we’ll connect the CC3000 to the Arduino and run one of the library’s examples to make sure that it works and that it can connect to our Wifi router. In the second one (Part 3 of this lecture), I’ll show you how to create a Wifi web client, whereby the Arduino will be polling a URL, and fetching a file contains instructions for turning an LED on or off. The polling method has an advantage over the web server method because it is not affected by firewall or NAT restrictions. This means that by polling an external URL to your local network, you will be able to control your Arduino from anywhere in the Internet without having to configure your router to allow access to the Arduino from the outside world.

    In the last one (Part 4 of this lecture) I will show you an adapted version of Demo 2 from lecture 38, where we had a web server running on the Arduino, showing us a simple user interface through which we could turn an LED on and off.

    Parts

    * An Arduino Uno

    * The Adafruit CC3000 Wifi module

    * An LED

    * A 1kΩ resistor

    * Access to a Wifi access point.

    Sketches for this lecture

    * Github

    Resources

    * CC3000 learning materials on the Adafruit web site

    * CC3000 documentation

    * CC3000 library on Github

    * CC3000 SPI documentation by Texas Instrument

  • 83
    Wifi connectivity, Part 2 of 4
    25:32

    In Lecture 33 and 34, you learned about the Arduino Ethernet shield, and connected your Arduino to the Internet. In this lecture, we’ll again connect the Arduino to the Internet, but we’ll do that using Wifi, and go completely wireless!

    For this lecture, I chose the Adafruit CC3000 breakout board, with an on-board ceramic antenna. This product also is It comes as a shield, and with a connector for an external antenna if you need extended range. At around $35, it offers 802.11a/g connectivity, very small size, a nice library, and lots of documentation.

    I will go through 3 demos in this lecture. In the first one (Part 2 of this lecture), we’ll connect the CC3000 to the Arduino and run one of the library’s examples to make sure that it works and that it can connect to our Wifi router. In the second one (Part 3 of this lecture), I’ll show you how to create a Wifi web client, whereby the Arduino will be polling a URL, and fetching a file contains instructions for turning an LED on or off. The polling method has an advantage over the web server method because it is not affected by firewall or NAT restrictions. This means that by polling an external URL to your local network, you will be able to control your Arduino from anywhere in the Internet without having to configure your router to allow access to the Arduino from the outside world.

    In the last one (Part 4 of this lecture) I will show you an adapted version of Demo 2 from lecture 38, where we had a web server running on the Arduino, showing us a simple user interface through which we could turn an LED on and off.

    Parts

    * An Arduino Uno

    * The Adafruit CC3000 Wifi module

    * An LED

    * A 1kΩ resistor

    * Access to a Wifi access point.

    Sketches for this lecture

    * Github

    Resources

    * CC3000 learning materials on the Adafruit web site

    * CC3000 documentation

    * CC3000 library on Github

    * CC3000 SPI documentation by Texas Instrument

  • 84
    Wifi connectivity, Part 3 of 4
    19:34

    In Lecture 33 and 34, you learned about the Arduino Ethernet shield, and connected your Arduino to the Internet. In this lecture, we’ll again connect the Arduino to the Internet, but we’ll do that using Wifi, and go completely wireless!

    For this lecture, I chose the Adafruit CC3000 breakout board, with an on-board ceramic antenna. This product also is It comes as a shield, and with a connector for an external antenna if you need extended range. At around $35, it offers 802.11a/g connectivity, very small size, a nice library, and lots of documentation.

    I will go through 3 demos in this lecture. In the first one (Part 2 of this lecture), we’ll connect the CC3000 to the Arduino and run one of the library’s examples to make sure that it works and that it can connect to our Wifi router. In the second one (Part 3 of this lecture), I’ll show you how to create a Wifi web client, whereby the Arduino will be polling a URL, and fetching a file contains instructions for turning an LED on or off. The polling method has an advantage over the web server method because it is not affected by firewall or NAT restrictions. This means that by polling an external URL to your local network, you will be able to control your Arduino from anywhere in the Internet without having to configure your router to allow access to the Arduino from the outside world.

    In the last one (Part 4 of this lecture) I will show you an adapted version of Demo 2 from lecture 38, where we had a web server running on the Arduino, showing us a simple user interface through which we could turn an LED on and off.

    Parts

    * An Arduino Uno

    * The Adafruit CC3000 Wifi module

    * An LED

    * A 1kΩ resistor

    * Access to a Wifi access point.

    Sketches for this lecture

    * Github

    Resources

    * CC3000 learning materials on the Adafruit web site

    * CC3000 documentation

    * CC3000 library on Github

    * CC3000 SPI documentation by Texas Instrument

  • 85
    Wifi connectivity, Part 4 of 4
    06:59

    In Lecture 33 and 34, you learned about the Arduino Ethernet shield, and connected your Arduino to the Internet. In this lecture, we’ll again connect the Arduino to the Internet, but we’ll do that using Wifi, and go completely wireless!

    For this lecture, I chose the Adafruit CC3000 breakout board, with an on-board ceramic antenna. This product also is It comes as a shield, and with a connector for an external antenna if you need extended range. At around $35, it offers 802.11a/g connectivity, very small size, a nice library, and lots of documentation.

    I will go through 3 demos in this lecture. In the first one (Part 2 of this lecture), we’ll connect the CC3000 to the Arduino and run one of the library’s examples to make sure that it works and that it can connect to our Wifi router. In the second one (Part 3 of this lecture), I’ll show you how to create a Wifi web client, whereby the Arduino will be polling a URL, and fetching a file contains instructions for turning an LED on or off. The polling method has an advantage over the web server method because it is not affected by firewall or NAT restrictions. This means that by polling an external URL to your local network, you will be able to control your Arduino from anywhere in the Internet without having to configure your router to allow access to the Arduino from the outside world.

    In the last one (Part 4 of this lecture) I will show you an adapted version of Demo 2 from lecture 38, where we had a web server running on the Arduino, showing us a simple user interface through which we could turn an LED on and off.

    Parts

    * An Arduino Uno

    * The Adafruit CC3000 Wifi module

    * An LED

    * A 1kΩ resistor

    * Access to a Wifi access point.

    Sketches for this lecture

    * Github

    Resources

    * CC3000 learning materials on the Adafruit web site

    * CC3000 documentation

    * CC3000 library on Github

    * CC3000 SPI documentation by Texas Instrument

  • 86
    Exercise for Lectures 50, 51, 52, 53
    1 question
  • 87
    Single data wire LCD and I2C, Part 1
    15:39

    In Lecture 24, you learned how to display text in a LCD screen. Although this was a simple way to show useful information to the user, the sheer number of wires required to make the LCD screen work makes this solution far from elegant.

    In this lecture, I will show you a much improved solution to the same problem, one that involves a single data wire (plus power).

    To achieve this reduction in total number of wires we have to switch the type of interface we use to connect the screen to the Arduino. Natively, the screen uses a parallel interface, where each of the 8 bits that make up a character encoding uses up a wire. You may remember that in Lecture 24, use used a 4-bit parallel mode instead of the full 8-bits in order to save 4 wires. Still, even 4 wires are too many for transferring data. We also needed wires for power, and for the screen backlit.

    To improve the design, we’ll use an adaptor that allows us to connect the parallel LCD screen to the Arduino using the I2C serial bus.

    The adaptor I’ll use in the demos is the 1602LCD Display I2C board.

    In this part 1, I'll show you how to connect the LCD adaptor to the screen and to the Arduino, and make sure it works.

    In Part 2, I'll show you how to connect a second I2C device to the circuit from Demo 1 (in Part 1 of this lecture). The second device is a real-time clock.

    Parts

    * An Arduino Uno

    * A 16x2 LCD screen

    * A 1602LCD Display I2C board

    * A few jumper wires, including one 4-pin jumper (Dupont) cable for the adaptor.

    Resources

    * I2C bus reference

    * Library

  • 88
    Single data wire LCD and I2C, Part 2
    07:41

    In Lecture 24, you learned how to display text in a LCD screen. Although this was a simple way to show useful information to the user, the sheer number of wires required to make the LCD screen work makes this solution far from elegant.

    In this lecture, I will show you a much improved solution to the same problem, one that involves a single data wire (plus power).

    To achieve this reduction in total number of wires we have to switch the type of interface we use to connect the screen to the Arduino. Natively, the screen uses a parallel interface, where each of the 8 bits that make up a character encoding uses up a wire. You may remember that in Lecture 24, use used a 4-bit parallel mode instead of the full 8-bits in order to save 4 wires. Still, even 4 wires are too many for transferring data. We also needed wires for power, and for the screen backlit.

    To improve the design, we’ll use an adaptor that allows us to connect the parallel LCD screen to the Arduino using the I2C serial bus.

    The adaptor I’ll use in the demos is the 1602LCD Display I2C board.

    In this Part 2, I'll show you how to connect a second I2C device to the circuit from Demo 1 (in Part 1 of this lecture). The second device is a real-time clock.

    Parts

    * An Arduino Uno

    * A 16x2 LCD screen

    * A 1602LCD Display I2C board

    * A few jumper wires, including one 4-pin jumper (Dupont) cable for the adaptor.

    Resources

    * I2C bus reference

    * Library

  • 89
    Exercises for Lectures 54 and 55
    4 questions
  • SECTION 6:
    Advanced topics
  • 90
    Hardware interrupts Part 1: Introduction
    12:16

    This lecture will show you how to use the hardware interrupt. In the this lecture, I will also show you how to use a relevant feature called the Time Interrupt. A hardware interrupt provides the ability to tie a special pin with a function in your sketch that will be executed with priority when the state of the pin changes in a particular way.

    In this first demo, we’ll take the circuit from Lecture 16 and only modify the sketch it so that the LED is lit as a response to an interrupt generated by the button, instead of by polling the state of the button a few million times per second.

    Notes

    * All sketches in this lecture can be downloaded from Github.

    * This is the original TimerOne library.

    * This is the newer version of the TimerOne library that I use in this lecture (documentation).

  • 91
    Hardware interrupts Part 2: Using volatile variables
    05:17

    This lecture will show you how to use the hardware interrupt. In the this lecture, I will also show you how to use a relevant feature called the Time Interrupt. A hardware interrupt provides the ability to tie a special pin with a function in your sketch that will be executed with priority when the state of the pin changes in a particular way.

    In the second demo, we’ll add a volatile variable which the code in the interrupt request function will be able to access and update.

    This variable will keep track of the number of times that we have pressed on the button.

    Notes

    * All sketches in this lecture can be downloaded from Github.

    * This is the original TimerOne library.

    * This is the newer version of the TimerOne library that I use in this lecture (documentation).

  • 92
    Hardware interrupts Part 3: Timers
    05:07

    This lecture will show you how to use the hardware interrupt. In the this lecture, I will also show you how to use a relevant feature called the Time Interrupt. A hardware interrupt provides the ability to tie a special pin with a function in your sketch that will be executed with priority when the state of the pin changes in a particular way.

    In this demo, we’ll make an LED blink by setting a timer to trigger an interrupt once every second.

    Notes

    * All sketches in this lecture can be downloaded from Github.

    * This is the original TimerOne library.

    * This is the newer version of the TimerOne library that I use in this lecture (documentation).

  • 93
    Hardware interrupts Part 4: High-definition Pulse Width Modulation
    06:11

    This lecture will show you how to use the hardware interrupt. In the this lecture, I will also show you how to use a relevant feature called the Time Interrupt. A hardware interrupt provides the ability to tie a special pin with a function in your sketch that will be executed with priority when the state of the pin changes in a particular way.

    The TimerOne library also contains several other useful functions that you can explore. One of them provides that ability to create very accurate PWM output. In this fourth demo, I'll show you how to use the TimerOne library to create a PWM pulse.

    Notes

    * All sketches in this lecture can be downloaded from Github.

    * This is the original TimerOne library.

    * This is the newer version of the TimerOne library that I use in this lecture (documentation).

  • 94
    Shift registers Part 1: What are shift registers
    05:34

    In this lecture, I’ll show you how to use shift registers to multiply the available digital outputs. Part 1 is an introduction to shift registers, where I explain how these devices work.

    The source code for the sketches from the two demos is available for download on Github.

    Parts:

    * 2 x 74HC595N shift register chips

    * 16 x 5mm LEDs

    * 2 x 220μF capacitors

    * 16 x 200Ω resistors

  • 95
    Shift registers Part 2: 8-LED circuit
    03:50

    In this lecture, I’ll show you how to use shift registers to multiply the available digital outputs. Part 2 sets up the first demonstration, where the Arduino controls 8 LED via a shift register

    The source code for the sketches from the two demos is available for download on Github.

    Parts:

    * 2 x 74HC595N shift register chips

    * 16 x 5mm LEDs

    * 2 x 220μF capacitors

    * 16 x 200Ω resistors

  • 96
    Shift registers Part 3: 8-LED circuit
    09:27

    In this lecture, I’ll show you how to use shift registers to multiply the available digital outputs. Part 3 concludes the first demonstration, where the Arduino controls 8 LED via a shift register

    The source code for the sketches from the two demos is available for download on Github.

    Parts:

    * 2 x 74HC595N shift register chips

    * 16 x 5mm LEDs

    * 2 x 220μF capacitors

    * 16 x 200Ω resistors

  • 97
    Shift registers Part 4: 16-LED circuit
    07:34

    In this lecture, I’ll show you how to use shift registers to multiply the available digital outputs. Part 4 presents the second demonstration, where the Arduino controls 16 LED via two shift registers connected in daisy-chain.

    The source code for the sketches from the two demos is available for download on Github.

    Parts:

    * 2 x 74HC595N shift register chips

    * 16 x 5mm LEDs

    * 2 x 220μF capacitors

    * 16 x 200Ω resistors

  • 98
    EEPROM (internal and external) Part 1: Basic use
    10:58

    EEPROM stands for “Electrically Erasable Programmable Read-Only Memory”, and you can use it to store data that must be preserved even after power is lost. You could use EEPROM to store configuration values for your sketch that the user can modify, passwords, sensor logs and things of that sort.

    In this first demo, we’ll use two sketches to write and read a pin number for a basic security system. The writing sketch will write the default pin in a specific internal EEPROM memory location, and the reading sketch will simply go to that location and read back the pin. Keeping things simple, we are not going to worry about LCD screens, a keypad for the pin entry, or encryption for storing the pin securely.

    Parts:

    Just your Arduino

    Sketches: At Github

  • 99
    EEPROM (internal and external) Part 2: the EEPROMex library
    05:36

    EEPROM stands for “Electrically Erasable Programmable Read-Only Memory”, and you can use it to store data that must be preserved even after power is lost. You could use EEPROM to store configuration values for your sketch that the user can modify, passwords, sensor logs and things of that sort.

    In this Lecture, I’ll show you a way to abstract the way that data is written to and read from the EEPROM in a bid to speed up your personal productivity.

    Parts:

    Just your Arduino

    Sketches: At Github

  • 100
    EEPROM (internal and external) Part 3: Using an external EEPROM
    10:39

    EEPROM stands for “Electrically Erasable Programmable Read-Only Memory”, and you can use it to store data that must be preserved even after power is lost. You could use EEPROM to store configuration values for your sketch that the user can modify, passwords, sensor logs and things of that sort.

    In this Lecture, I’ll show you how to use the Atmel 24C256 chip, which provides 256KBytes of external EEPROM memory.

    Parts:

    * Arduino Uno

    * Atmel 24C256 breakout

    Sketches: At Github

  • 101
    Stepper motors Part 1: Introduction
    07:31

    This lecture will introduce you to stepper motors.

    In Part 1, I discuss the basics of stepper motors and their most typical configurations.

    All demo sketches are available on Github.

    Parts

    * 12V DC 48 Step motor

    * 5V geared stepper motor with its controller

    * L298N motor controller

    Notes

    * Small stepper motors

    * About DC motors

    * A presentation on stepper motors

    * Stepper motors on Wikipedia

  • 102
    Stepper motors Part 2: Connecting a unipolar un-geared motor
    11:39

    This lecture will introduce you to stepper motors.

    In Part 2, I show you how to wire up and use a unipolar un-geared motor.

    All demo sketches are available on Github.

    Parts

    * 12V DC 48 Step motor

    * 5V geared stepper motor with its controller

    * L298N motor controller

    Notes

    * Small stepper motors

    * About DC motors

    * A presentation on stepper motors

    * Stepper motors on Wikipedia

  • 103
    Stepper motors Part 3: Controlling a unipolar un-geared motor
    06:17

    This lecture will introduce you to stepper motors.

    In Part 3, I show you how to control the speed of an un-geared using a potentiometer.

    All demo sketches are available on Github.

    Parts

    * 12V DC 48 Step motor

    * 5V geared stepper motor with its controller

    * L298N motor controller

    Notes

    * Small stepper motors

    * About DC motors

    * A presentation on stepper motors

    * Stepper motors on Wikipedia

  • 104
    Stepper motors Part 4: Connecting a unipolar geared motor
    05:04
  • 105
    Stepper motors Part 5: Using the AccelStep library
    07:49

    This lecture will introduce you to stepper motors.

    In Part 5, I show how to connect a unipolar geared motor and control it using the AccellStep library.

    All demo sketches are available on Github.

    Parts

    * 12V DC 48 Step motor

    * 5V geared stepper motor with its controller

    * L298N motor controller

    Notes

    * Small stepper motors

    * About DC motors

    * A presentation on stepper motors

    * Stepper motors on Wikipedia

  • 106
    Hardware switch/button debouncing Part 1: Background
    07:16

    In cases where you need to use a push button, relays or switch (or anything mechanical used to close a circuit), like we saw in Lectures 15 and 28, we have a situation where metal comes in contact with metal in order to close the circuit. These contacts are never perfect, and as a result instead of getting one clean connection, you get multiple ones.

    In this lecture, we will look at how we can achieve “de-bouncing”, which means how to get contacts to output a clean signal when they are closing or opening.

    Part 1 is an introduction to debouncing. In Part 2, I show how to use a Schmitt trigger.

    The sketch for the demo in this lecture is available on Github.

    Parts

    * 74HC14 - Schmitt trigger IC

    Notes

    * A Guide to Debouncing, or, How to Debounce a Contact in Two Easy Pages

    * How to de-bounce a switch using CMOS & TTL

    * Schmitt trigger (Wikipedia)

    * The Schmitt trigger inverter

  • 107
    Hardware switch/button debouncing Part 2: Demo
    08:51

    In cases where you need to use a push button, relays or switch (or anything mechanical used to close a circuit), like we saw in Lectures 15 and 28, we have a situation where metal comes in contact with metal in order to close the circuit. These contacts are never perfect, and as a result instead of getting one clean connection, you get multiple ones.

    In this lecture, we will look at how we can achieve “de-bouncing”, which means how to get contacts to output a clean signal when they are closing or opening.

    Part 1 was an introduction to debouncing. In this Part 2, I show how to use a Schmitt trigger.

    The sketch for the demo in this lecture is available on Github.

    Parts

    * 74HC14 - Schmitt trigger IC

    Notes

    * A Guide to Debouncing, or, How to Debounce a Contact in Two Easy Pages

    * How to de-bounce a switch using CMOS & TTL

    * Schmitt trigger (Wikipedia)

    * The Schmitt trigger inverter

  • 108
    Using the build-in pull-up resistors
    07:16

    In this lecture, I show how to use the Atmega's internal pull-up resistor on it's output pins. This is a convenience feature that will save you from having to use external pull-up resistors.

    The sketch for the demo is available from Github.

  • 109
    Memory management Part 1: Introduction and Flash
    05:48

    In this lecture, we’ll look at some design and programming principles you can follow to make better use of your Arduino’s limited memory resources.

    This is Part 1, and it discusses ways to optimize the use of the Flash memory.

    Resources

    * Arduino memory from Arduino.cc

    * The MemoryFree library

    * Memory management on HackShed

  • 110
    Memory Management Part 2: Static RAM
    07:52

    In this lecture, we’ll look at some design and programming principles you can follow to make better use of your Arduino’s limited memory resources.

    This is Part 2, and it discusses ways to optimize the use of the SRAM memory.

    Resources

    * Arduino memory from Arduino.cc

    * The MemoryFree library

    * Memory management on HackShed

  • 111
    Seven Segment LED Displays, Part 1: Intro and assembly
    11:31

    In this lecture, we will build on our knowledge from Lecture 60, where you learned how to use a shift register in order to control multiple LEDs using only three wires: one for data, one for clock, and one for the latch. Because there are so many SSD out there, I will assume that you don’t have your particular display’s datasheet and have no idea which pin controls the pins. I will describe the process of figuring out the correct wiring and then constructing the numerical symbols in the sketch.

    In part one, I show you how to assemble the circuit. In part two, I discuss the sketch.

    The sketch(es) used in this lecture are available on Github.

    Parts:

    * Arduino Uno

    * A common anode seven segment LED display

    * A 9-volt battery or battery pack, or an external power supply that can provide 9 to 15V power.

    * A 595 shift register (you can reuse this part from lecture 60)

    * A 1.5V coin battery

    * A 5mm LED

    * Lot's of jumper wires

    * A mini breadboard

    A list of all parts is available on Google Drive.

  • 112
    Seven Segment LED Displays, Part 2: Sketch
    14:31

    In this lecture, we will build on our knowledge from Lecture 60, where you learned how to use a shift register in order to control multiple LEDs using only three wires: one for data, one for clock, and one for the latch. Because there are so many SSD out there, I will assume that you don’t have your particular display’s datasheet and have no idea which pin controls the pins. I will describe the process of figuring out the correct wiring and then constructing the numerical symbols in the sketch.

    In part one, I show you how to assemble the circuit. In part two, I discuss the sketch.

    The sketch(es) used in this lecture are available on Github.

    Parts:

    * Arduino Uno

    * A common anode seven segment LED display

    * A 9-volt battery or battery pack, or an external power supply that can provide 9 to 15V power.

    * A 595 shift register (you can reuse this part from lecture 60)

    * A 1.5V coin battery

    * A 5mm LED

    * Lot's of jumper wires

    * A mini breadboard

    A list of all parts is available on Google Drive.

  • 113
    Bare-bones Arduino Part 1: Intro and power circuit
    08:46

    The objective of this lecture is to build a “bare bones” Arduino on a breadboard, understand the basic principles under which the fundamental components work, and use our new skills to make our our Arduino clones!

    Being able to make your own Arduinos is useful from both a cost and practicality perspective. Say, for example, that you want to create a monitoring system for your home which includes 10 Arduino modules with sensors and some kind of wireless communication capability to a base station (also an Arduino). If you use the cheapest official Arduino, the Uno, you will need at least $300 just for that. The Uno also contains component that you don’t need for your project, like the USB interface, the various headers, even the LEDs are not really needed (plus they consume power). You could build an Arduino clone with exactly the components you need for less than $10.

    In this part 1, I'll show you how to set up the power supply on the breadboard.

    Parts

    You will need (see my spreadsheet for details):

    One Atmega 328P

    16MHz crystal oscillator

    2 x 22 pF capacitors

    2 x 10 uF capacitors

    One 7805 Voltage regulator

    One LED

    One 220Ω resistor

    One push button

    A breadboard and wires

    A power supply that can provide at least 9V power, or a battery pack with 6 AA batteries (my preference)

  • 114
    Bare-bones Arduino Part 2: Atmega, reset and clock
    11:27

    The objective of this lecture is to build a “bare bones” Arduino on a breadboard, understand the basic principles under which the fundamental components work, and use our new skills to make our our Arduino clones!

    Being able to make your own Arduinos is useful from both a cost and practicality perspective. Say, for example, that you want to create a monitoring system for your home which includes 10 Arduino modules with sensors and some kind of wireless communication capability to a base station (also an Arduino). If you use the cheapest official Arduino, the Uno, you will need at least $300 just for that. The Uno also contains component that you don’t need for your project, like the USB interface, the various headers, even the LEDs are not really needed (plus they consume power). You could build an Arduino clone with exactly the components you need for less than $10.

    In this part 2, I'll show you how to add the micro-controller, reset button, and clock oscilator on the breadboard.

    Parts

    You will need (see my spreadsheet for details):

    One Atmega 328P

    16MHz crystal oscillator

    2 x 22 pF capacitors

    2 x 10 uF capacitors

    One 7805 Voltage regulator

    One LED

    One 220Ω resistor

    One push button

    A breadboard and wires

    A power supply that can provide at least 9V power, or a battery pack with 6 AA batteries (my preference)

  • 115
    Bare-bones Arduino Part 3: Power LED and testing
    08:39

    The objective of this lecture is to build a “bare bones” Arduino on a breadboard, understand the basic principles under which the fundamental components work, and use our new skills to make our our Arduino clones!

    Being able to make your own Arduinos is useful from both a cost and practicality perspective. Say, for example, that you want to create a monitoring system for your home which includes 10 Arduino modules with sensors and some kind of wireless communication capability to a base station (also an Arduino). If you use the cheapest official Arduino, the Uno, you will need at least $300 just for that. The Uno also contains component that you don’t need for your project, like the USB interface, the various headers, even the LEDs are not really needed (plus they consume power). You could build an Arduino clone with exactly the components you need for less than $10.

    In this part 3 (last), I'll show you how to add a power indicator LED and test your new breadboard Arduino.

    Parts

    You will need (see my spreadsheet for details):

    One Atmega 328P

    16MHz crystal oscillator

    2 x 22 pF capacitors

    2 x 10 uF capacitors

    One 7805 Voltage regulator

    One LED

    One 220Ω resistor

    One push button

    A breadboard and wires

    A power supply that can provide at least 9V power, or a battery pack with 6 AA batteries (my preference)

  • 116
    Control more devices with a port expander, Part 1: Background and setup
    14:24

    The Arduino Uno has 14 digital I/O pins. That sounds a lot, but it isn’t consider that all these pins are multi-functional, so that they are used for tasks other than pure input/output, like Pulse Width Modulation, serial and SPI communications. We saw in an earlier lecture, number 60, that shift registers can be used to provide us with additional digital outputs.

    But what about additional digital inputs? In this lecture, I’ll show you how to use the MCP23017 IC to easily add a total of 16 digital I/O pins to your Arduino project.

    In this Part 1, I'll describe the basics of the MCP23017 IC, and show you how to wire it up.

    Parts:

    * The MCP23017 IC

    * 2 10KΩ resistors

    * 2 220Ω resistors

    * 1 4.7ΚΩ resistor

    * 2 LEDs

    * 1 push button

    * An Arduino

    * Wires

  • 117
    Control more devices with a port expander, Part 2: more examples
    09:12

    The Arduino Uno has 14 digital I/O pins. That sounds a lot, but it isn’t consider that all these pins are multi-functional, so that they are used for tasks other than pure input/output, like Pulse Width Modulation, serial and SPI communications. We saw in an earlier lecture, number 60, that shift registers can be used to provide us with additional digital outputs.

    But what about additional digital inputs? In this lecture, I’ll show you how to use the MCP23017 IC to easily add a total of 16 digital I/O pins to your Arduino project.

    In this Part 2, I'll show you 2 examples that involve digital input and output functions.

    Parts:

    * The MCP23017 IC

    * 2 10KΩ resistors

    * 2 220Ω resistors

    * 1 4.7ΚΩ resistor

    * 2 LEDs

    * 1 push button

    * An Arduino

    * Wires

  • 118
    Create your own printed circuit boards (PCB), Part 1
    18:22

    In this lecture, I show you how to convert your breadboard circuit design into a professional-looking printed circuit board (PCB). I will use the free PCB design software from Fritzing.

    Once you design your PCB using Fritzing, you can upload it to one of many online PCB fabrication shops around the world. They will manufacture your PCB and send it in the mail within a few weeks of your order.

  • 119
    Create your own printed circuit boards (PCB), Part 2
    20:11

    In this lecture, I show you how to convert your breadboard circuit design into a professional-looking printed circuit board (PCB). I will use the free PCB design software from Fritzing.

    If you haven't watched part 1 yet, make sure you go back and watch it!

    Once you design your PCB using Fritzing, you can upload it to one of many online PCB fabrication shops around the world. They will manufacture your PCB and send it in the mail within a few weeks of your order.

  • 120
    Using Processing (the language) with the Arduino, Part 1
    14:58

    Processing is a programming environment and framework optimised for graphics. It is easy to learn, and great for visualising data that come from your Arduino.

    In this lecture I'll show you how to create a user interface on your computer in which you visualise data transmitted from your Arduino via USB, and how to control an LED on the Arduino from your computer.

    In this Part 1, I introduce Processing and begin the demonstration. In Part 2, I complete the demonstration.

    Resources

    * The Processing Language

    * Open Processing, the place to find Processing sketches

    * Artoo, a Ruby framework for controlling Internet of Things platforms

    * Firmdata, allows a client to connect to the Arduino then use it to send and receive data from the IO ports.

    Circuit

    This is the circuit on which the demo is based. You will need:

    * A DHT sensor

    * 2 x 10KΩ resistors

    * 1 220Ω resistor

    * 1 potentiometer

    * 1 5mm LED

  • 121
    Using Processing (the language) with the Arduino, Part 2
    12:09

    Processing is a programming environment and framework optimised for graphics. It is easy to learn, and great for visualising data that come from your Arduino.

    In this lecture I'll show you how to create a user interface on your computer in which you visualise data transmitted from your Arduino via USB, and how to control an LED on the Arduino from your computer.

    In Part 1, I introduced Processing and begin the demonstration. In this Part 2, I complete the demonstration.

    Resources

    * The Processing Language

    * Open Processing, the place to find Processing sketches

    * Artoo, a Ruby framework for controlling Internet of Things platforms

    * Firmdata, allows a client to connect to the Arduino then use it to send and receive data from the IO ports.

    Circuit

    This is the circuit on which the demo is based. You will need:

    * A DHT sensor

    * 2 x 10KΩ resistors

    * 1 220Ω resistor

    * 1 potentiometer

    * 1 5mm LED

  • 122
    Using the NRF24L01+ transceiver module
    20:16

    In this lecture I show you how to use the cheap and reliable NRF24L01+ transceiver module. With this module you can achieve reliable point to point communications. I am showing you the basics so you can go on creating sophisticated wireless systems, including mesh sensor arrays!

    You can download the sketch used in the demo from Github.

  • 123
    EasyDriver with the NEMA17 stepper motor
    18:29

    In this lecture I show you how to control a NEMA17 stepper motor with the popular EasyDriver breakout board.

    The demo sketches are available from the Arduino SbS Github repository.

  • 124
    Using the TIP22 transistor to control an LED strip
    07:46

    In this lecture, I show you how to use a TIP22 Darlington transistor to drive a 12V LED strip.

    The simple sketch for this lecture is available on the Arduino SbS Github repository.

  • 125
    Relays Part 1: Introduction
    04:56

    In this 5-part lecture, I show you how to work with relays and connect large loads to your Arduino.

    Part 1 contains an introduction to relays.

  • 126
    Relays Part 2: How NOT to control a relay
    15:23

    In this 5-part lecture, I show you how to work with relays and connect large loads to your Arduino.

    In Part 2 I show you how to quickly (but incorrectly) wire a 5V relay to the Arduino.

  • 127
    Relays Part 3: Connect a 12V relay component calculations
    10:10

    In this 5-part lecture, I show you how to work with relays and connect large loads to your Arduino.

    In Part 3 I show you how to calculate the values for the components that are required for the correct wiring of a 12V relay to the Arduino.

  • 128
    Relays Part 4: Connect a 12V relay connections
    07:52

    In this 5-part lecture, I show you how to work with relays and connect large loads to your Arduino.

    In Part 4, I take the component values calculated in Part 3 and complete the wiring of the 12V relay to the Arduino.

  • 129
    Relays Part 5: Relay shields
    04:27

    In this 5-part lecture, I show you how to work with relays and connect large loads to your Arduino.

    In Part 5 I show you a couple of relay shields that are good alternatives to manually wiring relays to the Arduino.

  • 130
    Power management with sleep mode and prescaling
    23:40

    In this lecture, I will show you three ways by which you can extend the life of a battery so that your Arduino-powered device can operate for very long periods of time.

    I will discuss three ways of doing that.

    First, by using a simple library called Narcoleptic, which makes it very easy to place the CPU of the Atmega to sleep mode.

    Second, we will look at the power down mode that is available in AVR microcontrollers by which we can achieve the maximum reduction in power consumption.

    Third, I will show you a technique that can further reduce power consumption in these applications for the periods of time when the microcontroller out of sleep mode. This technique is based on the ability of AVR microcontrollers to change their clock speed.

    The sketches used in this lecture are available on Github.

  • 131
    Control an 8x8 LED matrix display with the MAX7219 controller
    23:05

    In this lecture, I will show you how to use the MAX7219 LED controller IC with a single 8x8 matrix LED display. You can combine these two components together to create large LED matrix displays, but in this lecture we’ll keep it simple. In a separate lecture, we’ll expand to multi-display setups.

    In this Part 1 of the lecture, I’ll show you how to create shapes, simple animations and text on the screen.

    The sketch is available on Github.

  • 132
    Visualise ADXL335 accelerometer data on an 8x8 LED matrix display
    06:57

    In this Part 2 of the MAX7219 lecture, we’ll create a simple visualisation from data coming out of an accelerometer.

    The sketch is available on Github.

  • SECTION 7:
    Quick explorations
  • 133
    A home notification board with a large display
    08:16

    A bit of tinkering with an Arduino and a Freetronics Dot Matrix Display (DMD) resulted to a very annoying, but also amazing communication device and information center. Or at least, it has the potential to be the later.

    The gadget is made of these components:

    1. A Freetronics Dot Matrix Display, which is an array of 16×32 LEDs. They come in different colours, but I use red to emphasise that this gadget is for “critical” notifications.
    2. An Arduino Uno with an Ethernet Shield.
    3. A real-time clock breakout.
    4. A buzzer
    5. A DHT22 temperature and humidity sensor.

    Home Alert is controlled via a web page that is hosted on Heroku, a cloud-based application host.

    I have all the details and a walkthrough on my web site, to supplement this video.

  • 134
    Using a magnetometer to detect motion
    07:33

    If you want to detect motion, a choice is to use a magnetometer. I tested a tiny 3-axis magnetometer with the HMC5883L IC on it.

    I used an Arduino Uno to take readings from the magnetometer and converted them into a bar chart with a bar for each of the X, Y and Z axis. I used the Processing language to grab the data from the Arduino using a USB serial connection and create the visualisation of the data.

    I will be creating a dedicated video for showing you how to use the Processing language, it is a really big topic.

    All the source code is in my Github repository, feel free to check it out and use it.

    Some resources relating to this device:

UDEMY BY THE NUMBERS

5,200,000
Hours of video content
19,000,000
Course Enrollments
5,800,000
Students

RATING

  • 20
  • 0
  • 2
  • 0
  • 1
AVERAGE RATING
NUMBER OF RATINGS
23

REVIEWS

  • Ghaith ALGHAITH
    Extensive and Clear

    Everything is explained clearly with code walkthroughs. I really Liked that Dr.Peter talked about wide range of topics in details. No more Youtube hunting, this is a gold mine for starters and experienced users ! Highly Recommended :)

  • Ameer Almohammed
    One of the best courses in Udamy!

    I consider myself lucky for taking this course...the classes made so easy to understand and use ...I do appreciate the knowledge that Dr. Peter is sharing with us. I can’t wait to finish this class and enroll in Dr. Peter's other classes.

  • Davidd Anthony S
    Amazing!! I love this course & my Arduino.

    Best course I have purchased on uDemy and I have purchase quite a few... Great work!

  • Tony Lapinskas
    video quality

    The computer captured video quality of sketches is slightly blurred on a 14" laptop monitor, it is fatiguing to follow the content.

  • Steve Navazio
    A to Z about Arduino

    Not sure how he can produce so much quality material, he keeps adding so much I can't even keep up watching everything in the course. I've been working with Arduino's for years, but he starts out at the beginning and show the beginner how to get started and progresses to advanced topics.

  • 30 day money back guarantee!
  • Lifetime Access. No Limits!
  • Mobile Accessibility
  • Certificate of Completion