Arduino
Con la electrónica clara, toca darle inteligencia al circuito. Arduino es la placa que lee sensores y acciona cosas (LED, relés, pantallas) ejecutando código que tú escribes. En este módulo construimos la primera pieza real de la «Estación inteligente del salón»: leer la temperatura y la humedad del ambiente y mostrar una alerta visual.
¿Qué es?
Arduino es un microcontrolador en una placa fácil de usar. Un microcontrolador es un computador diminuto: tiene CPU, memoria y pines de entrada/salida, pero no ejecuta un sistema operativo. Ejecuta un solo programa, el tuyo, en bucle eterno. Lo programas en C/C++ desde el Arduino IDE y lo subes por USB.
¿Cómo funciona?
Todo programa Arduino (un sketch) tiene dos funciones obligatorias:
void setup() {
// Se ejecuta UNA vez al encender. Aquí configuras pines.
}
void loop() {
// Se repite POR SIEMPRE. Aquí va la lógica.
}
setup() corre una vez; loop() se repite millones de veces por segundo. Los pines se configuran como entrada (leer un sensor) o salida (encender un LED) con pinMode(), y se manejan con digitalWrite(), digitalRead() y analogRead().
¿Para qué sirve?
Sirve para convertir el mundo físico en datos y reaccionar: si la temperatura pasa de un umbral, enciende una alerta. Esa es exactamente la lógica de nuestra estación.
La pieza que construye: lectura de ambiente con DHT22
El DHT22 es un sensor digital de temperatura y humedad. Habla por un solo pin de datos usando una librería.
Conexiones (DHT22 al Arduino Uno):
- Pin VCC del DHT22 → 5V del Arduino.
- Pin GND del DHT22 → GND del Arduino.
- Pin DATA del DHT22 → pin digital 2 del Arduino.
- Una resistencia de 10kΩ entre DATA y VCC (resistencia pull-up, recomendada).
- LED de alerta: ánodo → resistencia 220Ω → pin 8; cátodo → GND.
Instala la librería DHT sensor library (de Adafruit) desde el gestor de librerías del IDE. Luego el sketch:
#include <DHT.h>
#define PIN_DHT 2 // Pin de datos del sensor
#define TIPO_DHT DHT22 // Modelo del sensor
#define PIN_LED 8 // LED de alerta
#define UMBRAL_TEMP 28.0 // °C a partir de los cuales alertamos
DHT dht(PIN_DHT, TIPO_DHT);
void setup() {
Serial.begin(9600); // Abre comunicación con el PC a 9600 baudios
pinMode(PIN_LED, OUTPUT);
dht.begin();
Serial.println("Estacion lista. Leyendo ambiente...");
}
void loop() {
delay(2000); // El DHT22 necesita 2s entre lecturas
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature(); // en °C
// Si la lectura falla, los valores son NaN
if (isnan(humedad) || isnan(temperatura)) {
Serial.println("Error: no se pudo leer el sensor.");
return; // sale del loop y reintenta
}
Serial.print("Temp: ");
Serial.print(temperatura);
Serial.print(" C Humedad: ");
Serial.print(humedad);
Serial.println(" %");
// Lógica de alerta: enciende el LED si hace mucho calor
if (temperatura >= UMBRAL_TEMP) {
digitalWrite(PIN_LED, HIGH);
} else {
digitalWrite(PIN_LED, LOW);
}
}
Sube el sketch (botón con la flecha) y abre el Monitor Serie (lupa arriba a la derecha, a 9600 baudios). Verás las lecturas cada 2 segundos. Sopla aire caliente sobre el sensor y, al pasar de 28°C, el LED se enciende.
El DHT22 funciona a 5V con el Arduino Uno. Si después conectas este mismo sensor a un ESP32 (3.3V), aliméntalo a 3.3V, no a 5V, o dañarás la placa.
Ese Serial.print(...) no es decorativo: es cómo el Arduino enviará los datos que en módulos siguientes mandaremos por WiFi a la nube. El formato que imprimes hoy es la base del mensaje de mañana.
Tech English: sketch (programa Arduino), upload (subir el código), baud rate (velocidad serie), threshold (umbral), pull-up resistor (resistencia de subida).
Ejercicios
- Añade un segundo umbral de humedad: si la humedad baja de 30%, parpadea el LED (encendido/apagado cada 500ms) en vez de dejarlo fijo.
- Modifica el sketch para imprimir las lecturas en formato
temp=24.5;hum=60.0, separadas por punto y coma, pensando en cómo otra máquina las leerá después.