Ejercicio No. 4 – Sistema de adquisición de datos ambientales con almacenamiento en microSD

En este ejercicio construiremos un data logger ambiental completo capaz de medir diferentes variables del entorno y almacenar las mediciones en una tarjeta de memoria para su posterior análisis. El sistema está basado en un Arduino UNO R4 WiFi y utiliza múltiples sensores para monitorear condiciones ambientales, además de un reloj en tiempo real para registrar cuándo ocurre cada medición.

El objetivo de este ejercicio es introducir uno de los conceptos más importantes en sistemas embebidos aplicados a monitoreo ambiental e IoT: el registro persistente de datos.


Sensores utilizados

El sistema integra varios sensores analógicos y digitales que permiten observar diferentes condiciones del entorno:

  • Sensor MQ135 para medir calidad del aire
  • Sensor MQ9 para detectar gases combustibles como CO o GLP
  • 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 un módulo de reloj en tiempo real DS3231 RTC Module para obtener la fecha y hora exacta de cada medición.


¿Qué hace este ejercicio?

El programa realiza las siguientes tareas:

  1. Inicializa todos los sensores conectados al sistema.
  2. Inicializa el reloj en tiempo real (RTC).
  3. Inicializa una tarjeta microSD para almacenamiento de datos.
  4. Verifica si el archivo datos.csv ya existe en la tarjeta.
  5. Si el archivo no existe, crea el archivo y escribe una cabecera CSV.
  6. Cada 2 segundos:
    • Lee todos los sensores.
    • Obtiene la fecha y hora del RTC.
    • Muestra la información en el monitor serial.
    • Guarda la medición en el archivo CSV.

De esta manera el sistema genera un historial completo de mediciones ambientales.


Estructura del ejercicio

El código está organizado en varias secciones para facilitar su comprensión.

1. Inclusión de librerías

Primero se incluyen las librerías necesarias para comunicación con sensores, almacenamiento y RTC.

  • Wire → comunicación I2C
  • SPI y SD → comunicación con tarjeta microSD
  • RTClib → control del RTC
  • Librerías específicas de sensores

2. Definición de pines

Se definen los pines analógicos utilizados para los sensores:

  • A0 → MQ135
  • A1 → MQ9
  • A2 → Sensor de humedad del suelo

También se define el pin Chip Select de la tarjeta SD.


3. Inicialización del sistema

En la función setup() el programa realiza varias tareas críticas:

  • Inicializa el bus I2C
  • Verifica que los sensores digitales estén conectados
  • Inicializa el RTC
  • Ajusta la hora si el módulo perdió energía
  • Inicializa la tarjeta microSD

Además, el programa verifica si el archivo datos.csv ya existe.

Si no existe, crea el archivo y escribe la cabecera:

Fecha,Hora,Aire,Gas,HumedadSuelo,Temperatura,Humedad,Luz

Esto permite que el archivo sea compatible con Excel, Python o MATLAB.


4. Lectura de sensores

En el bucle principal loop() el sistema realiza la adquisición de datos:

  • Lectura analógica de sensores MQ135, MQ9 y humedad del suelo.
  • Lectura digital de temperatura, humedad y luz.
  • Obtención de fecha y hora actual desde el RTC.

5. Visualización de datos

Cada medición se muestra en el monitor serial para que el usuario pueda observar el funcionamiento del sistema en tiempo real.

Esto facilita:

  • Depuración
  • Validación de sensores
  • Verificación del sistema completo

6. Registro de datos en CSV

Finalmente el sistema abre el archivo datos.csv en la tarjeta microSD y agrega una nueva línea con el formato:

Fecha,Hora,Aire,Gas,HumedadSuelo,Temperatura,Humedad,Luz

Ejemplo de registro generado:

2026-03-05,12:30:10,410,220,650,24.5,58.2,350

Cada línea representa una medición completa del sistema.


Aplicaciones de este ejercicio

Este tipo de arquitectura es la base de muchos sistemas reales, por ejemplo:

  • Monitoreo de cultivos
  • Estaciones meteorológicas
  • Control ambiental en invernaderos
  • Redes de sensores IoT
  • Adquisición de datos para investigación

Repositorio del ejercicio

Puedes descargar el código completo del ejercicio en el siguiente repositorio:

Dentro del repositorio encontrarás:

  • Código completo del ejercicio
  • Ejemplos adicionales
  • Otros proyectos con Arduino, Raspberry Pi y FPGA.

Prompt recomendado para generar este código

Si quieres generar un programa similar utilizando inteligencia artificial, puedes utilizar un prompt como el siguiente:

Actúa como un ingeniero experto en sistemas embebidos y Arduino.

Genera un programa para Arduino UNO R4 WiFi que implemente
una estación ambiental con los siguientes sensores:

- 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 obtener fecha y hora

El sistema debe:

1. Leer todos los sensores
2. Obtener fecha y hora del RTC
3. Mostrar los datos en el monitor serial
4. Guardar cada medición en una tarjeta microSD
5. Crear un archivo CSV llamado datos.csv
6. Escribir la cabecera si el archivo no existe
7. Registrar una nueva medición cada 2 segundos

Utiliza variables en español y comentarios detallados.

Qué aprenderás en este ejercicio

Este ejercicio introduce varios conceptos fundamentales en sistemas embebidos y adquisición de datos:

  • Integración de múltiples sensores
  • Comunicación I2C
  • Uso de RTC para timestamp
  • Manejo de sistemas de archivos en microSD
  • Generación de archivos CSV
  • Construcción de data loggers ambientales

Este tipo de arquitectura es la base de muchos sistemas IoT y de monitoreo industrial.


Si estás construyendo una red de sensores para monitoreo ambiental, este ejercicio es el punto de partida ideal para comenzar a registrar datos reales del entorno.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio