This project features an ESP32-based system that monitors two separate I²C buses and displays real-time data on a 7-segment display. Non-blocking timing techniques drive accurate sampling of either bus at set intervals while enabling continuous display refresh rates. The system demonstrates efficient hardware interfacing, I²C communication, and embedded C++ programming for responsive, low memory applications.
In the ESP32 code, a WiFi connnection is also established at system boot up. On my local PC I run a Python script that starts a FastAPI application which monitors post requests from the ESP32. This enables me to wirelessly transmit sensor data collected over the I2C bus to my local computer using WiFi.
All of the code is available in this github repository .
I designed and 3D printed a custom test bench to securely contain the electronics and sensors. The test bench also organizes components, improving ease of handling during testing and set up. Additionally, the custom design assures organization and allows for neat cable management.
A video showcasing the functionality of the fully integrated system.