24 / 2 / 2026
Task 1 – Introduction to ESP32 & Basic Components
Task 1a – Theory: Digital I/O & Interrupts
In this task, I studied the fundamentals of GPIO configuration and interrupt handling on the ESP32 microcontroller. The objective was to understand how digital pins are configured as inputs or outputs and how interrupts improve system efficiency.
I learned how to control external components such as LEDs using output pins and how to read signals from pushbuttons using input pins with internal pull-up or pull-down resistors to prevent floating states. I also explored edge-triggered interrupts and how Interrupt Service Routines (ISRs) allow the ESP32 to respond instantly to events without continuous polling. Basic debouncing concepts were also reviewed to ensure reliable button detection.
This task built a strong theoretical foundation in embedded systems and prepared me for practical implementation.
Task 1b – Simon Says Game using ESP32
In this task, I developed a Simon Says game using the ESP32, LEDs, and pushbuttons to apply GPIO and interrupt concepts practically. The system generated a random sequence of LED flashes, and the user had to replicate the pattern by pressing the corresponding buttons in the correct order. With each successful round, the sequence length increased, making the game progressively more challenging.
LEDs were configured as outputs, and pushbuttons were configured as inputs with proper pull-up settings. Interrupt-based input handling was implemented to ensure quick and accurate response to button presses. The sequence was stored using arrays, and timing delays were added for clear visual feedback.
If the user entered an incorrect sequence, all LEDs flashed to indicate failure, and the game restarted automatically. The Wokwi simulation was adjusted for ESP32 compatibility and correct GPIO mapping.
This task improved my understanding of embedded logic design, real-time interaction, and user feedback mechanisms.
Task 2 – Temperature-Based Fan Control

In this task, I implemented a temperature-controlled fan system using the ESP32, DHT11 sensor, and a DC motor controlled via L298N motor driver. The goal was to demonstrate automation by linking sensor readings to actuator control.
The DHT11 sensor continuously measured ambient temperature, and the readings were displayed on the serial monitor. A predefined temperature threshold was set in the program. When the temperature exceeded this limit, the ESP32 activated the motor driver to turn on the fan. When the temperature dropped below the threshold, the motor turned off automatically.
Task 3a – IoT Communication Protocols
In this task, I studied common IoT and serial communication protocols including MQTT, HTTP, I2C, and SPI. The objective was to understand their working principles, advantages, limitations, and real-world applications.
I explored how MQTT operates on a publish–subscribe model, making it lightweight and suitable for low-bandwidth IoT applications. I also reviewed HTTP, which follows a request–response model and is widely used for web-based communication and REST APIs. Additionally, I gained theoretical knowledge of serial communication protocols such as I2C and SPI, understanding how they enable communication between microcontrollers and peripheral devices.
I compared these protocols based on speed, reliability, bandwidth usage, and scalability. This study helped me understand when to use each protocol depending on application requirements such as cloud communication, sensor interfacing, or device-to-device communication.
Task 3b – Controlling LEDs Using MQTT
In this task, I implemented LED control using the MQTT protocol. The goal was to establish publishing and subscribing functionality using an MQTT platform and apply it to real hardware control.
I configured the ESP32 as an MQTT client that subscribed to specific topics. When a message such as “LED 1 ON” or “LED 1 OFF” was published to the broker, the ESP32 received the message and activated or deactivated the corresponding LED. Similarly, I implemented control for LED 2 and LED 3 using separate topics.
Through this implementation, I gained practical understanding of MQTT brokers, topics, publishers, and subscribers. I learned how real-time communication enables remote hardware control over a network. This task strengthened my understanding of IoT communication and message-based architecture.
Task 5 – Cloud Communication & Data Logging using ThingSpeak

In this task, I implemented cloud-based data logging and analysis using the ESP32 and ThingSpeak platform. I sent temperature and soil moisture data collected from a DHT11 sensor and a capacitive soil moisture sensor to ThingSpeak using its API.
The ESP32 continuously read temperature, humidity, and moisture percentage values and posted the data to the cloud at regular intervals. On the ThingSpeak dashboard, I visualized relationships such as Temperature vs. Soil Moisture and Humidity vs. Soil Moisture.
After collecting sufficient data, I retrieved the dataset for analysis and used Python with Matplotlib to plot Temperature vs. Time graphs. I then created a regression model to analyze the relationship between Humidity (independent variable) and Moisture Percentage (dependent variable). The regression graph was plotted with:
- X-axis: Humidity
- Y-axis: Moisture Percentage
This allowed me to observe trends and understand how humidity levels influence soil moisture conditions.
Through this task, I learned how to publish sensor data to a cloud server, retrieve datasets for analysis, visualize trends, and apply basic machine learning techniques for prediction.
Task 6 – Flashing Morse Code Using ESP32 Web Server
I developed a web-based Morse code generator using the ESP32 microcontroller. The objective was to understand how web servers can be hosted on microcontrollers and used for real-time hardware control.
I configured the ESP32 to host a local web server accessible through its IP address. The web page contained an input field where users could type normal text. Once the message was submitted, the ESP32 processed the input, converted each character into its corresponding Morse code representation, and flashed an LED according to Morse timing standards (dots and dashes).
The implementation involved defining a Morse code lookup table within the program and controlling LED blink durations to represent dots (short blink) and dashes (long blink). Proper delays were maintained between symbols, letters, and words to ensure accurate Morse communication. The system successfully translated typed text into LED blink sequences in real time.
Through this project, I gained hands-on experience in creating embedded web servers, handling HTTP requests, processing user input, and integrating software logic with physical output devices. This task demonstrated how web interfaces can be used for device control and communication in embedded systems.
Task 7 – Health Vitals Dashboard
I successfully completed the Health Vitals Dashboard task. In this project, I measured heart rate and blood oxygen (SpO₂) levels using a pulse sensor connected to an ESP32 microcontroller. The ESP32 was programmed to read the sensor data and process the values in real time.
I then created a web server hosted on the ESP32 to display the measured values graphically. Using a web-based chart interface, the heart rate (BPM) and SpO₂ (%) readings were plotted and updated continuously without refreshing the page.
Through this task, I learned how to interface biomedical sensors with ESP32, transmit data over Wi-Fi, and visualize real-time health data on a web dashboard. The system worked successfully and displayed accurate real-time vitals.
Task 9 – Fire Alarm System with SMS Alerts (Using Twilio API)
In this task, I successfully developed a Fire Alarm System using the ESP32 microcontroller integrated with a flame sensor and the Twilio API for SMS notifications. The objective was to understand fire detection mechanisms and learn how to integrate cloud-based messaging services with embedded systems.
The flame sensor was connected to the ESP32 to continuously monitor the presence of heat or fire. A threshold value was defined in the program to determine abnormal heat levels. When the sensor detected flame intensity beyond the set threshold, the ESP32 immediately triggered a local alert (such as a buzzer or LED indicator) to signal potential danger.
Simultaneously, the ESP32 connected to a Wi-Fi network and sent an HTTP request to the Twilio API to deliver an SMS alert to a registered mobile number. The SMS contained a warning message indicating fire detection. This demonstrated successful integration of hardware sensing with cloud-based communication services.
The system was tested under proper supervision with safety precautions, using controlled conditions to simulate flame detection. No real fire hazards were involved during testing.
Through this task, I gained practical experience in flame sensor interfacing, Wi-Fi communication, REST API handling, and real-time SMS alert integration. This project highlighted how IoT systems can be implemented for safety monitoring and emergency notification applications. Git Link
