Hola a todos, espero me puedan ayudar, con este detallito.
ARDUINO UNO.
DTH11
RTC 1302
SD SHIELD.
Estoy haciendo un Datalogger usando un sensor DTH11, para el cual descargue una libreria.
Una SD, para grabar los datos, y un RTC 1302.
Basicamente lo que hace es tomar la humedad y la temperatura cada dos segundos, asi como revisar el
estado de un PIN, para saber si un compresor esta conectado o no... luego imprime en un archivo en la SD los resultados.
Als probarlo en la proto, todo funciono, tenia el archivo y el formato de datos que buscaba, asi como la frecuencia en los datos, sin emabrgo al cambiarlo a una placa de prueba para llevarlo a dejar al lugar de los hechos. y lo conecto a el puerto seria, y me da una variacion en la prueba de loop, como lo veran en las fotos.
Varia entre 2 y 15 segundos, por lo que he visto.
Por un momento intente cambiar la frecuencia del puerto serial de 9600 a 11200, para ver si era esta velocidad la que afectaba la lectura de los datos, pero al parecer no tuve suerte.
Aqui el codigo, si alguien tiene alguna idea, se lo agradecere.
//PROGRAMA PARA LLEVAR A CABO UNA MUESTRA DE HUMEDAD Y TEMPERATURA
//DENTRO DE LA CAMARA DE JOSE
#include <SPI.h> //creo que inlcuye la libreria de comunicacion serial
#include <SD.h> //Incluye la libreria de la SD
#include <dht.h> //Incluye lalibreria del uso del sensor de humedad y temperatura
dht DHT; // declara las variables mencionadas
#define DHT11_PIN 7 //defin el pin para leer la temperatura y humedad
const int chipSelect = 10; //define el pin para comunicrse con la SD
#include <virtuabotixRTC.h> //inlcuye la libreria dle relog
virtuabotixRTC myRTC(4, 5, 6); //defines los pines del relog 4-SCLK, 5 I/O, 6 CE
int PinComp = 8; //pin para leer el estado del compresor
int edoComp = 0; //variable para almacenar el estado del compresor
String estadoCompEnLoop; //variable tipo string para poder imprimir en el archivo de texto
File dataFile;
void setup(){
Serial.begin(19200);
pinMode(PinComp, INPUT);
Serial.print("Initializing SD card...");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(SS, OUTPUT);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
while (1) ;
}
Serial.println("card initialized.");
// Open up the file we're going to log to!
dataFile = SD.open("datalog.txt", FILE_WRITE);
if (! dataFile) {
Serial.println("error opening datalog.txt");
// Wait forever since we cant write data
while (1) ;
}
Serial.println("Humedad(%),Temperatura(C), Edo Comp"); //imprime los encabezados
dataFile.println("Humedad, Temp, Edo Comp, Hora, Fecha ");
}
void loop(){
//READ DATA
myRTC.updateTime();
int Datos = DHT.read11(DHT11_PIN); // lee el sensor y ensambla en la variable datos
edoComp = digitalRead(PinComp);
if(edoComp == 0){
estadoCompEnLoop="Apagado ";}
if (edoComp ==1){
estadoCompEnLoop="Encendido";}
Serial.print(DHT.humidity, 1); //requiere la humedad del sensor
Serial.print(" , ");
Serial.print(DHT.temperature, 1);
Serial.print(" , ");
Serial.print(estadoCompEnLoop);
Serial.print(" , ");
Serial.print(myRTC.hours);
Serial.print(":");
Serial.print(myRTC.minutes);
Serial.print(":");
Serial.print(myRTC.seconds);
Serial.print(" , ");
Serial.print(myRTC.dayofmonth);
Serial.print("/");
Serial.print(myRTC.month);
Serial.print("/");
Serial.println(myRTC.year);
dataFile.print(DHT.humidity, 1);
dataFile.print(" , ");
dataFile.print(DHT.temperature, 1);
dataFile.print(" ");
dataFile.print(estadoCompEnLoop);
dataFile.print(" ");
dataFile.print(myRTC.hours);
dataFile.print(":");
dataFile.print(myRTC.minutes);
dataFile.print(":");
dataFile.print(myRTC.seconds);
dataFile.print(" ");
dataFile.print(myRTC.dayofmonth);
dataFile.print("/");
dataFile.print(myRTC.month);
dataFile.print("/");
dataFile.println(myRTC.year);
dataFile.flush();
delay(2000);
}