Building a prototype for measuring and detecting volatile organic compounds with ESP32 and BME688 gas sensor
Wolpmann, Lasse (2025)
Wolpmann, Lasse
2025
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2025060921697
https://urn.fi/URN:NBN:fi:amk-2025060921697
Tiivistelmä
Traditional methods for measuring VOCs (Volatile Organic Compounds) are expensive and require extensive training on special equipment and knowledge in chemistry. MOx sensors provide an interesting alternative, potentially allowing for a cheaper, faster, and easier method to measure and detect gases, by measuring the change of resistance over a metal-oxide layer.
The goal of this thesis was to study the capabilities and limitations of such MOx sensors, specifically the Bosch BME688. The research began with a thorough review of the BME688 documentation and initial testing using the software provided by Bosch. These early measurements helped build foundational knowledge of the sensor’s operation. However, as the project progressed, the limitations of Bosch’s software, particularly in areas such as developing larger AI models, became evident. This led to the decision to design and implement a custom solution tailored to the project’s specific needs.
This custom solution is split into two parts: An embedded C++ program written for an ESP32 microcontroller, and a SvelteKit web application acting as a User Interface. The ESP32 collects data and changes the settings on the BME688, by communicating via the I2C and SPI interfaces, with the collected data being sent via the MQTT protocol. The User Interface allows for an intuitive way to change the sensor’s settings, inspect previously collected data, and train AI models with existing data and make predictions on new data.
The goal of this thesis was to study the capabilities and limitations of such MOx sensors, specifically the Bosch BME688. The research began with a thorough review of the BME688 documentation and initial testing using the software provided by Bosch. These early measurements helped build foundational knowledge of the sensor’s operation. However, as the project progressed, the limitations of Bosch’s software, particularly in areas such as developing larger AI models, became evident. This led to the decision to design and implement a custom solution tailored to the project’s specific needs.
This custom solution is split into two parts: An embedded C++ program written for an ESP32 microcontroller, and a SvelteKit web application acting as a User Interface. The ESP32 collects data and changes the settings on the BME688, by communicating via the I2C and SPI interfaces, with the collected data being sent via the MQTT protocol. The User Interface allows for an intuitive way to change the sensor’s settings, inspect previously collected data, and train AI models with existing data and make predictions on new data.