Laboratorio ESP32

Prácticas copiables · WiFiManager · DHTesp · U8g2 · HTTPClient · ArduinoJson

P1 · Monitor serie

Comprueba el puerto y la alimentación USB.

void setup() {
  Serial.begin(115200);
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(2, HIGH);
  Serial.println("DPIOT vivo");
  delay(400);
  digitalWrite(2, LOW);
  delay(400);
}

P2 · DHT + OLED

Archivo completo: firmware/estacion_aula/estacion_aula.ino (más abajo, versión corta).

#include <DHTesp.h>
#include <U8g2lib.h>
#include <Wire.h>

DHTesp sensorDht;
U8G2_SSD1306_128X64_NONAME_F_HW_I2C pantalla(U8G2_R0, U8X8_PIN_NONE);

void setup() {
  sensorDht.setup(4, DHTesp::DHT22);
  Wire.begin(21, 22);
  pantalla.begin();
}

void loop() {
  TempAndHumidity datos = sensorDht.getTempAndHumidity();
  pantalla.clearBuffer();
  pantalla.setFont(u8g2_font_6x12_tr);
  pantalla.setCursor(0, 14);
  pantalla.print("T: ");
  pantalla.print(datos.temperature);
  pantalla.setCursor(0, 32);
  pantalla.print("H: ");
  pantalla.print(datos.humidity);
  pantalla.sendBuffer();
  delay(2000);
}

P3 · Portal Wi-Fi

#include <WiFiManager.h>

void setup() {
  Serial.begin(115200);
  WiFiManager gestorWifi;
  gestorWifi.autoConnect("DPIOT-ESP32");
  Serial.println(WiFi.localIP());
}

void loop() {}

P4 · POST al cuaderno

Boceto de integración: estacion_aula.ino

http.begin("https://unicarlos.es/MODULOS/DPIOT/api/telemetria.php");
http.addHeader("Content-Type", "application/json");
http.POST(cuerpo);

P5 · Umbral y relé

const int PIN_RELE = 26;
const float UMBRAL = 28.0;

void aplicarUmbral(float temperatura) {
  digitalWrite(PIN_RELE, temperatura >= UMBRAL ? HIGH : LOW);
}

El relé de aula mueve un LED o un ventilador USB, no la red de 230 V.

Lista de comprobación