Sistema Inteligente de Monitorizado de Plantas con Windows 10 IoT, Arduino y Raspberry Pi
Componentes y materiales
- 1x Arduino Due (basado en ARM, trabaja a 3.3V)
- 1x Raspberry Pi 2 Model B
- 1x Sensor BMP180 (presión barométrica, temperatura, altitud)
- 1x ADC ADS1115 16 bits I2C
- 4x Sensores de humedad de suelo (con módulo comparador)
- 2x Servos Tower Pro MG996R
- 2x Relés (genéricos)
- 1x Protoboard (genérica)
Aplicaciones y servicios online
- Microsoft Visual Studio 2015
- Arduino IDE
Sobre el proyecto
Introducción al proyecto
Este proyecto crea un sistema de monitorizado y riego automático de plantas. La tarea principal es controlar servos y relés, y recoger datos de humedad del suelo. Como la Raspberry Pi no tiene conversor analógico-digital (ADC), usé un ADC externo (ADS1115) y una pasarela Arduino (que sí tiene ADC integrado). Para interactuar con el entorno solemos necesitar PWM; encontré tres formas: PWM por software, pasarela Arduino, o módulo/IC con PWM. Implementé las dos primeras porque ya tenía experiencia con dispositivos I2C. ADC y PWM son muy comunes en Arduino, así que si queremos usar GPIO en la Pi, casi siempre necesitamos al menos uno de estos.
La aplicación
La app tiene dos modos:
- Automático: Detecta si la planta necesita agua y la riega.
- Manual: Controlas servos y relés manualmente.
Como un servo gira ~180°, uno solo puede regar 2 plantas. El modo automático es el predeterminado. Al leer los sensores de humedad, categorizamos su valor en 5 niveles. El más seco (categoría 5) se marca en rojo en la GUI; el más húmedo (categoría 1) en verde. Un temporizador comprueba periódicamente estos valores y si la categoría de "planta A" o "B" supera el umbral (suelo demasiado seco), riega la más seca. En el mismo periodo comprueba y riega "planta C" y "D" de forma similar, repitiendo cada ciclo.
Los componentes
Servo SG90
Mover un servo requiere alta frecuencia de reloj GPIO. El proveedor por defecto no basta, así que usé el proveedor "lightning". Hubo problemas con la primera fuente de alimentación de la Pi: leí que necesita una mejor y los servos consumen mucha corriente. Con el cargador de iPad funciona mucho mejor, aunque a veces duda. Un circuito de servo con alimentación externa resuelve el problema:

Conecté el Vcc del servo a 5V de la fuente externa, la señal igual y masa común. Así funciona perfectamente. No es estrictamente necesario; una mejor fuente para la Pi o mejoras en software también lo resolverían.
ADS1115 ADC I2C 16 bits
Intenté implementar todas las funciones en el ADS1115. Aún está en desarrollo; por ejemplo, los registros de umbral no están configurados y merecería su propio tutorial. En conjunto, casi listo para ser un driver ADC totalmente funcional. Puede haber problemas lógicos y no todas las funciones integradas están completamente probadas.
BMP180 sensor I2C temperatura y presión
El driver BMP180 usado es básicamente el mismo que en otros proyectos. Solo modifiqué la inicialización por incompatibilidad con el proveedor lightning. Medir temperatura y presión encaja en proyectos de estación meteorológica, monitorizado de plantas, etc.
Relé
Controlar un relé requiere operaciones GPIO simples. Es fácil de entender desde el código fuente.
Circuito fotodiodo
Usé este módulo porque la medición de luz puede servir en proyectos similares. El circuito amplificador está en la documentación del LTC1050. El fotodiodo es un Osram BPW 21 optimizado para luz diurna.
Pasarela Arduino
Para la pasarela usé un Arduino Due porque tiene bus I2C con pull-up a 3.3V. Podría haber usado conversor de nivel de voltaje o otro bus con pull-ups propios (el Arduino 2560 y otros tienen más buses I2C sin pull-up). El código es sencillo.
Sensor humedad suelo
Usé sensores chinos con módulos comparador.
Resumen del proyecto
En mi opinión, este proyecto da una idea básica de cómo regar plantas e incluye características aplicables a tus propios proyectos:
- Comunicación con placa Arduino por bus I2C (pasarela Arduino)
- ADC en Raspberry Pi
- PWM en Raspberry Pi (servo)
Planes futuros
- Conectividad Azure
- App móvil con Xamarin
- Sustituir I2C por Bluetooth para comunicar con Arduino
Código
Esquemáticos
Diagrama de circuitos disponible en la documentación del LTC1050 y en los archivos del proyecto.
Proceso de manufactura
- Papelera Inteligente: Solución IoT Celular para Gestión Automatizada de Residuos
- Construye una Puerta con Reconocimiento Facial Segura usando Windows IoT y Raspberry Pi
- Monitorización Precisa de Temperatura y Humedad con SHT15 en Windows 10 IoT Core
- Instalación de Windows 10 IoT Core en Raspberry Pi 3 Model B+: Guía Paso a Paso
- Construye un Robot Controlado por Voz con Windows 10 IoT Core en Raspberry Pi 2
- Extensión de GoPiGo v2 en Windows 10 IoT Core para Raspberry Pi 3
- Monitorización en la nube: Sistema de control remoto para gestión de activos en tiempo real
- Sistema IoT Avanzado con IA para Detección Temprana de Incendios Forestales y Monitorización de Salud de Árboles
- Sistema de Monitorización Remota IoT para Tanques de Petróleo y Diésel
- Descubre 8 Ventajas Clave de la Monitorización de Peso de Flotas IoT
- Revolucione la Gestión Láctea con Monitoreo de Nivel de Leche Habilitado por IoT