IoTSpark - Learn IoT through real projects with Raspberry Pi, ESP32 and electronics
ESP32 IoT – Connecting Everything
6 chip variants, WiFi · BLE · Thread · Zigbee — compare and pick the right board for your project
Explore ESP32ESP32 Series
An affordable, powerful WiFi+BT microcontroller — the foundation for every IoT project
IntermediateESP32-CAM: Time-Lapse Camera for Plant Growth Monitoring
ESP32-CAM periodically snaps photos (every 10 minutes by default) and saves them to an SD card as a sequence — frame_00001.jpg, frame_00002.jpg, and so on — ready to be stitched into a time-lapse video of plant growth, with a frame counter that survives resets.
AdvancedESP32-CAM + PIR: Send Photo Alerts via Telegram on Motion
An HC-SR501 PIR sensor triggers the ESP32-CAM to take a photo and send it instantly through the Telegram Bot API (binary sendPhoto, no intermediate upload) whenever motion is detected, with a cooldown to prevent spam.
IntermediateESP32 OTA over LAN (ArduinoOTA)
Flash ESP32 firmware over WiFi on the same LAN using the built-in ArduinoOTA library — no USB cable, no cloud server, no Internet required.
IntermediateESP32 MQTT: Syncing Multiple Devices over a Public Broker
Two ESP32 boards running the same firmware stay in sync (ON/OFF) via a retained MQTT topic on a public broker — press the button on either board and the LED on both updates.
IntermediateESP32 MQTT: QoS & Last Will Testament for Safe Disconnect Handling
Learn MQTT's three QoS levels (0/1/2) and the Last Will Testament mechanism through a real ESP32 demo: an LED shows connection status, and a button simulates a sudden disconnect so you can watch the broker automatically publish "offline".
IntermediateESP32 + Stepper 28BYJ-48 + ULN2003: Precise Stepper Motor Control
Control a 28BYJ-48 stepper motor through a ULN2003 driver using an 8-step half-step sequence, rotating precisely by angle or step count — a foundation for turntables and automatic valve control.
BeginnerESP32 + DC Motor L298N: Controlling Speed and Direction
Control a DC motor's speed (PWM) and direction using an L298N driver on ESP32 — a foundation for robot cars, conveyor belts, and controllable fans.
IntermediateESP32 + E-Paper Display: A Power-Saving Screen for IoT Devices
Connect an ESP32 DevKit to a 2.13" SSD1680 SPI e-paper (e-ink) display and show periodically updated data using the GxEPD2 library, taking advantage of the display's ability to hold an image indefinitely with no continuous power — ideal for battery-powered IoT devices.
IntermediateESP32 + ILI9341/ST7789 TFT Display: Real-Time Sensor Graphing
Connect an ESP32 DevKit to a color SPI TFT display to draw a real-time line graph updating from sensor data, using the Adafruit_GFX library.
BeginnerESP32 + OLED SSD1306 (I2C): Basic Sensor Data Display
Learn to connect a 0.96" I2C SSD1306 OLED display to an ESP32 DevKit and show real-time sensor data (temperature, humidity) using the Adafruit_SSD1306 library.
Raspberry Pi Series
From blinking an LED to a NAS server and AI camera — a full-featured embedded computer
BeginnerRaspberry Pi + Button/LED: Intro to GPIO, Interrupts, and Debouncing
An introduction to GPIO input/output on Raspberry Pi using a push button and an LED: basic digital read/write, handling interrupts (event detection), and software debouncing.
BeginnerRaspberry Pi + Relay: Controlling Electrical Devices via GPIO
Use a 5V single-channel relay to switch electrical devices (lights, fans) on/off via Raspberry Pi's GPIO, with a safety watchdog that auto-shuts-off if left on too long.
BeginnerRaspberry Pi + PIR: Basic Motion Alarm
Build a basic motion alarm on Raspberry Pi using an HC-SR501 PIR sensor, triggering an LED and buzzer when a person or object moves through its detection zone.
IntermediateRaspberry Pi Camera: Basic License Plate Recognition (ALPR)
Uses a Raspberry Pi 4 + Camera Module v3 and OpenCV (Canny edge detection + contours) to locate a license plate using a geometric heuristic method — an intro step into computer vision, not a production-grade deep-learning ALPR system.
IntermediateRaspberry Pi Camera: Automatic QR Code/Barcode Scanning
Uses a Raspberry Pi 4 + Camera Module v3 with the pyzbar library and OpenCV to automatically scan QR codes and common barcode formats (EAN-13, Code128, etc.) in real time, logging each scan with a timestamp.
IntermediateRaspberry Pi + OpenCV: People Counter (Object Detection & In/Out Counting)
Uses a Raspberry Pi 4 and Camera Module v3 with OpenCV's HOG people detector to count people crossing a virtual line, distinguishing in/out direction from each centroid's movement.
BeginnerRaspberry Pi + HC-SR04: Measuring Distance via GPIO
Reads distance from 2–400cm using an HC-SR04 ultrasonic sensor over Raspberry Pi's GPIO, with a voltage divider protecting the 5V ECHO pin, using the RPi.GPIO library.
IntermediateRaspberry Pi + Google Assistant SDK: Basic Voice Assistant
Build a basic voice assistant on a Raspberry Pi 4 with the Google Assistant SDK (gRPC), asking and answering questions via a mic and I2S speaker, activated by a push button.
IntermediateRaspberry Pi + Text-to-Speech: Speaking Sensor Readings Aloud
Read temperature/humidity from a DHT22 sensor and speak it aloud through an I2S speaker on a Raspberry Pi 4, using pyttsx3/espeak-ng for fully offline speech synthesis.
IntermediateAI and IoT Project: Smart Waste Sorting
Use AI, a Raspberry Pi, and various sensors to build a device that recognizes objects and automatically sorts waste, helping raise environmental awareness.
Complete IoT Projects
Complete IoT projects from hardware to software, ready for real-world deployment
IntermediateWater Quality Monitoring System
Build a water quality monitoring system that measures temperature, TDS, pH, and turbidity, shows an alert status, and can be extended to send real-time data over MQTT. Suited for monitoring fish tank, hydroponic, or water tank quality, or as a reference monitoring model. Note: readings from consumer-grade sensors do not replace certified testing equipment or lab analysis.
IntermediateSolar Energy Monitoring and Control System with ESP32
Build a low-voltage DC model using an ESP32 to measure solar voltage, current, and power, monitor a battery, and control a DC load over MQTT.
IntermediateSmoke & Gas Leak Alarm Over 4G SIM — Automatic SMS + Phone Call Alerts
ESP32 reads an MQ-2 sensor to detect smoke and gas leaks, and when the level crosses the threshold it automatically sends an SMS and then calls twice, two minutes apart, over a SIM A7680C 4G module.
IntermediateHome Security System: Camera + App Alerts on Intrusion Detection
An ESP32-CAM paired with a PIR sensor: it only takes a photo and fires a webhook/Telegram-style alert when it genuinely detects motion, with debounce logic to prevent false alarms.
IntermediateSmart RFID Door Lock + App Control
An ESP32 with an RC522 RFID reader unlocks the door with a valid card, while also hosting a local HTTP API for remote unlocking from an app — both paths share the same lock logic and auto-relock after a few seconds.
IntermediateAutomatic Smart Lighting Based on Ambient Light and Schedule
ESP32 automatically turns an LED/relay light on or off based on an LDR light sensor and an NTP-synced schedule — it only turns on when it's dark out and within the configured time window.
IntermediatePond Water Level Monitor for Aquaculture
Uses an HC-SR04 ultrasonic sensor on an ESP32 to measure aquaculture pond water level in real time, with a local buzzer alert when the level is too low or too high.
IntermediateAutomatic Scheduled Pet/Livestock Feeder over IoT
Build an automatic feeder using an ESP32 + SG90 servo as the food-dispensing mechanism, paired with a DS3231 RTC module to keep feeding times accurate even without WiFi.
IntermediateGreenhouse Monitoring: Auto-Adjusting Fan/Shade Based on Temperature, Humidity, and Light
Uses an ESP32 + DHT22 + LDR light sensor to monitor greenhouse temperature, humidity, and light, automatically switching on a cooling fan when it's too hot and closing a shade when sunlight is intense — via two relays, saving energy.
IntermediateSolar Panel Performance Dashboard
An ESP32 measures a solar panel's output voltage and current with an INA219 sensor, displaying the readings in real time on a local OLED screen and a simple web dashboard hosted right on the ESP32.
Foundational Knowledge
Electronics, programming, and theory — a solid foundation for every IoT engineer
PCB Design Rules to Avoid Signal Noise in IoT Circuits
Core PCB layout rules for reducing signal noise in IoT circuits — ground planes, trace spacing, decoupling capacitors, and WiFi antenna keepout zones — illustrated with an ESP32 + SHT31 (I2C) circuit.
Understanding Gerber Files and Ordering PCBs from a Fab House
What Gerber layers are, how to check Gerber files before sending them out, and the general process for ordering PCBs from a fab house — illustrated with a Gerber set exported from an ESP32 + DHT22 circuit.
Designing Custom Footprints in KiCad
How to build a custom footprint in KiCad's Footprint Editor for a part that isn't in the standard library, illustrated with a real footprint for the DHT22 sensor module on an ESP32 circuit.
IntermediateManaging Libraries and Versions for IoT Projects
Why pinning library versions matters for IoT projects — using the Arduino Library Manager and PlatformIO's lib_deps to lock the DHT sensor library to a known-good version, and avoid the classic "works on my machine" bug.
BeginnerAdvanced Arduino IDE: Effective Debugging with the Serial Monitor
Debugging techniques for ESP32 firmware using the Serial Monitor and Serial Plotter: placing logs where they matter, reading compiler errors, tracking DHT22 sensor values in real time, and debugging tricks that get overlooked in the Arduino IDE.
BeginnerVS Code + PlatformIO: A Professional Development Environment for IoT
Moving from the Arduino IDE to VS Code + PlatformIO: understanding the platformio.ini/src/lib project structure, building the same DHT22 temperature/humidity firmware on ESP32, and why professionals reach for PlatformIO on real IoT projects.
IntermediateKiCad: From Schematic to a Finished PCB — the Full Process for Ordering from a Fab House
Going from an ESP32 + DHT22 breadboard prototype to a finished PCB: drawing the schematic in Eeschema, assigning footprints, laying it out in the PCB Editor, running DRC, and exporting Gerbers to order from a fab house.
BeginnerDebugging Basic I2C/SPI Communication
I2C/SPI debugging techniques without specialized test equipment: an I2C bus scanner, periodic health-checks, and a diagnostic checklist for common errors with the ESP32 DevKit.
IntermediateI2C vs SPI vs UART Compared: Which Protocol, When?
A direct comparison table of I2C, SPI, and UART (wire count, speed, device selection) plus an example running all 3 protocols at once on a single ESP32 DevKit board.
BeginnerThe 1-Wire Protocol: Principles and Application (DS18B20)
The 1-Wire protocol explained (a single-wire open-drain bus, 64-bit ROM addressing), with hands-on DS18B20 temperature reading on an ESP32 DevKit and a 4.7kΩ pull-up resistor.