- Arduino ESP32 micro-controller programming
- Provides simple and clean library for
- reading of various sensors
- export data via WiFi to InfluxDB for visualization in Grafana, see my raspi-sensorics repository
- writing to various displays
- using a device_setup.h file to select the devices attached to that specific Arduino ESP32
- read data from MQTT
- Abstract device class that all other devices inherit from in TM_Device_Class.cpp
- InfuxDB interface via WiFi in TM_InfluxDB_Class.cpp
- BME280 sensor for temperature, humidity and pressure in TM_BME280_Class.cpp
- BH1750 sensor for illumination in TM_BH1750_Class.cpp
- MH-Z19B sensor for CO2 concentration in TM_MH_Z19_Class.cpp
- 7-segment 4-digit TM1637 display in TM_7SegmentDisplay_Class.cpp
- OLED display 128x32px and 128x64px in TM_OLED_Class.cpp
- RGB-LEDs: Ring and Single LED in TM_LED_Ring_Class.cpp
- Learning basics of C++: inheritance, templates, ...
- Using pre compiler #define in device_setup.h file to select which classes are compiled to save time and memory
- Power reduction from 1W to 0.3W by
- Under-clocking the ESP32 from 240 to 80 MHz via setCpuFrequencyMhz(80) in (TM_ESP32_Class.cpp
- Enabling WiFi modem sleep via esp_wifi_set_ps(WIFI_PS_MODEM) in TM_InfluxDB_Class.cpp
- OLED display: implemented bar chart
- Standalone CO2 traffic light for our kindergarden and school
- offline
- in proper case
- using display and traffic light for visualization
- see German Bauanleitung
- Experiment with display devices
- Design and build cases via CAD and CNC
- Add more sensors
CO2 Traffic Light V1.2: Massproduction and added history bar chart via OLED display (Bauanleitung)
CO2 Traffic Light V1 for our School (Bauanleitung)
CO2 Traffic Light Prototype for our Kindergarten: Display of CO2 level (measured by MH-Z19B) on a 7-segment display and RGB-LED
Experimenting with different displays
Display of CO2 level on small OLED display (measured by MH-Z19B)
Display of CO2 in Grafana (measured by MH-Z1B9)
Display of temperature, humidity and pressure in Grafana (measured by BME280)