WaterPi: Riego y Monitorización Inteligente Remota para Plantas de Interior
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Raspberry Pi 1 Model B | 1 |
| Arduino UNO | 1 |
| Sensor temp/humedad DHT11 (4 pines) | 1 |
| Sensor humedad suelo YL-69 | 1 |
| Sensor nivel agua | 1 |
| Pantalla LCD 16x2 estándar | 1 |
| Bomba de agua (motor DC) | 1 |
| Relé 5V | 1 |
| Portapilas 4xAA | 1 |
Software y servicios en la nube
- Amazon Web Services AWS IoT
- Amazon Web Services AWS DynamoDB
- Johnny-Five (framework Node.js para Arduino)
Sobre el proyecto
Introducción
Sistema para quienes aman las plantas pero tienen poco tiempo o viajan mucho. Olvidar regar o no poder cuidarlas hace que muchos renuncien a tenerlas. WaterPi automatiza tareas regulares y permite control remoto para intervenir cuando sea necesario.
Monitoriza temperatura, humedad ambiente, humedad del suelo, riega remotamente y guarda todo en DynamoDB vía AWS IoT. Datos visualizados en gráficas para entender mejor las condiciones óptimas.
Raspberry Pi ejecuta aplicación Node.js (librería Johnny-Five) para controlar sensores y bomba. Comunicación con AWS mediante AWS IoT SDK para JavaScript.
Paso 1: Configurar DynamoDB
Crear tabla waterpi_sensor_data:
- Partition Key:
key(String) - Sort Key:
timestamp(String)
Paso 2: Configurar AWS IoT
- Crear Thing:
raspi-water-pump. - Crear Policy:
pump-policy, Actioniot:*, Resource*, Allow. - Crear Certificado (1-Click). Descargar clave pública, privada y certificado.
- Activar certificado → Adjuntar policy
pump-policy→ Adjuntar thingraspi-water-pump. - Crear Rule
saveToDynamoDB:- Attribute:
* - Topic Filter:
sensor/data - Acción: "Insert message into a database table"
- Tabla:
waterpi_sensor_data - Hash key:
${topic()}, Range key:${timestamp()} - Crear nuevo Role y permitir.
- Attribute:
Paso 3: Preparar Arduino
Sensores de humedad suelo y nivel de agua dan salida analógica. Usamos Arduino para leerlos y enviar valores digitales a Pi por USB. Solo hay que subir StandardFirmata:
- Abre Arduino IDE → Archivo > Ejemplos > Firmata > StandardFirmata.
- Sube a Arduino.
Cableado sensores a Arduino:
- YL-69 (humedad suelo): VCC→Pin 7, GND→GND, AO→A1
- Sensor nivel agua: +→Pin 4, -→GND, S→A0
Conecta Arduino a Raspberry Pi por USB. Coloca sensores en maceta y depósito.
Paso 4: Preparar Raspberry Pi
Cableado a Pi (GPIO):
- DHT11: S→GPIO4 (pin 7), +→3V3 (pin 1), -→GND (pin 25)
- LCD 16x2 (I2C): VCC→5V (pin 2), GND→GND (pin 6), SDA→GPIO2 (pin 3), SCL→GPIO3 (pin 5)
- Relé bomba: S→GPIO18 (pin 12), +→5V (pin 4), -→GND (pin 20)
Bomba + relé + pilas 4xAA: un cable bomba a relé, otro a portapilas; otro cable portapilas a relé (ver diagrama).
Paso 5: Ejecutar app Node.js en Pi
git clone git@github.com:demirhanaydin/waterpi-node.git
cd waterpi-node
npm install
Coloca en carpeta certs/: clave pública, privada, certificado (de AWS IoT) y rootCA.pem (descargar de Amazon Trust).
Edita device.js: actualiza rutas de certificados y IOT_DEVICE_URL (formato https://XXXXXXXXX.iot.us-east-1.amazonaws.com, lo sacas de AWS IoT → tu Thing).
Ejecuta:
sudo node index.js
Deberías ver valores en LCD. Cada 20s se envían a AWS IoT → DynamoDB.
Paso 6: Aplicación Web (visualización y control remoto)
App Sinatra (Ruby) + Highcharts. Lee DynamoDB y muestra gráficas. Botón Start/Stop publica evento en AWS IoT → Pi lo recibe y activa/para bomba.
git clone git@github.com:demirhanaydin/waterpi-web.git
cd waterpi-web
bundle install
Pon certificados en certs/. Edita boot.rb con credenciales AWS (Access Key / Secret de Security Credentials).
ruby app.rb
Abre https://localhost:4567/ → gráficas con datos. Botón "Start" inicia riego.
Código fuente
- Raspberry Pi Node.js: github.com/demirhanaydin/waterpi-node (clona en Pi, añade certs en
certs/, editadevice.jscon tu IoT Thing URL). - WaterPi Web Client: github.com/demirhanaydin/waterpi-web (actualiza
boot.rbcon credenciales AWS).
Esquemáticos
- Esquema completo Raspberry Pi (sin cámara):
pi-wout-camera.fzz(Fritzing) + imagen. - Esquema Arduino:
arduino.fzz(Fritzing) + imagen.
Proceso de manufactura
- GE completa la adquisición de SmartSignal, fortaleciendo monitorización remota y diagnóstico predictivo
- Sistema de acuaponía controlado por Raspberry Pi: guía de construcción y código
- Centro de Energía Doméstica: Monitorización de paneles solares fotovoltaicos, térmicos y temperaturas con Raspberry Pi y Moteino
- Monitorización meteorológica remota con Raspberry Pi 3 y PubNub
- Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
- Control de sensores y actuadores con Raspberry Pi: acelerómetro, servo y streaming de datos
- Sistema de Seguridad Doméstico con Raspberry Pi: Detección de Movimiento PIR y Alertas por Email con Cámara
- Monitorización en la nube: Sistema de control remoto para gestión de activos en tiempo real
- ADLINK lanza solución MCM avanzada para monitorización remota de instalaciones y mantenimiento predictivo
- Cisco lanza monitorización IoT gestionada en cloud para entornos IT y OT
- Sistema de Monitorización Remota IoT para Tanques de Petróleo y Diésel