100 Days 100 IoT Projects
A 100-day challenge building real-world IoT projects with MicroPython on ESP32, ESP8266 and Raspberry Pi Pico 2W. Step-by-step documented with wiring diagrams and code for beginners.
100 Days 100 IoT Projects
Welcome to my 100 Days 100 IoT Projects repository!
This repo showcases my journey of learning and implementing IoT & Embedded Systems projects using ESP32, Raspberry Pi Pico, and MicroPython.
Each project is designed to teach a specific concept, sensor, or IoT technique — from basic analog/digital readings to web-based dashboards.

Recognition & Features
Technologies, Boards & Tools Used
Hardware
- ESP32, ESP8266 (NodeMCU)
- Raspberry Pi Pico / Pico W / Pico 2 W
- XIAO ESP32-S3
- Arduino (UNO / Nano)
Programming & Platforms
- MicroPython
- Python (Tkinter, CustomTkinter, Matplotlib)
- Arduino + Python (Serial, PyFirmata)
Sensors & Modules
- LDR, Potentiometer, DHT11
- PIR, IR, Ultrasonic (HC-SR04)
- Gas Sensors (MQ-4, MQ-7, MQ-135)
- RTC (DS3231), TM1637, OLED, LCD
- Relay, Servo, Touch Sensor
Concepts Covered
- ADC, PWM, GPIO
- Wi-Fi, Web Server, WebSocket
- Bluetooth, Blynk IoT
- Data logging & visualization
- Simulation-based testing
Project List
| Day | Project | Board / Sensor | Description |
|---|---|---|---|
| 1 | Auto Night Light | ESP32 + LDR | Automatic LED turns ON/OFF based on ambient light |
| 2 | Dimmer LED using Potentiometer | ESP32 + Potentiometer | LED brightness controlled via potentiometer using ADC + PWM |
| 3 | DHT11 Temperature & Humidity Web Server | ESP32 + DHT11 | Reads temperature & humidity and displays on a live web page |
| 4 | 1-Digit Seven Segment Display | Raspberry Pi Pico + 7-Segment | Displays numeric output using GPIO control |
| 5 | Mini Weather Station (DHT11 + LCD) | ESP8266 + DHT11 + I²C LCD | Displays real-time temperature & humidity on 16x2 LCD without flickering |
| 6 | RGB Color Mixer using Potentiometers | ESP32 + 3 Potentiometers + RGB LED | Mix RGB colors by adjusting potentiometers using ADC and PWM |
| 7 | Potentiometer Bar Graph Display | ESP32 + Potentiometer + 10 LEDs | Visualize analog input as a 10-LED bar graph using ADC mapping |
| 8 | MQ4 Gas Leak Detection System | ESP32 + MQ4 Sensor + Buzzer | Detects methane gas concentration using MQ4 sensor and triggers alert when gas level exceeds threshold |
| 9 | Basic RTC Clock (Serial Monitor Display) | ESP8266 + DS3231 RTC | Displays real-time date, time, and temperature on Serial Monitor using DS3231 RTC |
| 10 | IoT Button Counter using ESP8266 & MicroPython | ESP8266 + 3 Push Buttons | Counts button presses (Increment, Decrement, Reset) and displays live counter on webpage |
| 11 | MicroPython-Based 8×8 LED Matrix Animation Display using ESP8266 | ESP8266 + MAX7219 8×8 LED Matrix | Displays custom animations (heart beat) on 8×8 LED matrix using MicroPython |
| 12 | PIR Motion Detector using Raspberry Pi Pico 2W & MicroPython | Raspberry Pi Pico 2W + PIR Sensor | Detects motion using PIR sensor and indicates using built-in LED with MicroPython |
| 13 | Bluetooth-Based Wireless LED Control System | Raspberry Pi Pico 2W + HC-05 | Wireless LED ON/OFF control using MicroPython + HC-05 Bluetooth module |
| 14 | Pico W Web Servo Controller | Raspberry Pi Pico 2W + Servo Motor | Control servo angle (0–180°) from browser via WiFi |
| 15 | ClimaPixel — Mini Weather Display | ESP32/ESP8266 + DHT11 + SSD1306 OLED | Real-time temperature & humidity display with icons on OLED using MicroPython |
| 16 | TM1637 Button-Press Counter using ESP8266 & MicroPython | ESP8266 + TM1637 + Push Button | Counts button presses and displays live counter on TM1637 4-digit display |
| 17 | IoT Relay Control Web Server (Raspberry Pi Pico 2W) | Raspberry Pi Pico 2W + Relay Module | Web-based relay control using MicroPython with a smooth slide switch UI and real-time ON/OFF status over WiFi |
| 18 | Blynk-Based IoT Relay Control (Raspberry Pi Pico 2 W) | Raspberry Pi Pico 2 W + Relay Module | Mobile app–based relay control using Blynk IoT and MicroPython with real-time ON/OFF control over Wi-Fi |
| 19 | NTP Digital Clock using TM1637 & ESP8266 (MicroPython) | ESP8266 + TM1637 | Internet-synchronized digital clock using NTP with accurate HH:MM display, blinking colon, and custom segment mapping in MicroPython |
| 20 | Smart IR Object Detection System | ESP8266 + IR Sensor + LED + Buzzer | Detects the presence of an object using an IR sensor and triggers LED and buzzer alerts in real time using MicroPython |
| 21 | ESP32 Password Lock System | ESP32 + Keypad + LCD + LEDs | Implements a secure password authentication system using a keypad and LCD with visual LED feedback, developed in MicroPython |
| 22 | Blynk Controlled DC Brushless Fan | Raspberry Pi Pico W + Relay + DC Brushless Fan | Controls a DC brushless fan remotely using the Blynk IoT platform and a relay module, implemented in MicroPython |
| 23 | ESP32 Hotspot Setup | ESP32 | Configures ESP32 in Access Point (Hotspot) mode using MicroPython, enabling direct device-to-device connectivity without internet |
| 24 | Voice-Controlled LED System | Arduino + Python | Controls an LED using voice commands processed in Python and sent to Arduino via serial communication |
| 25 | Arduino RGB LED Control with Python GUI | Arduino + Python | Controls an RGB LED using a Python GUI built with CustomTkinter and PyFirmata2, allowing color selection, individual LED on/off control, and brightness adjustment via sliders |
| 26 | Clap Toggle Switch using ESP32 (MicroPython) | ESP32 + MicroPython | A clap-controlled toggle switch using a digital sound sensor where one clap turns the output ON and the next clap turns it OFF, implemented with debounce logic for reliable operation |
| 27 | IR Sensor Telegram Alert using ESP32 (MicroPython) | ESP32 + MicroPython | An IR sensor–based object detection system that sends real-time alert notifications to a Telegram channel whenever motion or object presence is detected near the sensor |
| 28 | Soil Moisture Sensor Dry/Wet Detection using ESP8266 (MicroPython) | ESP8266 + MicroPython | A soil moisture monitoring system that reads analog sensor values and determines dry or wet soil conditions in real time, displaying the status on the serial monitor |
| 29 | Rain Sensor Analog Detection using ESP8266 (MicroPython) | ESP8266 + MicroPython | An analog rain detection system that reads real-time sensor values to determine rain intensity (no rain, light rain, heavy rain) and displays the status on the serial monitor |
| 30 | Ultrasonic Distance Indicator using ESP32 (MicroPython) | ESP32 + MicroPython | A distance-based indication system using an HC-SR04 ultrasonic sensor that measures real-time distance and indicates object proximity using red and green LEDs |
| 31 | WebSocket LED Control using Raspberry Pi Pico W | Pico W + MicroPython | A real-time LED control system using WebSockets where a browser communicates directly with Raspberry Pi Pico W over WiFi to turn an LED ON or OFF without page refresh |
| 32 | MQ-135 Gas Sensor with ESP32 | ESP32 + MicroPython | A gas level monitoring system using the MQ-135 sensor and ESP32 to read and average analog sensor values for stable environmental gas detection |
| 33 | MQ-7 Carbon Monoxide Sensor with ESP32 | ESP32 + MicroPython | A carbon monoxide monitoring system using the MQ-7 sensor and ESP32 to read and average analog sensor values for real-time CO detection |
| 34 | Servo Motor Control with Raspberry Pi Pico 2 W | Raspberry Pi Pico 2 W + MicroPython | A simulation-based servo motor control project using PWM, where the user inputs an angle (0–180°) via serial monitor and the servo rotates accordingly with safe angle clamping |
| 35 | ESP8266 Touch Sensor LED Control | ESP8266 (NodeMCU) + MicroPython | A capacitive touch-based toggle switch using the TTP223 touch sensor, where each touch alternates the state of an external LED with proper debounce handling |
| 36 | ESP8266 DHT11 Live Monitor Matplotlib and MicroPython | ESP8266 + MicroPython + Matplotlib | Real-time DHT11 temperature and humidity visualization with a dark neon-themed live graph using serial communication |
| 37 | XIAO ESP32 4-LED Control using CustomTkinter and MicroPython | XIAO ESP32-S3 + MicroPython + CustomTkinter | Desktop GUI application to control four ESP32 GPIO LEDs via serial communication using a modern dark-mode CustomTkinter interface |
| 38 | ESP32 OLED Smart UI with Eyes Animation, Time & Weather (MicroPython) | ESP32 + SSD1306 OLED + MicroPython | Interactive OLED UI featuring animated eyes, touch-based menu navigation, NTP-synced IST date & time, and live weather data using OpenWeatherMap API |
| 39 | ESP32 Stepper Motor Control using A4988 (MicroPython) | ESP32 + A4988 + NEMA 17 | Stepper motor control using STEP/DIR signals with direction control, speed adjustment via delay, and serial monitoring using print statements |
| 40 | Pico W Async LED Control (MicroPython) | Raspberry Pi Pico W | Async web server using uasyncio to control onboard LED via browser with ON/OFF buttons and fetch-based requests |
| 41 | EEPROM Simulation using MicroPython (ESP32) | ESP32 | File-based EEPROM emulation using MicroPython with byte-level read/write and persistent string storage |
| 42 | ESP32 DC Motor Web Speed Control (MicroPython) | ESP32 + L298N | Web-based slider controlled DC motor speed system using PWM, MicroPython web server, and L298N driver |
| 43 | Temperature Based LED Indicator (MicroPython) | ESP32 + DHT22 | Beginner-friendly ESP32 project that reads temperature data from DHT22 and visually indicates temperature levels using LEDs |
| 44 | Flask LED Control using MicroPython | ESP32 / Pico W | Beginner-friendly IoT project where a Flask web server controls an LED on ESP32 or Pico W through HTTP polling using MicroPython |
| 45 | Smart Cooling System using ESP8266 | ESP8266+DHT11+BRUSHLESS FAN | Beginner-friendly IoT project that automatically controls a fan using DHT11 temperature sensor and an active-LOW relay with MicroPython |
| 46 | Soil & Weather Monitoring using ESP8266 and ThingSpeak | ESP8266 + DHT11 + Soil Sensor | Beginner-friendly IoT project that monitors soil moisture, temperature, and humidity and visualizes the data on the ThingSpeak cloud using MicroPython |
| 47 | Smart Irrigation System using XIAO ESP32-S3 and Blynk | XIAO ESP32-S3 + Soil Sensor + Relay + Pump | A smart irrigation system that monitors soil moisture in real time and allows manual water pump control via the Blynk IoT platform using MicroPython |
| 48 | HTTP-Based DHT11 Data Logger using Raspberry Pi Pico W | Raspberry Pi Pico 2W + DHT11 | A simple IoT data logging system that reads temperature and humidity from a DHT11 sensor and sends the data via HTTP POST to a Flask server, where it is stored in a CSV file for analysis |
| 49 | ThingsBoard RPC LED Control & DHT11 Telemetry using Raspberry Pi Pico 2 W | Raspberry Pi Pico 2 W + DHT11 | A cloud-connected IoT system using MicroPython where a Raspberry Pi Pico 2 W sends temperature and humidity data to ThingsBoard via MQTT and allows remote LED control using RPC from a dashboard |
| 50 | ESP32 BMP180 Atmospheric Monitoring with Blynk IoT | ESP32 + BMP180 | A cloud-connected IoT system using MicroPython where an ESP32 measures temperature, atmospheric pressure, and altitude using the BMP180 sensor and sends real-time data to the Blynk IoT dashboard via Wi-Fi |
| 51 | ESP8266 Smart Home Automation using MicroPython & Blynk | ESP8266 + DHT11 + Relay | A cloud-based smart home automation system where an ESP8266 controls home appliances via relay and monitors temperature & humidity using DHT11, with real-time control and monitoring through the Blynk IoT dashboard over Wi-Fi |
| 52 | IoT Sensor Anomaly Detection using ESP8266 & ThingSpeak | ESP8266 + DHT11 + LDR + MATLAB | An IoT-based environmental monitoring system that uploads real-time sensor data to ThingSpeak and performs statistical anomaly detection using Z-score analysis in MATLAB, with visualization and outlier classification |
| 53 | Smart IoT Gas Monitoring System | ESP32 + MQ Gas Sensor + DHT11 + Flask + Chart.js | An AI-inspired end-to-end IoT gas monitoring system that streams real-time sensor data to a Flask backend, applies moving-average based anomaly detection for SAFE/DANGER classification, logs data for analytics, and visualizes live environmental insights on an interactive web dashboard |
| 54 | ESP8266 ESP-NOW LED Control | ESP8266 + ESP-NOW + MicroPython | A low-latency wireless LED control system using ESP-NOW protocol, where one ESP8266 acts as a transmitter and the other as a receiver, enabling real-time device control without WiFi infrastructure |
| 55 | ESP8266 ESP-NOW Button to LED Control | ESP8266 + ESP-NOW + MicroPython | A low-latency peer-to-peer wireless communication system where a push button on one ESP8266 toggles an LED on another ESP8266 without WiFi or access point |
| 56 | ESP8266 ESP-NOW 4-Channel Wireless Relay Controller | ESP8266 + ESP-NOW + MicroPython | A wireless 4-channel relay control system using two ESP8266 boards, where push buttons on the sender toggle relays on the receiver via low-latency ESP-NOW communication without WiFi |
| 57 | ESP-NOW Smart Relay & Sensor System | ESP8266/ESP32 + ESP-NOW + MicroPython | A bidirectional ESP-NOW based smart relay and sensor system where a sender control panel toggles relays on a receiver and receives real-time DHT temperature and humidity data displayed on an OLED |
| 58 | NTP Synchronized LED Matrix Clock | ESP32 + MAX7219 + MicroPython + NTP | A real-time internet-synchronized digital clock using chained MAX7219 LED matrices, showing HH:MM with NTP time sync and serial debugging output |
| 59 | AQI-ESP - IoT AQI Monitoring System | ESP32 + MicroPython + Flask + MQ135 + MQ7 + PM2.5 | A real-time air quality monitoring system using ESP32 and multiple gas sensors, calculating AQI via Flask backend and displaying live results on SSD1306 OLED with status like Good/Moderate/Unhealthy/Hazardous |
| 60 | Student Management System - ESP32 | ESP32 + MicroPython + SH1106 OLED + LittleFS + ujson | A serial command-based student record management system running on ESP32, storing up to 1000 student records in JSON format on onboard flash memory with live navigation and display on SH1106 OLED |
| 61 | OTA Update - Raspberry Pi Pico 2 W | Raspberry Pi Pico 2 W + MicroPython + GitHub + urequests | A WiFi-based OTA (Over-the-Air) update system that automatically downloads and applies new code from GitHub on every boot without physically connecting the device to a computer |
| 62 | Smart Indoor Security System | ESP32 + PIR Sensor + 4x4 Keypad + MicroPython + Favoriot IoT | A motion-triggered keypad security system that detects intruders, requests a password, logs all events to the Favoriot IoT cloud, and sends email alerts on unauthorized access |
| 63 | ESP32 BLE LED Control | ESP32 + MicroPython + Bluetooth Low Energy (BLE) | A BLE UART-based LED control system that allows wireless toggling of the onboard LED via smartphone commands, with connection status indication and real-time state feedback |
| 64 | microclawup — AI Powered ESP32 GPIO Controller | ESP32 + Groq AI + Telegram | AI-powered natural language GPIO controller using MicroPython, Groq AI and Telegram bot |
| 65 | MicroPython Watch | Xiao ESP32-S3 + SSD1306 OLED + OpenWeatherMap | NTP time sync + live weather on a 0.96" OLED display |
| 66 | micropidash — IoT Web Dashboard | Raspberry Pi Pico 2W / ESP32 | Non-blocking web dashboard with real-time sync, dark mode & sensor monitoring via uasyncio |
| 67 | Pulse Monitor — Heart Rate on OLED | ESP32 +Pulse Sensor+ OLED | Real-time BPM display with scrolling waveform & pixel-art heart on SSD1306 OLED via ADC peak detection |
| 68 | Joystick Servo Control | Raspberry Pi Pico 2W + SG90 Servo + Joystick Module | Smooth 0°–180° servo control via joystick X axis using PWM & 5-sample ADC averaging in MicroPython |
| 69 | Joystick Direction Display | Raspberry Pi Pico 2 + KY-023 Joystick + SSD1306 OLED | Real-time joystick direction detection displayed on OLED with raw ADC values using I2C and MicroPython |
| 70 | Dual IR Entry/Exit Detector with Telegram | ESP32 + HW-201 IR Sensor x2 + Red LED + Green LED | Dual IR sensor-based entry/exit detection system — red LED stays ON while object is inside, green LED blinks on exit, with real-time Telegram alerts |
| 71 | Wi-Fi Controlled 4WD Robot Car | ESP32 + L298N Motor Driver x2 + TT DC Motor x4 + 4WD Chassis | Wi-Fi controlled 4WD robot car — ESP32 hosts a web server, browser-based interface with Forward, Backward, Left, Right, Stop controls over local Wi-Fi |
| 72 | RFID Basic Access Control System | ESP8266 NodeMCU + MFRC522 + Green LED + Red LED | RFID based access control — ESP8266 reads MIFARE card UID over SPI, checks against authorised list, green LED for granted and red LED blinks for denied |
| 73 | RFID Attendance Logger | ESP32 + MFRC522 + Google Sheets | RFID based attendance system — scans student cards, logs name, IN/OUT status and NTP timestamp to Google Sheets via Apps Script webhook |
| 74 | RFID Relay Control System | Raspberry Pi Pico 2 + MFRC522 + 1 Channel Relay + 5V Brushless Fan | RFID based relay control — authorized card tap toggles 5V brushless fan ON or OFF via active low relay module |
| 75 | ESP-NOW RFID Display | ESP8266 x2 + MFRC522 + SSD1306 OLED | ESP-NOW based RFID system — one ESP8266 scans card and sends UID wirelessly, second ESP8266 receives and displays UID on OLED |
| 76 | Bidirectional_ESP_NOW Communication_with_Dual_Sensor_Nodes | ESP8266 x2 + DHT11 x2 + SSD1306 + SH1106 | Two ESP8266 nodes simultaneously send and receive DHT11 sensor data over ESP-NOW, each displaying local and remote readings on OLED |
| 77 | Battery_Monitor_with_Blynk_IoT | ESP8266 + TP4056 + 18650 + 2x10kΩ | Real-time Li-ion battery voltage and percentage monitoring using voltage divider, lookup table calibration, pushed live to Blynk IoT dashboard |
| 78 | IoT-Based DSM Smart Metering Prototype | ESP32 + ZMPT101B + ACS712 + Blynk IoT + MATLAB | Real-time AC voltage and current monitoring with power calculation, demand-side management relay control, and live energy dashboard on Blynk IoT with MATLAB-based data analysis |
| 79 | GC9A01 Round Display Smartwatch | ESP32 + Xiao ESP32-S3 + GC9A01 + OpenWeatherMap + NTP | Robot eyes boot animation with blink effect, typing animation, NTP-synced real-time clock, live weather via OpenWeatherMap API, and flicker-free display rendering on 1.28" round TFT |
| 80 | NeoPixel 8-Ring Web Controller | Pico 2W + WS2812B NeoPixel + MicroPython | Browser-based IoT controller with rainbow cycle, breathe effect, solid color, real-time brightness and color control via non-blocking HTTP server on Pico 2W |
Key Highlights
- Step-by-step progression from basic to advanced IoT concepts
- Hands-on experience with real hardware and simulations
- IoT dashboards using Web Server, WebSocket & Blynk
- Python & Matplotlib-based live data visualization
- Beginner-friendly documentation & explanations
- Clean, folder-wise project organization
Roadmap
- Complete 100 IoT projects in 100 days
- Each project includes:
main.py- Detailed
README.md - Circuit diagram / simulation
- Upcoming focus areas:
- Cloud & IoT dashboards
- OTA & firmware updates
- Power optimization
- Smart home & automation systems
- AI-assisted IoT (basic level) ation, and more
Author
Kritish Mohapatra
Third Year B.Tech – Electrical Engineering
Interests: IoT | Embedded Systems | MicroPython | Automation
Building in public through #100DaysOfIoT
⭐ If you like this repository, give it a star on GitHub and follow for more IoT projects!