https://github.com/migbertweb/mqtt_connect
Proyecto para ESP32-C3 que lee un sensor DHT11, controla un LED y un botón, muestra información en una pantalla OLED y publica/expone el estado a través de un servidor web local. Está pensado como ejemplo funcional para conectar sensores básicos y una UI web ligera.
https://github.com/migbertweb/mqtt_connect
esp32-c3-super-mini platformio
Last synced: 7 months ago
JSON representation
Proyecto para ESP32-C3 que lee un sensor DHT11, controla un LED y un botón, muestra información en una pantalla OLED y publica/expone el estado a través de un servidor web local. Está pensado como ejemplo funcional para conectar sensores básicos y una UI web ligera.
- Host: GitHub
- URL: https://github.com/migbertweb/mqtt_connect
- Owner: migbertweb
- Created: 2025-11-02T13:48:00.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-11-02T14:40:17.000Z (7 months ago)
- Last Synced: 2025-11-02T16:19:41.696Z (7 months ago)
- Topics: esp32-c3-super-mini, platformio
- Language: CMake
- Homepage:
- Size: 645 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# mqtt_connect (ESP32-C3)
## Descripción
Proyecto para ESP32-C3 que lee un sensor DHT11, controla un LED y un botón, muestra información en una pantalla OLED y publica/expone el estado a través de un servidor web local. Está pensado como ejemplo funcional para conectar sensores básicos y una UI web ligera.
El código usa el framework ESP-IDF (también empaquetado para PlatformIO en este repo).
## Características principales
- Lectura periódica de temperatura y humedad desde un DHT11.
- Tarea en segundo plano que actualiza las lecturas del DHT11 cada 5 segundos.
- Pantalla OLED I2C para mostrar estado y mensajes (splash, estado WiFi, etc.).
- Botón con debounce y contador de pulsaciones; al presionar el botón se alterna el LED.
- Servidor web integrado con UI para ver estado, datos del sensor y controlar el LED.
- Código organizado en módulos: `hardware`, `wifi_config`, `web_server`, `oled`, `esp32-dht11`.
## Librerías y créditos
- La implementación del DHT11 utilizada en este repositorio proviene de la librería/implementación de: `abdellah2288/esp32-dht11` (autor: abdellah2288). Su código se incluye como `src/esp32-dht11.c` y `include/esp32-dht11.h`.
- Usa ESP-IDF (o PlatformIO con framework espidf) y las librerías estándar del SDK.
## Diagrama de pines (por defecto, ver `include/hardware.h` y `include/oled.h`)
- LED (salida): GPIO 2
- Botón (entrada, pull-up): GPIO 1
- DHT11 (data): GPIO 0
- OLED (I2C): SDA = GPIO 5, SCL = GPIO 6 (dirección 0x3C)
Nota: Ajusta `DHT11_GPIO`, `LED_GPIO`, `BUTTON_GPIO` o los pines I2C en `include/*.h` según tu conexión física.
## Procesos y comportamiento interno
- Inicialización (en `app_main` / `main.c`):
- Inicializa hardware y periféricos (GPIO, I2C, OLED).
- Muestra pantalla de bienvenida en OLED.
- Intenta conectar a WiFi (funciones en `wifi_config.c`).
- Si WiFi está OK: inicia servidor web (`web_server.c`) y muestra la IP en el OLED.
- Si falla WiFi: entra en modo local y muestra mensaje en OLED.
- Lectura del DHT11 (en `hardware.c`):
- Se crea la tarea `dht_task` (Stack 2048 bytes, prioridad 5) que ejecuta `dht11_read()` cada 5 segundos.
- Tras una lectura exitosa guarda `s_last_temperature` y `s_last_humidity` y marca el sensor como válido; en caso contrario marca como no válido.
- La implementación del DHT11 maneja el protocolo bit a bit del sensor y verifica checksum.
- Botón y LED (en `hardware.c`):
- `hardware_update()` hace debounce del botón con un `DEBOUNCE_DELAY` de 50 ms.
- En flanco de pulsación incrementa el contador `press_count` y alterna el LED.
- Servidor web (en `web_server.c`):
- Rutas principales:
- `/` - Página HTML con UI y controles (UTF-8).
- `/status` - JSON con estado actual: LED, botón, IP, RSSI, temperatura, humedad y si el sensor es válido.
- `/led` - POST para controlar el LED (acciones: 0=OFF, 1=ON, 2=TOGGLE).
- La UI realiza peticiones periódicas (cada 3s) para actualizar estado.
## Archivos relevantes
- `src/esp32-dht11.c`, `include/esp32-dht11.h` — implementación DHT11 (fuente: abdellah2288/esp32-dht11).
- `src/hardware.c`, `include/hardware.h` — manejo de GPIO, DHT task, LED y botón.
- `src/oled.c`, `include/oled.h` — drivers y utilidades OLED (I2C).
- `src/wifi_config.c`, `include/wifi_config.h` — conexión WiFi y utilidades.
- `src/web_server.c`, `include/web_server.h` — servidor HTTP y endpoints.
## Cómo compilar y flashear
Este proyecto puede compilarse con PlatformIO (si usas el `platformio.ini` incluído) o con el flujo estándar de ESP-IDF.
Ejemplos (desde la raíz del proyecto):
Con PlatformIO:
```bash
pio run # compilar
pio run -t upload # compilar y flashear
pio device monitor # monitor serie
```
Con ESP-IDF (cmake):
```bash
idf.py build
idf.py -p /dev/ttyUSB0 flash
idf.py -p /dev/ttyUSB0 monitor
```
Asegúrate de seleccionar el puerto serie correcto para tu placa.
## Configuración WiFi y ajustes
- La configuración de red se gestiona en `wifi_config.c` / `include/wifi_config.h`. Modifica SSID/PSK o el método de provisión que uses.
## Buenas prácticas y notas
- Si el DHT11 devuelve lecturas inconsistentes, revisa la conexión (pull-up si aplica) y el pin configurado en `DHT11_GPIO`.
- La tarea de DHT está configurada para 5 segundos entre lecturas; al ser un sensor lento, no es recomendable solicitar lecturas más frecuentes.
- Si añades MQTT u otras integraciones, respeta el uso de tareas y colas para evitar bloquear el loop principal.
## Licencia
Revisa la licencia del código original y la de las dependencias. Este repositorio incluye implementaciones de terceros (como la de `abdellah2288/esp32-dht11`) — respeta sus condiciones.
---
Si quieres que el README incluya una sección de ejemplo de payloads MQTT, diagramas de conexión en ASCII o instrucciones de depuración específicas, dímelo y lo añado.