- C 94.1%
- C++ 3.2%
- Shell 2%
- Makefile 0.4%
- CMake 0.3%
Sensor Cube
A small (8 cm)3, open-source, ESP32-powered, IoT air quality measuring device with audio/visual alerts and WiFi (MQTT).
Want to build your own? Visit the guide!
| Render | Photo |
|---|---|
| Render of the Sensor Cube | Photo of the Sensor Cube |
Index
- Features
- Technical Specifications
- Firmware Installation
- Motivation
- Inspiration
- Learn More
- LLM Statement
- License
Features
- 🔎 Measures:
- Particulate matter (PM1.0, PM2.5, PM4.0, PM10)
- Volatile organic compounds (VOC)
- Nitrogen oxides (NOx)
- Carbon dioxide (CO2)
- Humidity
- Temperature
- 💡 Visual alerts via RGB LED and IPS display
- 🔊 Audio alerts via buzzer
- 🛜 MQTT interface for Smart Home integration
- 🔋 Integrated battery w/ charging for cordless operation
- 💤 Low power consumption with deep sleep support *
- 📦 Compact 3D printed enclosure
- 💅 Minimal soldering required
- 🖥️ Simple user-interface with system settings
- 📋 Many more features planned, see todo.md
* Not yet implemented
Technical Specifications
- Microcontroller: Adafruit ESP32-S3 Reverse TFT Feather *
- Sensor: Sensirion SEN66
- Battery: 2000 mAh Li-Po (any capacity that fits the case should work)
- Light: Diffused 5mm RGB LED
- Speaker: Passive Piezo Buzzer
- Enclosure: 3D printed PETG
* A future iteration may work with more generic ESP32 boards with a separate display and buttons.
Firmware Installation
Simple
- Download a pre-built firmware from the releases page.
- Follow the flashing guide.
Advanced
Build your own, customized variant of the firmware by following the development guide.
Motivation
The author developed it as part of a personal learning exercise. It is her first ESP32 project and her first major C project overall. Nevertheless she strived for the following goals:
- Small physical form factor
- Little to no soldering
- As few components as possible
- Optimal sensor placement
- Intuitive and minimalistic UI/UX
Inspiration
- Arduino LLC
- Limor "Ladyada" Fried
- Simone Giertz
- Thomas Sanladerer
Learn More
LLM Statement
The author had previously utilised LLMs for basic autocompletion and refactoring in this project. They have always been strongly opposed to vibe coding, being well aware that it could replace human ingenuity if used incorrectly.
Until LLMs have overcome ethical, environmental and security-related concerns, the author refuses to utilise them any further.
License
All code in ./main/ is licensed under the GPLv3. The case models in ./assets/models/SensorCube/ are licensed under CC BY-SA 4.0.
Other files may have their own license referenced as a sibling file or a comment in the file itself.