En este ejercicio construiremos una estación de monitoreo ambiental completa capaz de medir múltiples variables del entorno, registrar los datos en una tarjeta microSD y visualizar la información en tiempo real en una pantalla OLED. El sistema está basado en un Arduino UNO R4 WiFi y combina sensores analógicos y digitales para obtener diferentes parámetros ambientales.
Este proyecto representa una evolución natural de los ejercicios anteriores: ahora no solo se miden y almacenan datos, sino que también se visualizan localmente, creando una interfaz directa entre el sistema embebido y el usuario.
Sensores y módulos utilizados
La estación ambiental integra varios sensores que permiten monitorear diferentes condiciones del entorno:
- Sensor MQ135 para medir calidad del aire
- Sensor MQ9 para detectar gases combustibles
- Sensor de humedad del suelo
- Sensor digital SI7021 para temperatura y humedad ambiental
- Sensor de iluminación BH1750 para medir nivel de luz en lux
Además, el sistema utiliza dos módulos adicionales fundamentales:
- Módulo de reloj en tiempo real DS3231 RTC Module para registrar fecha y hora exacta
- Pantalla SSD1306 OLED Display para mostrar los datos en tiempo real
Finalmente, todos los datos se almacenan en una tarjeta microSD para análisis posterior.
¿Qué hace este ejercicio?
El sistema realiza las siguientes tareas principales:
- Inicializa sensores y módulos del sistema.
- Inicializa la pantalla OLED.
- Inicializa el reloj RTC.
- Inicializa la tarjeta microSD.
- Verifica si el archivo datos.csv ya existe.
- Si no existe, crea el archivo y escribe la cabecera.
- Cada 2 segundos:
- Lee todos los sensores
- Obtiene la fecha y hora actual
- Muestra los datos en el monitor serial
- Actualiza la pantalla OLED
- Guarda los datos en el archivo CSV
De esta manera el sistema funciona como una estación de monitoreo ambiental autónoma.
Estructura del ejercicio
El código está organizado en diferentes bloques para facilitar su comprensión y mantenimiento.
1. Inclusión de librerías
En la primera sección del código se incluyen las librerías necesarias para:
- Comunicación I2C
- Comunicación SPI
- Manejo de tarjeta microSD
- Control del RTC
- Lectura de sensores digitales
- Manejo de la pantalla OLED
La pantalla utiliza las librerías gráficas de Adafruit, ampliamente usadas en proyectos de sistemas embebidos.
2. Configuración de la pantalla OLED
Se definen los parámetros de la pantalla:
- Resolución: 128 × 64 píxeles
- Pin de reset
- Dirección I2C
Posteriormente se crea el objeto display que permitirá controlar la pantalla.
Durante el arranque del sistema se muestra un mensaje de bienvenida que confirma que el sistema se está inicializando.
3. Definición de pines
Los sensores analógicos se conectan a los siguientes pines:
- A0 → MQ135
- A1 → MQ9
- A2 → Sensor de humedad del suelo
También se define el pin Chip Select para la tarjeta microSD.
4. Inicialización del sistema
En la función setup() el programa realiza las siguientes tareas:
- Inicializa la comunicación Serial
- Inicializa el bus I2C
- Inicializa la pantalla OLED
- Inicializa los sensores digitales
- Inicializa el RTC
- Inicializa la tarjeta microSD
Si el archivo datos.csv no existe, el sistema crea el archivo y escribe la cabecera:
Fecha,Hora,Aire,Gas,HumedadSuelo,Temperatura,Humedad,Luz
Esto permite que el archivo pueda abrirse fácilmente en herramientas de análisis de datos.
5. Lectura de sensores
En el bucle principal loop() se realiza la adquisición de datos:
Sensores analógicos
- Calidad del aire
- Gas
- Humedad del suelo
Sensores digitales
- Temperatura
- Humedad ambiental
- Iluminación
Además, el sistema obtiene la fecha y hora actual desde el RTC.
6. Visualización en monitor serial
Todos los datos se envían al monitor serial para permitir observar el funcionamiento del sistema en tiempo real.
Esto facilita:
- Verificación de sensores
- Depuración del sistema
- Validación de datos
7. Visualización en pantalla OLED
La pantalla OLED muestra los valores principales del sistema:
- Temperatura
- Humedad ambiental
- Iluminación
- Humedad del suelo
- Calidad del aire
- Nivel de gas
Esto permite construir una interfaz local de monitoreo, algo muy común en sistemas embebidos industriales.
8. Registro de datos en microSD
Finalmente el sistema guarda cada medición en el archivo datos.csv.
Cada línea contiene:
Fecha,Hora,Aire,Gas,HumedadSuelo,Temperatura,Humedad,Luz
Ejemplo de registro generado:
2026-03-05,14:22:10,410,220,650,24.3,57.8,350
Este formato es compatible con herramientas como:
- Excel
- Python
- MATLAB
- Pandas
- Sistemas de análisis de datos
Aplicaciones de este sistema
Este tipo de arquitectura es muy utilizada en proyectos reales de ingeniería:
- Monitoreo de cultivos
- Invernaderos inteligentes
- Estaciones meteorológicas
- Redes de sensores IoT
- Sistemas de monitoreo ambiental urbano
Además, este tipo de proyectos son una excelente base para plataformas de agricultura inteligente.
Repositorio del ejercicio
Puedes descargar el código completo en el repositorio oficial del proyecto:
Repositorio Sys On Chip
En el repositorio encontrarás:
- Código fuente completo
- Ejercicios adicionales
- Proyectos con Arduino, Raspberry Pi y FPGA
- Material didáctico para aprendizaje de sistemas embebidos.
Prompt recomendado para generar este código
Si quieres generar este tipo de sistema utilizando inteligencia artificial, puedes utilizar un prompt como el siguiente:
Actúa como un ingeniero experto en sistemas embebidos.
Genera un programa para Arduino UNO R4 WiFi que implemente
una estación de monitoreo ambiental con:
- MQ135 (calidad del aire)
- MQ9 (gas)
- Sensor de humedad del suelo
- SI7021 (temperatura y humedad por I2C)
- BH1750 (sensor de luz por I2C)
- RTC DS3231 para fecha y hora
- Pantalla OLED SSD1306 para mostrar los datos
- Tarjeta microSD para registrar los datos en CSV
El sistema debe:
1. Inicializar todos los sensores
2. Mostrar datos en el monitor serial
3. Mostrar datos en la pantalla OLED
4. Guardar cada medición en un archivo datos.csv
5. Crear la cabecera si el archivo no existe
6. Registrar una medición cada 2 segundos
Utiliza variables en español y comentarios detallados.
Qué aprenderás en este ejercicio
Este ejercicio integra múltiples conceptos fundamentales en sistemas embebidos modernos:
- Integración de sensores analógicos y digitales
- Comunicación I2C y SPI
- Uso de RTC para timestamp
- Registro de datos en microSD
- Manejo de pantallas OLED
- Construcción de interfaces embebidas
Este tipo de arquitectura es la base de muchos sistemas reales utilizados en IoT, agricultura inteligente y monitoreo ambiental.
Si continúas ampliando este proyecto, el siguiente paso natural sería conectar la estación ambiental a internet para enviar los datos a la nube, transformándola en un verdadero sistema IoT distribuido.
