I created a Simon Says game using an ESP32, pushbuttons, and LEDs. The game randomly blinked the LEDs, prompting users to press the corresponding buttons. If a user made a mistake, the game provided a clear indication and restarted. This project deepened my understanding of the ESP32, microcontroller programming, and game logic while enhancing my skills in input data handling. I encountered challenges, particularly with code uploading, which I resolved with some adjustments that included changing the code to accommodate the absence of the buzzer.
My aim was to learn the basics of the MQTT protocol, its functionality, and the various communication and networking protocols. I discovered that MQTT (Message Queuing Telemetry Transport) is a lightweight publish-subscribe messaging protocol designed for machine-to-machine (M2M) and IoT connectivity, optimized for low-bandwidth, high-latency networks. It operated on a publish/subscribe model, allowing me to act as a publisher to send messages to topics and as a subscriber to receive them, with a broker facilitating this communication. I also learned about key MQTT messages such as CONNECT, CONNACK, PUBLISH, SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK, and DISCONNECT, each playing an essential role in establishing and managing connections.
This task helped me understand how a webpage functions, highlighting the coordination between backend and frontend languages. My aim was to create a website using HTML for structure and CSS for styling, with JavaScript as the primary backend language. I developed a webpage with a button that toggled the background color when pressed, successfully integrating both frontend and backend elements.
In this task, I learned about the MQTT protocol and its applications in IoT by implementing publishing and subscribing functionalities using MQTT-LENS. I successfully set up a system where I could publish messages to control three LEDs individually—turning each LED on or off based on specific commands. This experience deepened my understanding of real-time communication between devices and how MQTT facilitates seamless control. Overall, I gained valuable insights into the workings of IoT protocols and their practical applications in device management.
In this project, I used an ESP32 to post data from a temperature sensor to ThingSpeak via its API. After connecting the sensor and programming the ESP32 to send temperature readings, I visualized the data in a temperature versus time graph on the ThingSpeak dashboard. I also retrieved the logged data and used Matplotlib in Python to create a similar graph. This experience taught me how to publish and retrieve data using web APIs, enhancing my understanding of IoT and data communication while improving my data visualization skills.
I successfully sent data from the ESP32 to an Arduino using the I2C protocol and displayed a message on an LCD screen, which I typed through a web server hosted on the ESP32. One major issue I faced was during code uploads in the Arduino IDE, which I resolved by connecting each microcontroller individually to prevent interference. This task significantly deepened my understanding of how the two microcontrollers could work together and demonstrated the effective use of the I2C protocol for seamless communication between multiple devices.
I aimed to set up an ESP32 to flash Morse code using an LED based on messages sent from a web server hosted on the ESP32. This project enhanced my skills in encoding text into Morse code, controlling hardware like LEDs, and debugging code. Overall, it deepened my understanding of the integration between software and hardware, improving my grasp of interactive systems. I also learned how to connect the ESP32 to Wi-Fi, handle HTTP requests, and create a simple web server for real-time communication.
In this task, I learned how to measure soil moisture using a capacitive soil moisture sensor and display the readings on the serial monitor screen. I set a threshold for the moisture level, which allowed me to send an alert if the soil moisture dropped below that level. This experience enhanced my understanding of how to monitor environmental conditions and manage water levels effectively. Overall, I gained practical skills in using sensors for real-time data monitoring and learned the importance of maintaining optimal soil moisture for plant health.
During the development of the fire alarm system using the ESP32 microcontroller, I gained valuable experience connecting fire sensors and adapting code for effective alerts. Initially, I set up an email notification system but then modified the process to print alerts directly to the Serial Monitor for easier testing. This hands-on work enhanced my understanding of embedded systems and the importance of debugging in real-time, preparing me for more advanced implementations in the future.
In this project, I aimed to measure heart rate and blood oxygen levels using the MAX30100 sensor and display the results on an Android application built with MIT App Inventor. I encountered significant issues when the MAX30100 sensor failed to light up or function correctly, preventing me from obtaining any readings. Despite my efforts to troubleshoot the connections and verify the setup, I could not achieve the desired outcome. Moving forward, I plan to replace the sensor and retry.