Prácticas copiables · WiFiManager · DHTesp · U8g2 · HTTPClient · ArduinoJson
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);
}
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);
}
#include <WiFiManager.h>
void setup() {
Serial.begin(115200);
WiFiManager gestorWifi;
gestorWifi.autoConnect("DPIOT-ESP32");
Serial.println(WiFi.localIP());
}
void loop() {}
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);
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.