Welcome to a world of creation and innovation!
Welcome to the course! We'll go over what to expect, and most importantly, how to stay safe in the lab. We'll explore what electronics are and look at some cool everyday examples.
We'll learn about three key ideas: Current, Voltage, and Resistance. Imagine electricity like a river: Voltage is the water pressure, Current is the flow of the water, and Resistance is like rocks in the river, slowing the flow down.
We'll get our hands on some fundamental components like the Protoboard, Resistors, LEDs, and Jumper Wires. We’ll learn what they look like and what they’re used for. Datasheet
Protoboard
Resistor
LED
Jumper Wires
We'll learn how to identify different components and how to connect a simple circuit to light up an LED, using a resistor to protect it from too much current.
9V batteries, battery connectors, resistors (220-330 Ohm), various color LEDs, protoboards, jumper wires.
"Light Up Your First LED": Connect an LED to a battery using a resistor on a protoboard.
No project yet, this class is just an introduction!
We'll quickly go over the concepts from the last class and answer any questions you have.
We'll learn what a multimeter is and how to use it to measure voltage, current, and resistance.
We'll get a super simple introduction to Ohm's Law: $V = I \times R$. We'll understand the relationship between voltage, current, and resistance without doing any complex calculations yet.
We'll practice measuring the voltage of a battery, the resistance of a resistor, and checking the continuity of wires.
We'll build a simple circuit with an LED and a resistor, then use the multimeter to measure the voltage at different points and the current flowing through the LED.
Multimeters, batteries, resistors, LEDs, protoboards, jumper wires.
"Circuit Detective": You'll measure values in pre-built circuits (some correct, some with errors) to identify what's wrong.
No project yet.
We'll use an analogy: a microcontroller is like a "mini-computer" that can control physical things. We'll also talk about the difference between a microcontroller and a regular computer.
We'll get a physical look at the ESP32 board, and identify its main parts like the USB port, pins, and reset button. Datasheet
We'll talk about why the ESP32 is a great choice for our projects, especially because of its built-in Wi-Fi and Bluetooth capabilities.
We'll go through a step-by-step guide on how to install the USB drivers and add the ESP32 board to the Arduino IDE's board manager.
ESP32 board (one per student or pair), USB cables, computers with Arduino IDE pre-installed.
"Connect Your Brain": You'll connect the ESP32 to your computer and verify that it's recognized by the operating system.
No project yet.
We'll explore the Arduino IDE interface, the toolbar, and the serial monitor, so you can start writing your own code.
We'll learn about the two main parts of an Arduino sketch: the
setup() function and the loop() function. We'll
explain what each one does.
We'll write, compile, and upload the classic "Blink" code to make the built-in LED on the ESP32 flash on and off.
We'll introduce key coding concepts like pinMode(),
digitalWrite(), and delay(), which are essential for
controlling electronics.
You'll modify the code to change how fast the LED blinks.
ESP32, USB cables, computers.
"Light Rhythm": Change the values in the delay()
function to create different blinking patterns, like a fast flash or the "SOS"
signal.
No project yet.
We'll review the "Blink" program we wrote for the built-in LED.
We'll learn how to connect an external LED to a digital pin on the ESP32 using a resistor on the protoboard.
We'll adapt the Blink code to control the external LED instead of the built-in one.
We'll learn how the pins on the ESP32 can be configured as an output, which means they can send signals to control components like LEDs.
You'll make an external LED blink.
ESP32, protoboards, LEDs, resistors, jumper wires, USB cables, computers.
"Simple Traffic Light": Program three LEDs (red, yellow, green) to turn on in sequence, just like a basic traffic light.
A "Simple Night Light" (a future idea, not for this class).
We'll learn how to read the state of a button, whether it's pressed or not pressed, to give our circuit an input from the physical world.
We'll learn how to connect a button, using an external pull-down resistor or the ESP32's internal pull-up resistor to ensure a stable signal.
We'll use the digitalRead() function to read the state of the
button.
We'll program a circuit where a button can turn an LED on and off.
You'll build a circuit where pressing a button turns on an LED, and releasing it turns it off.
ESP32, protoboards, buttons, LEDs, resistors, jumper wires, USB cables, computers.
"Smart Switch": Program the circuit so that each time you press the button, the LED's state changes (from on to off, or off to on).
A "Click Counter" that displays the number of clicks on the Serial Monitor.
We'll learn how to read variable values (not just ON/OFF) from analog components. [Image of analog signal vs digital sign
We'll learn what a potentiometer is, how it works, and how to connect it to an analog pin on the ESP32. Datasheet
We'll use the analogRead() function to read the variable value from
the potentiometer. We'll also use the Serial Monitor to print the values and
understand the range (0-4095 for ESP32).
You'll read the value of a potentiometer and display it in the Serial Monitor.
ESP32, protoboards, potentiometers, jumper wires, USB cables, computers.
"Light Volume": Use the potentiometer to control the brightness of an LED.
A "Manual Brightness Control" for a light.
We'll learn what an LDR is and how it works. We'll connect it in a voltage divider circuit so the ESP32 can read its value with an analog pin. Datasheet
We'll create a "light sensor" that can detect if it's light or dark.
We'll read the LDR's value and use conditional statements (if/else)
to make decisions, for example, turning on an LED when it gets dark.
You'll build a circuit with an LDR and an LED that turns the LED on when it gets dark.
ESP32, protoboards, LDRs, resistors (10k Ohm), LEDs, jumper wires, USB cables, computers.
"Automatic Night Light": You'll refine the circuit to make a more reliable automatic night light.
A "Light Alarm" that sounds a buzzer if the light changes dramatically.
We'll learn about PWM, a simple way to simulate a variable voltage by sending fast pulses of electricity. Think of it like a faucet that opens and closes very quickly.
We'll identify the specific pins on the ESP32 that support PWM.
We'll use the analogWrite() or ledcWrite() functions
(for ESP32) to control the brightness of an LED using PWM.
You'll use a potentiometer to control the brightness of an LED with PWM.
ESP32, protoboards, LEDs, resistors, potentiometers, jumper wires, USB cables, computers.
"Fade In/Fade Out": Program an LED to gradually increase and decrease in brightness.
An "Interactive Ambient Lamp".
Servomotors are special motors that let us control their angular position with great precision. Datasheet
We'll discuss how servomotors are used in robotics and for steering control.
We'll learn how to connect a servomotor to the ESP32, paying attention to its power and signal pins.
We'll use a library like Servo.h (or the ESP32 equivalent) to move a
servo to specific angles like 0, 90, and 180 degrees.
You'll program a servomotor to move to 0, 90, and 180 degrees.
ESP32, servomotors (e.g., SG90), protoboards, jumper wires, USB cables, computers.
"Servo Sweep": Make the servo motor move continuously from 0 to 180 degrees and back again.
A "Simple Camera Control" that uses a servo to move a sensor or a camera.
We'll combine what we learned about potentiometers and servomotors to control a servo's position by turning a knob.
map() FunctionWe'll learn how to use the map() function to convert a range of
values (like the 0-4095 range from the ESP32's ADC) to another range (like the
0-180 degrees a servo can move).
You'll control the position of a servomotor by turning a potentiometer.
ESP32, servomotors, potentiometers, protoboards, jumper wires, USB cables, computers.
"Basic Robotic Arm": Simulate the movement of an arm or a scoop with the servo and the potentiometer.
A "Level Indicator" where the servo points to a level based on an analog value.
DC motors are motors that spin continuously. We'll learn how they work. Datasheet
We'll explain why the ESP32 can't provide enough current to power a DC motor on its own, and why we need a "H-bridge" (a motor driver) to do the heavy lifting.
We'll introduce the L298N motor driver and identify its input and output pins and power connections. Datasheet
We'll learn how to connect a DC motor to the L298N driver and then connect the driver to the ESP32.
We'll program the ESP32 to control the direction and speed (using PWM) of a DC motor.
You'll make a DC motor spin in one direction, then the other, and vary its speed.
ESP32, small DC motors, L298N motor drivers (or smaller alternatives), protoboards, jumper wires, USB cables, computers, external power supply for the driver (e.g., a 9V battery).
"Wheel Control": Use two buttons to control a DC motor's spin (forward/backward).
A "Simple Mobile Base" with just one motor.
We'll learn about the principle of sonar: the sensor sends out a sound wave and measures how long it takes to bounce back, telling us the distance to an object. Datasheet
We'll connect the sensor's Trigger and Echo pins to the ESP32.
We'll use a library like NewPing or implement the logic manually
with pulseIn() to measure distances.
We'll display the measured distance on the Serial Monitor.
You'll measure the distance to various objects and display it in the Serial Monitor.
ESP32, HC-SR04 sensor, protoboards, jumper wires, USB cables, computers.
"Distance Meter": You'll measure different distances around the classroom.
A "Proximity Alarm" that turns on an LED or buzzer if an object is too close.
We'll combine everything we've learned so far: buttons, LEDs, DC motors, and the ultrasonic sensor.
We'll build a very basic robot car that uses the ultrasonic sensor to stop or reverse when it detects an obstacle.
You'll be encouraged to find and fix small errors in your wiring and code.
ESP32, DC motor, L298N driver, HC-SR04 sensor, protoboards, jumper wires, USB cables, computers, small wheels (optional).
"Movement Logic": Program the car to move forward and stop if it detects something less than X cm away.
A "Line-Following Robot" (if we introduce the infrared sensor later).
We'll look at examples of objects created with 3D design and 3D printing.
We'll introduce the Tinkercad interface, which is online and very user-friendly. We'll create our accounts and get started.
We'll learn how to use basic shapes (cube, cylinder, sphere), and how to move, rotate, and scale them. We'll also learn how to group shapes and create holes.
You'll design a simple keychain with your initials or a basic shape.
Computers with internet access, projectors.
"Build Your Name": Design the initials of your name in 3D.
A "Simple Phone Stand" (just a base).
We'll learn how a 3D printer works, talking about the filament, extruder, and heated bed.
We'll learn what a "slicer" program (like Cura) is. We'll cover basic concepts like infill, supports, and layer height.
You'll learn how to export your design as an .STL file.
We'll open the .STL file in the slicer, set up some basic parameters, and generate the .GCODE file that the printer understands.
We'll print the keychains or a simple piece you designed.
Each student or group will prepare their own .STL and .GCODE files for a simple piece.
Computers with Tinkercad and slicer software (Cura), a 3D printer (if available), filament.
"Mini-Box for a Component": Design a small box for an LED or a resistor.
A "Simple ESP32 Case" (a future idea).
We'll discuss the requirements and limitations of the Da Vinci boat challenge. In groups, we'll brainstorm and sketch ideas for the hull, the paddle system, and where the electronics will go. We'll also divide tasks within each group (e.g., 3D designer, programmer, assembler).
Whiteboard, markers, paper, pencils.
"Boat Schematic": Each group must present a detailed sketch of their design.
We'll begin designing the boat's hull in Tinkercad. We'll also design the supports for the motors, ESP32, battery, and other electronic components. We'll briefly discuss the importance of hull shape and weight distribution for buoyancy.
Computers with 3D design software, rules, calipers (if available).
"Design the Keel": Design a keel or stabilizer for the boat.
We'll design the paddles and the mechanism to connect them to the motor. We'll also think about how to 3D print the parts and if they'll need supports.
Computers with 3D design software.
"Gear Design": Design a pair of simple gears (if the mechanism requires it).
We'll draw the electrical schematic and wire the ESP32, motor driver, DC motors, and battery. We'll introduce the concept of remote control using the ESP32's Wi-Fi or Bluetooth. You'll program the ESP32 to interpret commands and control the boat's motors.
Computers with 3D design software, ESP32, motor drivers, DC motors, batteries, protoboards, jumper wires, USB cables, cell phones/tablets for control testing.
"Basic Movement Control": Program the boat to move forward when it receives a "forward" command and backward when it receives a "backward" command.
We'll generate the .GCODE for our designed parts and start printing the most critical ones. We'll then assemble the first printed parts and electronic components to check for fit and functionality.
3D printers, filament, computers, printed parts, electronic components, assembly tools, a container of water.
"First Assembly": Mount the motor and paddles on the printed hull.
We'll test the boat's buoyancy and propulsion in a container with water. Based on the results, we'll modify the 3D design and/or the programming for better performance.
Boat prototypes, container with water, computers, tools.
"Paddle Optimization": Test different paddle designs to see which one offers better propulsion.
We'll make our final modifications to the design and code, and focus on aesthetics and finishing touches. We'll also do a final safety check and complete a full test of the boat.
Finished boats, finishing materials, tools.
"Final Checklist": Each group will go through a checklist before the challenge begins.
We'll review the rules and criteria for the challenge and discuss our strategies. Each group will present their final boat, explaining their design choices and the challenges they overcame.
Finished boats.
"Challenge Simulation": Perform a small simulation of the challenge in the classroom.