En este ejercicio desarrollamos una estación básica de monitoreo ambiental capaz de integrar varios sensores para medir condiciones físicas relevantes en un entorno agrícola, un invernadero o una planta industrial. El sistema utiliza un Arduino UNO R4 WiFi como unidad central de adquisición de datos, combinando sensores analógicos y sensores digitales conectados mediante bus I2C.
El objetivo de este ejercicio es introducir conceptos fundamentales del desarrollo de redes de sensores en sistemas embebidos, incluyendo lectura de entradas analógicas, comunicación I2C y organización de un sistema multisensor. Los datos adquiridos se envían al monitor serial cada dos segundos, permitiendo observar en tiempo real variables ambientales como calidad del aire, gases combustibles, humedad del suelo, temperatura, humedad relativa e iluminación.
Este tipo de arquitectura constituye el primer paso hacia sistemas más complejos de monitoreo IoT, agricultura inteligente o automatización industrial.
Sensores utilizados en el sistema
La estación ambiental integra cinco sensores que permiten obtener una visión general del entorno.
Sensor de calidad del aire – MQ135
El sensor MQ135 se utiliza para estimar la calidad del aire detectando compuestos como amoníaco, óxidos de nitrógeno, alcohol y otros gases contaminantes. Su salida es analógica y se conecta a una de las entradas ADC del microcontrolador.
Sensor de gases combustibles – MQ9
El MQ9 es capaz de detectar gases como monóxido de carbono (CO) y gas licuado de petróleo (GLP). Este sensor también entrega una señal analógica proporcional a la concentración del gas.
Sensor de humedad del suelo
Se utiliza un módulo de higrómetro de suelo basado en un comparador LM393 que proporciona una salida analógica proporcional al nivel de humedad presente en el sustrato.
Sensor de temperatura y humedad – SI7021
El SI7021 es un sensor digital de alta precisión que mide temperatura y humedad relativa ambiental. Se comunica con el microcontrolador mediante el bus I2C.
Sensor de iluminación – BH1750
El BH1750 permite medir la intensidad luminosa en lux, lo que resulta útil para aplicaciones de agricultura de precisión, automatización de iluminación o monitoreo ambiental.
Arquitectura del sistema
El sistema combina dos tipos de adquisición de datos:
Entradas analógicas
Los sensores MQ135, MQ9 y el sensor de humedad del suelo generan señales analógicas que se conectan a los pines:
- A0 → Calidad del aire
- A1 → Gas combustible
- A2 → Humedad del suelo
El convertidor ADC interno del microcontrolador transforma estas señales en valores digitales.
Sensores digitales por I2C
Los sensores SI7021 y BH1750 utilizan el protocolo I2C, lo que permite conectar múltiples dispositivos utilizando solo dos líneas:
- SDA → datos
- SCL → reloj
Este protocolo simplifica la expansión del sistema y reduce el número de pines necesarios.
Estructura del programa
El código está organizado en tres bloques principales que facilitan la comprensión y mantenimiento del sistema.
1. Inclusión de librerías
En esta sección se cargan las librerías necesarias para manejar los sensores y la comunicación I2C.
Wire.hpara la comunicación I2CAdafruit_Si7021.hpara el sensor de temperatura y humedadBH1750.hpara el sensor de iluminación
2. Inicialización del sistema (setup)
Durante la fase setup() se realizan varias tareas críticas:
- Inicialización de la comunicación serial a 115200 baudios
- Activación del bus I2C
- Verificación de que los sensores digitales están correctamente conectados
- Mensajes de diagnóstico en el monitor serial
Si alguno de los sensores I2C no responde, el programa se detiene para evitar lecturas inválidas.
3. Bucle principal del sistema (loop)
El loop() ejecuta continuamente el ciclo de adquisición de datos:
- Lectura de sensores analógicos
- Lectura de sensores digitales
- Impresión de resultados en el monitor serial
- Espera de 2 segundos antes de la siguiente medición
Este patrón es típico en sistemas de monitoreo ambiental en tiempo real.
Funcionamiento del ejercicio
Cada dos segundos el sistema realiza una captura completa del estado ambiental. Los valores obtenidos permiten observar tendencias como:
- Variaciones en la humedad del suelo
- Cambios de temperatura y humedad ambiental
- Presencia de gases
- Niveles de iluminación
Este tipo de sistema es especialmente útil para:
- Agricultura inteligente
- Monitoreo de invernaderos
- Sistemas domóticos
- Proyectos de Internet de las Cosas (IoT)
Repositorio del proyecto
El código completo del ejercicio se encuentra disponible en el repositorio oficial del proyecto SysOnChip.
Repositorio:
Allí podrás encontrar:
- Código fuente completo
- Esquemas de conexión
- Ejercicios adicionales
- Ejemplos para Arduino, Raspberry Pi y FPGA
Prompt recomendado para generar este ejercicio con IA
Si deseas utilizar herramientas de inteligencia artificial para generar este tipo de programas, puedes usar un prompt estructurado como el siguiente:
Escribe un programa para Arduino UNO R4 WiFi que implemente una estación ambiental multisensor.
El sistema debe incluir:
- Sensor MQ135 para calidad del aire conectado a A0
- Sensor MQ9 para gases combustibles conectado a A1
- Sensor de humedad del suelo conectado a A2
- Sensor SI7021 para temperatura y humedad usando I2C
- Sensor BH1750 para iluminación usando I2C
Requisitos del programa:
- Inicializar correctamente todos los sensores
- Verificar que los sensores I2C estén conectados
- Leer todos los sensores cada 2 segundos
- Mostrar los resultados en el monitor serial
- Incluir comentarios detallados en español
- Usar nombres de variables descriptivos
Este tipo de prompt permite generar código bien estructurado y fácil de mantener, especialmente en proyectos educativos o de prototipado rápido.
Conclusión
Este ejercicio representa un primer paso hacia la construcción de redes de sensores inteligentes utilizando plataformas embebidas modernas. A partir de esta base es posible extender el sistema para incluir:
- Comunicación WiFi o MQTT
- Registro de datos en la nube
- Visualización en dashboards
- Integración con Raspberry Pi o sistemas de visión artificial
