All tutorials

205 tutorials. Filter by platform below or just scroll. Each one is something I have actually built and shipped, not a paraphrase of someone else's GitHub README.

arduino beginner 40 min

Arduino: build a line-following robot

A 2WD robot that follows a black electrical-tape line using three IR reflectance sensors. Bang-bang control done honestly, PID optional.

pico intermediate 35 min

Pico: run multiple tasks with asyncio

Blink an LED, read a sensor, and serve a web page at the same time on a Pico with MicroPython asyncio. Cooperative multitasking without an RTOS.

esp32 beginner 30 min

ESP32: read RFID tags with the RC522

Wire the $3 MFRC522 RFID reader to an ESP32 over SPI and build the tap-to-unlock pattern: card UID list, relay output, event logging.

esp32 intermediate 40 min

ESP32: drive a low-power e-paper display

Drive a 2.9-inch e-ink panel with an ESP32: crisp static text, months on a battery, and the refresh rules that keep the panel alive.

arduino beginner 30 min

Arduino: Simon-says memory game

Build the Simon memory game with 4 buttons, 4 LEDs, and a buzzer. State machines, tone(), and the game loop that scales to any difficulty.

arduino beginner 40 min

Arduino: build a digital clock with DS3231 + OLED

Build a desk clock that never drifts: a DS3231 RTC keeps time, a 0.96 inch SSD1306 OLED shows it big. Two I2C devices on the same two wires, plus a button to set it.

arduino beginner 30 min

Arduino: read water quality with the TDS module

Measure total dissolved solids with the Gravity TDS module on an Arduino: clean wiring, temperature compensation, calibration, and what TDS cannot tell you.

arduino beginner 30 min

Arduino: build a gas alarm with the MQ-2

Build an MQ-2 gas and smoke alarm on an Arduino: wiring, warm-up, calibration, buzzer code, and the honest limits of a DIY detector.

esp32 intermediate 30 min

ESP32: hosted MQTT brokers vs self-hosting

Compare EMQX and HiveMQ free tiers against Mosquitto on a Raspberry Pi, wire an ESP32 to each, and pick the right broker for your home.

esp32 intermediate 45 min

ESP32-CAM: take and email a photo on motion (SMTP)

PIR motion triggers the ESP32-CAM to capture a JPEG and email it as an SMTP attachment with STARTTLS. The alert channel that works with any mail account, no app install.

esp32 intermediate 40 min

ESP32-CAM: face detection with the onboard model

Run the ESP32's built-in face detection model on the ESP32-CAM with ESP-WHO: detect faces in real time, no cloud, no external server, with human detection as a fallback.

esp32 intermediate 40 min

ESP32: play audio through the MAX98357A I2S amp

Wire the MAX98357A I2S amplifier to an ESP32 and play WAV data from flash or an internet stream. The talking-device pattern that pairs with the INMP441 microphone tutorial.

esp32 intermediate 30 min

ESP32: push readings into InfluxDB over HTTP

Write ESP32 sensor readings straight into a self-hosted InfluxDB over HTTP with line protocol. Time-series storage on your Pi, graphed by Grafana, no cloud in the middle.

esp32 beginner 25 min

ESP32: send IR codes with an IR LED

Build an ESP32 IR blaster that replays remote codes to control a TV or AC unit over the network. Pairs with the IR receiver tutorial to capture the codes first.

esp32 intermediate 35 min

ESP32: log sensor data to a microSD card

Write timestamped CSV data from ESP32 sensors to a microSD card. FAT file basics, real timestamps, daily file rotation, and the flush pattern that survives power cuts.

esp32 advanced 60 min

ESP32: build a UI with LVGL on a touch display

Drive a 320x240 ILI9341 touch display with LVGL 9 on an ESP32. Real widgets, buttons that work, and the two-task structure that keeps drawing and touch alive.

pico beginner 30 min

Pico: drive DC motors with the L298N

Wire a Pico to an L298N motor driver, drive one or two DC motors with PWM speed control in MicroPython, and get direction control for free. The start of every wheeled robot.

pico intermediate 40 min

Pico W: send email alerts over SMTP

Send email straight from a Pico W over SMTP with STARTTLS in MicroPython. Works with your own mail server or any provider's app password, no cloud IoT service in the middle.

pico intermediate 35 min

Pico: measure wind speed with an anemometer

Wire a cup anemometer's reed switch to a Pico, count pulses with an interrupt, and convert pulse rate to wind speed with the manufacturer's constant.

pico beginner 30 min

Pico: GPS location and time with the NEO-6M

Wire a NEO-6M GPS module to a Pico over UART, parse NMEA sentences in MicroPython for position and atomic-clock UTC time, and learn why the first fix takes minutes outdoors.

pico beginner 15 min

Pico: read the RP2040's built-in temperature sensor

Read the temperature sensor inside the RP2040 chip with MicroPython's ADC and the 27-degree conversion formula. Zero wiring, one ADC channel, and a warning about what the number actually means.

raspberry-pi intermediate 45 min

Raspberry Pi: gesture recognition with MediaPipe

Run hand gesture recognition on a Raspberry Pi camera feed with MediaPipe: count fingers, detect an open palm or fist, and trigger real actions in Python.

raspberry-pi intermediate 60 min

Raspberry Pi: internet anywhere with a 4G/LTE HAT

Get a Raspberry Pi online over cellular with a SIM7600 4G/LTE HAT, check signal honestly, and run your own WireGuard bridge over the link instead of port forwarding.

raspberry-pi beginner 30 min

Raspberry Pi: Sense HAT (LEDs, sensors, joystick)

Plug a Sense HAT onto a Raspberry Pi and read temperature, humidity, pressure, and orientation from Python, drive the LED matrix, and fix the two traps every owner hits.

arduino beginner 25 min

Arduino: persist data with EEPROM, the right way

Save a calibration value or a small setting to EEPROM so it survives a power cycle. The 1 KB on the Uno is enough for hundreds of values if you use it carefully.

arduino intermediate 30 min

Arduino: drive a DC motor with the L298N H-bridge

Wire an L298N module to an Arduino and control a DC motor forward, reverse, and at variable speed with PWM. The H-bridge pattern that runs most hobby robots.

arduino beginner 25 min

Arduino: read an HC-SR04 ultrasonic distance sensor

Wire an HC-SR04 to an Arduino and read distance in centimeters. The 40 kHz chirp, the trigger pulse, the echo timing, and the math that turns a microsecond count into a number you can use.

pico intermediate 30 min

Pico: I2C in depth with MicroPython, scanners and bus recovery

Scan the I2C bus on a Pico for connected devices, recover from a locked-up SDA line, and understand the 7-bit vs 8-bit address gotcha. The pattern that turns 'my sensor is not responding' into a 30-second fix.

esp32 intermediate 45 min

ESP32 + LoRa: Meshtastic, the off-grid mesh firmware

Flash Meshtastic on an ESP32 + LoRa board and you have an off-grid text messaging device with mesh routing, encryption, and battery-friendly operation. No SIM card, no monthly bill, no account.

esp32 intermediate 40 min

ESP32: LoRa peer-to-peer, two boards talking without Wi-Fi

Wire two ESP32 boards to SX1278 LoRa modules and send packets between them with no Wi-Fi, no internet, no gateway. The wiring, the Sandeep Mistry library, sender code, receiver code, and the urban range truth.

esp32 beginner 15 min

ESP32: install the toolchain the right way

Set up the Arduino IDE for ESP32 the way that does not break six months from now. Boards manager URLs, USB drivers, and the port detection traps.

esp32 beginner 20 min

ESP32: drive a hobby servo with LEDC

Wire a hobby servo to an ESP32 using the LEDC peripheral. The right way to control an SG90 or MG996R without the Servo.h library.

esp32 beginner 20 min

ESP32: detect motion with a PIR motion sensor

Wire a PIR motion sensor (HC-SR501) to an ESP32 and detect people moving in a room. The foundation for security, automation, and wake-on-motion projects.

esp32 beginner 20 min

ESP32: drive a piezo buzzer with tone()

Use a piezo buzzer with an ESP32 to play tones, melodies, and alarm sounds. The LEDC peripheral does this in hardware, with no CPU overhead.

esp32 advanced 45 min

ESP32: build an indoor air quality monitor

BME280 + MQ-2 + MQ-135 + ESP32 + OLED = a complete indoor air quality monitor. Temperature, humidity, CO2 equivalent, and combustible gas.

esp32 advanced 60 min

ESP32: build a solar-powered trail camera

ESP32-CAM with PIR motion sensor, SD card storage, and solar power. Captures images when motion is detected and stores them on the SD card.

esp32 intermediate 30 min

ESP32: OTA (over-the-air) firmware updates

Update ESP32 firmware over Wi-Fi without plugging in USB. The feature that turns a project from prototype into something you actually deploy.

arduino intermediate 30 min

Arduino: control relays for home automation

Drive a relay module from an Arduino to switch mains-powered devices. The most common home automation building block, with all the safety stuff included.

esp32 intermediate 30 min

ESP32: publish MQTT messages to a broker

Send sensor data over MQTT from an ESP32 to a broker, and subscribe from another device. The pub/sub pattern that runs most home automation.

pico beginner 20 min

Pico: read a DHT22 with MicroPython

Wire a DHT22 temperature and humidity sensor to a Pico and read it from MicroPython. The smallest useful Pico sensor project.

arduino beginner 20 min

Arduino: control a servo motor

Drive a hobby servo (SG90, MG996R) from an Arduino. The shortest path from Arduino to 'something moved.'