Tutorial - ESP32 con WiFiManager, OLED, DHT22 y PHP

Índice

1. Estructura del Programa

El programa está dividido en varios archivos para mejor organización:

  • esp32_wifimanager_oled_dht22_php.ino: Archivo principal que coordina todo el sistema
  • oled.h: Manejo de la pantalla OLED
  • wm.h: Gestión de la conexión WiFi
  • dht22.h: Lectura del sensor DHT22
  • php.h: Envío de datos al servidor PHP
  • http.h: Envío de datos mediante HTTP

2. Configuración Inicial

En el setup() se realizan las siguientes operaciones:


void setup() {
    Serial.begin(115200);
    Serial.println();
    Serial.println("Iniciando...");
    setupOled();
    mostrarOled("Iniciando...", "WiFiManager", "OLED", "ESP32");
    setupWM();
    setupDHT22();
}
                

Este código:

  • Inicia la comunicación serial a 115200 baudios
  • Configura la pantalla OLED
  • Muestra un mensaje inicial
  • Inicia WiFiManager
  • Configura el sensor DHT22

3. Configuración WiFi

El sistema utiliza WiFiManager para facilitar la conexión WiFi:

  1. Al iniciar por primera vez, el ESP32 crea un punto de acceso WiFi
  2. Conectarse a la red "ESP32_AP" desde un dispositivo
  3. Abrir el navegador y acceder a 192.168.4.1
  4. Seleccionar la red WiFi y introducir la contraseña
  5. El ESP32 se conectará automáticamente a esta red

4. Lectura de Sensores

El programa lee los datos del sensor DHT22 cada 10 segundos:

  • Temperatura en grados Celsius
  • Humedad relativa en porcentaje

Los datos se muestran en la pantalla OLED y se almacenan en variables globales para su envío.

5. Envío de Datos PHP (php.h)


const char* serverUrl = "https://unicarlos.es/arduino/esp32_wifimanager_oled_dht22_php/php.php";
                

Envía datos en formato JSON cada 10 segundos.

6. Visualización

Los datos pueden verse de tres formas:

  1. Pantalla OLED: Muestra los valores actuales de temperatura y humedad
  2. Monitor Serial: Muestra información de depuración y estado del sistema
  3. Interfaz Web: Visualiza los datos en gráficas y medidores en tiempo real

Notas Importantes

  • Asegúrate de modificar las URL en php.h según tu configuración
  • La pantalla OLED debe estar conectada correctamente a los pines I2C (21 y 22)
  • El sensor DHT22 debe estar conectado al pin GPIO15
  • El intervalo de envío de datos es de 10 segundos para ambos métodos