Arduino Step by Step: Your complete guide

Learn how to create electronic projects with the Arduino, the world's friendliest electronics prototyping platform!
  • Lectures 110
  • Video 20 Hours
  • Skill level all level
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion

How taking a course works

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

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.

What are the requirements?

  • 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

What am I going to get from this course?

  • Over 110 lectures and 19 hours of content!
  • Program the Arduino prototyping platform
  • Understand the principles of programming micro-controllers
  • 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
  • Understand basic principles in electronics design

What is the target audience?

  • 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)

What you get with this course?

Not for you? No problem.
30 day money back guarantee

Forever yours.
Lifetime access

Learn on the go.
Desktop, iOS and Android

Get rewarded.
Certificate of completion

Curriculum

Section 1: Getting started with the Arduino
01:54

This is the introduction to the course, what it's about, and a bit about Peter.

List of parts

In the resources (look at the bottom of this box) you can find a link to 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

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

Also...

Please take some time to review any videos in the last section, "Appendices". These videos contain hints, tips and general information that can help you better use this content. I update it as the need arises.

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.
Lecture 2 quiz
6 questions
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.
Lecture 3 quiz
5 questions
11:35
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.

Lecture 4 quiz
3 questions
04:40

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.

Lecture 5 quiz
3 questions
Section 2: 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!
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.

Lecture 7 Quiz
3 questions
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.

Lecture 8 Quiz
6 questions
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.

Lecture 9 quiz
4 questions
09:04

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.

Lecture 10 Quiz
4 questions
10:11
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.

Lecture 11 Quiz
3 questions
06:37

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.

Lecture 12 questions
2 questions
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:

Lecture 13 exercises
2 questions
08:54

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.

Lecture 14 exercises
3 questions
Section 3: Interaction
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.

Lecture 11 questions
1 question
07:26

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.

Lecture 16 questions
1 question
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.

Lecture 17 Quiz
2 questions
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.

Lecture 18 exercises
2 questions
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.

Lecture 19 exercises
1 question
04:06

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.

12:25

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.

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.

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

See External Resources for links to the components I used to eBay.

Documentation

A link to the Keypad library, used in Demo 1, is available in External Resources.

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.

Exercise for Lectures 28-32
1 question
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

08:52

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

Section 4: Displays
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.

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.

Quiz for the LCD Lectures
1 question
15:40

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

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

Exercises for the LCD with I2C lectures
4 questions
16:42

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.

Quiz for the LCD TFT lecture
1 question
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.

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.

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.

06:58

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 5: Motors
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.

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.

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.

Exercises for the Direct Current motor lectures
2 questions
15:23

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

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

Exercises for the servo motor lectures
1 question
07:32

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

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

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

05:05

This lecture will introduce you to stepper motors.

In Part 4, I show how to connect a unipolar 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

07:50

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

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.

Section 6: Ethernet and Internet communications
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.

14:18

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

Exercises for Lectures 33 and 34
2 questions
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.

19:39

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.

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.

Exercise for lectures 35, 36, 37
1 question
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

Exercises for Lecture 38
3 questions
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

Exercises for Lecture 39
2 questions
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

18:48

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

Exercise for lecture 40 and 41
1 question
16:33

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/

Exercise for lecture 42
1 question
Section 7: Wireless communications
12:35

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).

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).

Exercises for lectures 33-34
3 questions
02:46

--------------------------------------------------------------------

PLEASE READ THIS BEFORE CONTINUING!

There seems to be a problem with one of the functions in the library used with the CC3000. There is an active discussion in the forum for lecture 52. Please read this discussion so that you become aware of this issue. I am actively working towards resolving the issue with this library.

--------------------------------------------------------------------

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

25:32

--------------------------------------------------------------------

PLEASE READ THIS BEFORE CONTINUING!

There seems to be a problem with one of the functions in the library used with the CC3000. There is an active discussion in the forum for lecture 52. Please read this discussion so that you become aware of this issue. I am actively working towards resolving the issue with this library.

--------------------------------------------------------------------

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

19:34

--------------------------------------------------------------------

PLEASE READ THIS BEFORE CONTINUING!

There seems to be a problem with one of the functions in the library used with the CC3000. There is an active discussion in the forum for lecture 52. Please read this discussion so that you become aware of this issue. I am actively working towards resolving the issue with this library.

--------------------------------------------------------------------

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

06:59

--------------------------------------------------------------------

PLEASE READ THIS BEFORE CONTINUING!

There seems to be a problem with one of the functions in the library used with the CC3000. There is an active discussion in the forum for lecture 52. Please read this discussion so that you become aware of this issue. I am actively working towards resolving the issue with this library.

--------------------------------------------------------------------

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

10:09

In this lecture, I show you how to upgrade the firmware in your CC3000. It is an easy process: connect your CC3000 module to your Arduino just like you did in the other CC3000 lectures, and run the upgrade sketch from the Arduino IDE v1.0.6 or earlier.

An upgrade to the latest version of the firmware (at the moment, that is 1.14), will fix a problem with the DNS resolution.

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.

Section 8: External storage
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

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

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

Exercise for the SD Card lecture
1 question
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

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

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

Section 9: Taking a closer look at the Atmega microcontroller
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).

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).

05:08

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).

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).

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.

05:49

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

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

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.

Section 10: Integrated circuit peripherals
05:35

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

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

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

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

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

09:13

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

15:53

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

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

Exercises for the real time clock Lectures
2 questions
Section 11: Controlling large loads with relays and friends
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.

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.

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.

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.

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.

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.

Section 12: Topics on prototyping
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)

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)

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)

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.

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.

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

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

17:08

In lecture I discuss how to manage your ever expanding projects by creating a library.

In Part 1, I discuss the process of creating a library and setup the sketch that, in part 2, will be turned into a library.

Instructor Biography

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.

Join the biggest student community

5,900,000

Hours of video content

22,000,000

Course Enrollments

6,500,000

Students

Reviews

Average Rating
4.5
Details
  1. 5 Stars
    24
  2. 4 Stars
    1
  3. 3 Stars
    2
  4. 2 Stars
    1
  5. 1 Stars
    2
    • Chris Remme

    Informative But Distracting

    The course has some good information but I wasn't able to get through all of it because of the VERY distracting background noises. Very unprofessional. I would not recommend this course to a beginner who needs to maintain focus. I would recommend redoing the audio.

    • Jorge De Sousa Pires

    Very pedagogical course, well structured

    Very good course written by a very good teacher that takes a lot of time to explain in the lectures and also in the forum. 5 star teacher! The only reason I gave 4 rather than 5 has to do with the logistic flow, numbering of lectures and demos and a missing search function in Udemy. Which is something that Udemy should look into. As a teacher myself, I would be willing to discuss at some length about logistic flow. Best regards and many thanks to the teacher! /Jorge

    • Keith Hoard

    Outstanding Course, Great Instructor!!

    If you have ever been curious about micro-controllers or Arduino; buy one, get a couple sensors, and then buy this course. Dr. Dalmaris is able to take a complicated subject and break it down into "bite size" chunks. One day you'll be blinking an LED, and three weeks later connecting a Wi-Fi breakout board to your home network. Peter is very active in the student forums and always answers questions in a timely manner. He is also constantly improving his lectures and adding new material to the course. Highly recommended!!

    • Xiaoxiong Xing

    The most complete and comprehensive course on Arduino

    This course introduces a lot of aspects of Arduino. The instructor always answers students' questions in time. Besides, the instructor owns a website http://txplore.com/ where I found a lot of useful stuff about electronics.

    • Charles Rosa

    Really enjoying this course

    Peter (the instructor) is amazingly responsive to all questions. Also, the lectures are great. I really feel like I'm gaining a command of the Arduino for the first time. I really appreciate this class.

Show more reviews
Ready to start learning?
Preview this course