//Lector tarjeta MicroSD bus SPI y alacenar los valores del sensor DHT22
//Los pines de conexión
//SCK 13
//DO 12
//DI 11
//CS 10
/*Mediante un modulo lector de memoria MicroSD conectado mediante interfaz SPI
crearemos un archivo de texto con los datos separados por comas (CSV) de los valores
de temperatura y humedad leidos de un modulo sensor DHT22 a intervalos
de 1 segundo. Requiere instalar librerias DHT de Adafruit.*/
#include<SdFat.h>
#include <SPI.h> // incluye libreria interfaz SPI
#include <SdFat.h> // incluye libreria para tarjetas SD
#include <DHT.h> // incluye libreria DHT de Adafruit
#include <DHT_U.h> // incluye libreria Adafruit Unified Sensor
#define SENSOR 4 // constante SENSOR en pin digital 4 (senal de DHT11)
int TEMPERATURA; // variable para almacenar valor de temperatura
int HUMEDAD; // variable para almacenar valor de humedad
#define SSpin 10 // Slave Select en pin digital 10
SdFat SD;
File archivo; // objeto archivo del tipo File
DHT dht(SENSOR, DHT22); // objeto dht del tipo DHT en pin 4 y modelo DHT22
void setup() {
Serial.begin(9600); // inicializa monitor serie a 9600 bps
dht.begin(); // inicializacion de sensor
Serial.println("Inicializando tarjeta ..."); // texto en ventana de monitor
if (!SD.begin(SSpin)) { // inicializacion de tarjeta SD
Serial.println("fallo en inicializacion !"); // si falla se muestra texto correspondiente y
return; // se sale del setup() para finalizar el programa
}
Serial.println("inicializacion correcta"); // texto de inicializacion correcta
archivo = SD.open("datos.txt", FILE_WRITE); // apertura para lectura/escritura de archivo datos.txt
if (archivo) {
for (int i=1; i < 31; i++){ // bucle repite 30 veces (recolecta número de muestras)
TEMPERATURA = dht.readTemperature(); // almacena en variable valor leido de temperatura
HUMEDAD = dht.readHumidity(); // almacena en variable valor leido de humedad
archivo.print(i); // escribe en tarjeta el valor del indice
archivo.print(","); // escribe en tarjeta una coma
archivo.print(TEMPERATURA); // escribe en tarjeta el valor de temperatura
archivo.print(","); // escribe en tarjeta una coma
archivo.println(HUMEDAD); // escribe en tarjeta el valor de humedad y salto de linea
Serial.print(i); // escribe en monitor el valor del indice
Serial.print(","); // escribe en monitor una coma
Serial.print(TEMPERATURA); // escribe en monitor el valor de temperatura
Serial.print(","); // escribe en monitor una coma
Serial.println(HUMEDAD); // escribe en monitor el valor de humedad y salto de linea
delay(1000); // demora de 1 segundo
}
archivo.close(); // cierre de archivo
Serial.println("Escritura correcta"); // texto de escritura correcta en monitor serie
} else {
Serial.println("error en apertura de datos.txt"); // texto de falla en apertura de archivo
}
}
void loop() {
// No se coloca nada por ahora
}