Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
En el mundo de la electrónica y la programación, el almacenamiento de datos es una tarea esencial para una variedad de aplicaciones, desde la recolección de datos de sensores hasta el registro de eventos en sistemas de automatización. Utilizar un Arduino para almacenar datos puede ser una solución eficiente y económica. Este artículo explorará cómo implementar almacenamiento de datos utilizando una tarjeta SD y un módulo RTC (Real Time Clock) para registrar datos con marcas de tiempo.
Project: En este proyecto, crearemos un sistema de registro de datos que almacena lecturas de temperatura y humedad en una tarjeta SD. Utilizaremos un sensor DHT11 para obtener las lecturas y un módulo RTC DS3231 para agregar marcas de tiempo precisas a cada registro. El objetivo es construir un sistema que pueda ser utilizado en aplicaciones como monitoreo ambiental, invernaderos, o cualquier otro entorno donde el registro de datos sea crucial.
Components List:
Examples:
#include <SD.h>
#include <SPI.h>
#include <Wire.h>
#include "RTClib.h"
#include "DHT.h"
// Definiciones de pines
#define DHTPIN 2
#define DHTTYPE DHT11
#define CSPIN 10
// Inicialización de objetos
DHT dht(DHTPIN, DHTTYPE);
RTC_DS3231 rtc;
File dataFile;
void setup() {
Serial.begin(9600);
dht.begin();
// Inicializar la tarjeta SD
if (!SD.begin(CSPIN)) {
Serial.println("Error al inicializar la tarjeta SD");
return;
}
Serial.println("Tarjeta SD inicializada.");
// Inicializar el RTC
if (!rtc.begin()) {
Serial.println("No se pudo encontrar RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC perdió energía, configurando la hora.");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
// Obtener la hora actual
DateTime now = rtc.now();
// Obtener las lecturas del sensor DHT11
float h = dht.readHumidity();
float t = dht.readTemperature();
// Verificar si las lecturas son válidas
if (isnan(h) || isnan(t)) {
Serial.println("Error al leer el sensor DHT11");
return;
}
// Abrir el archivo en la tarjeta SD
dataFile = SD.open("datalog.txt", FILE_WRITE);
// Si el archivo está disponible, escribir los datos
if (dataFile) {
dataFile.print(now.timestamp(DateTime::TIMESTAMP_FULL));
dataFile.print(", ");
dataFile.print("Temperatura: ");
dataFile.print(t);
dataFile.print(" *C, ");
dataFile.print("Humedad: ");
dataFile.print(h);
dataFile.println(" %");
dataFile.close();
Serial.println("Datos guardados.");
} else {
Serial.println("Error al abrir el archivo datalog.txt");
}
// Esperar 2 segundos antes de la siguiente lectura
delay(2000);
}
Explicación del Código:
setup()
, se inicializan el sensor DHT11, la tarjeta SD y el módulo RTC. Si alguno de estos fallos, se imprime un mensaje de error.loop()
, se obtienen las lecturas de temperatura y humedad del sensor DHT11 y la hora actual del módulo RTC. Estos datos se escriben en un archivo en la tarjeta SD con un formato legible.