Monitor de calidad del aire basado en ESP32 + BME680 + BSEC2 + pantalla e-ink, con conectividad WiFi, integración MQTT, panel web embebido y actualización OTA desde navegador.
El proyecto está pensado como un dispositivo autónomo de escritorio que muestra en pantalla temperatura, humedad, IAQ y eCO2, y al mismo tiempo expone una interfaz web local para configuración, histórico y mantenimiento.
- Lectura de
temperatura,humedad,IAQyeCO2conBME680yBosch BSEC2 - Visualización local en pantalla
e-ink 1.54" - Pantalla de bienvenida con datos de red al arrancar
- Panel web servido desde
LittleFS - Configuración de idioma: español, inglés y polaco
- Configuración MQTT desde la web
- Integración MQTT con autodiscovery para Home Assistant
- OTA desde navegador en la ruta
/ota - Histórico ligero en RAM para gráficas web
- Persistencia de configuración en
NVS, separada del filesystem web
ESP32 Dev Module / Wemos ESP32BME680por I2CPantalla e-ink 1.54"compatible conGxEPD2_154_D67- Alimentación por
USB 5V
| Señal | ESP32 |
|---|---|
SDA |
GPIO 21 |
SCL |
GPIO 22 |
VCC |
3V3 |
GND |
GND |
| Señal | ESP32 |
|---|---|
BUSY |
GPIO 4 |
RES |
GPIO 16 |
DC |
GPIO 17 |
CS |
GPIO 5 |
SCK / CLK |
GPIO 18 |
MOSI / DIN / SDA |
GPIO 23 |
VCC |
3V3 |
GND |
GND |
ESP32
├── I2C ──> BME680
│ ├── GPIO21 SDA
│ └── GPIO22 SCL
└── SPI ──> E-Ink 1.54"
├── GPIO5 CS
├── GPIO17 DC
├── GPIO16 RES
├── GPIO4 BUSY
├── GPIO18 SCK
└── GPIO23 MOSI
src/
├── main.cpp Arranque y bucle principal
├── SensorManager.cpp Lectura BME680/BSEC2
├── DisplayManager.cpp Interfaz e-ink
├── NetworkManager.cpp Conexión WiFi y portal
├── MqttManager.cpp Publicación MQTT y discovery
├── WebManager.cpp API, OTA y servidor web
├── HistoryManager.cpp Histórico en RAM para gráficas
└── ConfigManager.cpp Persistencia en NVS y migración legacy
La interfaz se sirve desde LittleFS:
/panel principal/otaactualización OTA/api/statusestado actual en JSON/api/historyhistórico en JSON
Archivos web:
data/index.htmldata/styles.cssdata/app.js
La configuración del dispositivo se guarda en NVS:
- broker MQTT
- puerto MQTT
- usuario y contraseña
- prefijo MQTT
- intervalo de refresco de pantalla
- intervalo de muestreo del histórico
- idioma de la interfaz
La web y los recursos estáticos viven en LittleFS, así que se pueden actualizar sin perder la configuración.
pio runpio run -t upload --upload-port COM4pio run -t uploadfs --upload-port COM4Los valores incluidos en platformio.ini son genéricos y sirven solo como defaults de arranque limpio. No se usan para sobreescribir la configuración ya guardada en el dispositivo.
- Proyecto listo para publicarse en GitHub sin credenciales MQTT reales
- Web desacoplada del firmware
- OTA integrada sin dependencias externas de branding
- Configuración persistente protegida frente a cambios del filesystem