UT3 · Programación de microcontroladores

16 horas · RA3 · Arduino IDE, buses y librerías del aula

Por qué ESP32

32 bits, Wi-Fi y BLE integrados, ADC, I2C, SPI, UART y precio de aula. Arduino y Raspberry Pi se presentan como alternativas: Arduino UNO no trae red; la Pi es microprocesador con Linux, no un MCU de tiempo real barato.

Instalación del entorno

  1. Arduino IDE 2 → Preferencias → URL de placas Espressif.
  2. Gestor de placas → esp32 by Espressif Systems.
  3. Herramientas: placa ESP32 Dev Module, puerto COM, 115200 baudios.
  4. Gestor de bibliotecas: WiFiManager (tzapu), DHTesp, U8g2, ArduinoJson.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Lectura DHT22 con DHTesp

#include <DHTesp.h>

DHTesp sensorDht;

void setup() {
  Serial.begin(115200);
  sensorDht.setup(4, DHTesp::DHT22);
}

void loop() {
  TempAndHumidity datos = sensorDht.getTempAndHumidity();
  Serial.print("Temperatura: ");
  Serial.println(datos.temperature);
  Serial.print("Humedad: ");
  Serial.println(datos.humidity);
  delay(2000);
}

OLED con U8g2 (I2C)

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

U8G2_SSD1306_128X64_NONAME_F_HW_I2C pantalla(U8G2_R0, U8X8_PIN_NONE);

void setup() {
  Wire.begin(21, 22);
  pantalla.begin();
}

void loop() {
  pantalla.clearBuffer();
  pantalla.setFont(u8g2_font_ncenB08_tr);
  pantalla.drawStr(8, 24, "DPIOT - Aula IoT");
  pantalla.sendBuffer();
  delay(1000);
}

Buses: UART, I2C, SPI

BusHilos de datosUso en el kit
UARTTX/RXMonitor serie y GPS
I2CSDA/SCLOLED, RTC, BMP280
SPIMOSI/MISO/SCK/CSPantallas rápidas, SD

En I2C todos los esclavos comparten el bus: cada uno necesita dirección distinta (el OLED suele ser 0x3C).

JSON para el servidor

#include <ArduinoJson.h>

void serializarLectura(float temperatura, float humedad, int rssi) {
  JsonDocument documento;
  documento["dispositivo"] = "esp32-aula-01";
  documento["temperatura"] = temperatura;
  documento["humedad"] = humedad;
  documento["rssi"] = rssi;
  serializeJson(documento, Serial);
}

Autoevaluación UT3

1. DHTesp::DHT22 indica…
2. U8g2 envía el dibujo a la pantalla con…