Í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:
- Al iniciar por primera vez, el ESP32 crea un punto de acceso WiFi
- Conectarse a la red "ESP32_AP" desde un dispositivo
- Abrir el navegador y acceder a 192.168.4.1
- Seleccionar la red WiFi y introducir la contraseña
- 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:
- Pantalla OLED: Muestra los valores actuales de temperatura y humedad
- Monitor Serial: Muestra información de depuración y estado del sistema
- 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