Capacitación Arduino · Sensor de humedad
Sonda YL-69 + módulo FC-28 (comparador LM393): el LED verde dice «suelo húmedo» y el rojo «¡regar!». Simulado en Tinkercad y en OpenCircuits.
El componente
Cómo funciona
Truco de simulación
El módulo compara la humedad con el umbral del trimmer y entrega el resultado por DO.
| Parte del kit | La reemplazamos con | Arduino |
|---|---|---|
| Sonda + AO | Sensor de humedad del suelo (sí existe en Tinkercad) seco = 0 · más agua = valor más alto | A0 |
| Trimmer azul | Potenciómetro umbral de 0 a 1023 | A1 |
| Comparador LM393 | El código:if (humedad < umbral) | — |
| LED DO | LED verde (húmedo) y LED rojo (regar), con 220 Ω | D12 · D13 |
Paso 1 · Componentes
Buscar: Arduino
Buscar: Placa de pruebas
Buscar: humedad. Hace de sonda + AO.
Hace de trimmer azul: fija el umbral.
Una para cada LED.
Suelo húmedo: todo bien.
Suelo seco: ¡hay que regar!
Paso 2 · Circuito
Paso 2 · Conexiones
| Alimentación | ||
| Arduino 5V | Riel + inferior | |
| Arduino GND | Riel − inferior | |
| Sensor de humedad (fuera de la protoboard) | ||
| Sensor VCC | Riel + inferior | |
| Sensor GND | Riel − inferior | |
| Sensor SIG | Arduino A0 | |
| Trimmer (potenciómetro) | ||
| — | Potenciómetro (fila e) | Columnas 14, 15, 16 |
| Columna 14 | Riel − | |
| Columna 16 | Riel + | |
| Columna 15 (cursor) | Arduino A1 | |
| LED verde · suelo húmedo | ||
| — | LED cátodo / ánodo (fila e) | Columna 18 / 19 |
| — | 220 Ω | Columna 19 → 23 (fila c) |
| Arduino D12 | Columna 23 | |
| Columna 18 | Riel − | |
| LED rojo · ¡regar! | ||
| — | LED cátodo / ánodo (fila e) | Columna 25 / 26 |
| — | 220 Ω | Columna 26 → 30 (fila c) |
| Arduino D13 | Columna 30 | |
| Columna 25 | Riel − | |
Paso 3 · Código en bloques
Variables → Crear variable: humedad y umbral.
Paso 3 · Código C++
// C++ code // int humedad = 0; int umbral = 0; void setup() { pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(13, OUTPUT); pinMode(12, OUTPUT); }
void loop() { humedad = analogRead(A0); umbral = analogRead(A1); if (humedad < umbral) { digitalWrite(13, HIGH); digitalWrite(12, LOW); } else { digitalWrite(13, LOW); digitalWrite(12, HIGH); } delay(10); // Delay a little bit to improve simulation performance }
Paso 4 · Simular
| Ningún LED enciende | Revisa la orientación (pata doblada = ánodo, hacia la resistencia). |
| Siempre rojo | Baja el umbral (potenciómetro) o sube la humedad del sensor. |
| Siempre verde | El umbral está en 0: súbelo. |
| No cambia nunca | Las lecturas deben estar dentro de «siempre», no en «al iniciar». |
Paso 5 · Kit real
| Desde | Hacia |
|---|---|
| Sonda + y − | Módulo P+ y P− |
| Módulo DO | Arduino D2 |
| Módulo VCC | 5V |
| Módulo GND | GND |
| Módulo AO | sin conectar |
Quita el sensor de Tinkercad y el potenciómetro: el módulo FC-28 ya trae su trimmer y su comparador. Los LEDs y sus 220 Ω se quedan.
Borra las dos lecturas analogRead y cambia el if (humedad < umbral) por:
if (digitalRead(2) == HIGH) { // DO en HIGH = suelo seco
No dejes la sonda siempre conectada a 5V: con el tiempo se oxida. En proyectos reales se alimenta solo al medir.
Alternativa · OpenCircuits
El bloque verde de la categoría Higrómetro lee la salida DO del módulo FC-28: es verdadero cuando la tierra está más seca que el umbral del tornillo azul. Reemplaza al if (humedad < umbral) de Tinkercad.
No hacen falta variables: el módulo ya decide.
// C++ code // void setup() { pinMode(2, INPUT); pinMode(13, OUTPUT); pinMode(12, OUTPUT); }
void loop() { if (digitalRead(2) == HIGH) { digitalWrite(13, HIGH); digitalWrite(12, LOW); } else { digitalWrite(13, LOW); digitalWrite(12, HIGH); } delay(10); // Delay a little bit to improve simulation performance }
digitalRead(2).Para seguir
Muestra la humedad en el Monitor serie cada segundo. Pista: Serial.println(humedad).
Agrega un LED amarillo: seco (rojo), justo (amarillo) y húmedo (verde), con dos umbrales.
Si la tierra sigue seca por más de 10 segundos, suena el buzzer en D8.
Con el módulo real, lee AO y conviértelo a % con map(valor, 1023, 300, 0, 100).