viernes, 3 de julio de 2015

Dataloger Sensor de luz (LDR)


A diferencia de la publicación de Abril, acá se muestra como integrar una tarjeta micro-SD para almacenar los datos medidos

Componentes


Diagrama de Conexión

Figura 1: Diagrama de conexión elaborado con Fritzing


Foto Final

Figura 2: Foto del sensor de luz, tarjeta SD y reloj conectados a una placa Arduino  


Código de Lectura

#include <DS1302.h> //libreria rejoj
#include <SD.h> // libreria SD
//en MEGA
//Pines GND puenteados
//Pines +5 y +3.3 puenteados a 5v
//cs 53
//sck 52
//mosi 51
//miso 50
// en UNO
//
//CS - 10
//MOSI- 11,
//MISO -12,
//CLK - 13,
 

// declaracion existencia de un archivo
File dataFile; 

 
// pines del reloj para ocupar la libreria
DS1302 rtc(2, 3, 4); //RST DAT CLK
 

void setup(){

// Configuracion de reloj inicial (hora Chile o UTC) (solo la primera vez)
// rtc.setDOW(SUNDAY);  // Set Day-of-Week to FRIDAY
// rtc.setTime(19, 20, 0);  // Set the time to 12:00:00 (24hr format)
rtc.setDate(15, 3, 2015); 


//pines de led y switch funcionamiento 
pinMode(6, OUTPUT);
pinMode(8, INPUT); // sets the digital pin as output
 

DS1302 rtc(2, 3, 4); //RST DAT CLK
rtc.halt(false);
rtc.writeProtect(false);


Serial.begin(9600);
pinMode(10, OUTPUT);
Serial.print("Iniciando SD card...");
pinMode(13, OUTPUT);
digitalWrite(10, HIGH);
 


if (!SD.begin(10)) {
  Serial.println("Fallo comunicacion o no existe SD");
  digitalWrite(10, HIGH);
  return;
  }
 

digitalWrite(10, LOW);
Serial.println("SD Iniciada.");

// limpiado de SD
if (SD.exists("datalog.txt")){

   Serial.println("archivo existe, se borrara");
   SD.remove("datalog.txt");
   }
else{
  Serial.println("el archivo no existe, se creara..");
  }


// primera linea comentarios de los datos
dataFile = SD.open("datalog.txt", FILE WRITE);
 

if (dataFile) {
Serial.println("Escribiendo Informacion...");
dataFile.println(" % Python ready data");
dataFile.println(" % Fecha Hora A0 A1");
Serial.println("dia mes ano hora min sec A0 A1");
 

dataFile.close();
}
else {
Serial.println("error opening test.txt");
}
 

}
 

void loop(){
 

digitalWrite(6,LOW);
while ( digitalRead(8)== HIGH){
digitalWrite(6,HIGH);
// numero de sensores
 

String dataString = ""; // creacion string
 

//RELOJ obtencion de fecha y su agregado al string que se guardara en la fila
dataString+= ((rtc.getTime()).date);
dataString+=" ";
dataString+= ((rtc.getTime()).mon);
dataString+=" ";
dataString+= ((rtc.getTime()).year);
dataString+=" ";
dataString+= ((rtc.getTime()).hour);
dataString+=" ";
dataString+= ((rtc.getTime()).min);
dataString+=" ";
dataString+= ((rtc.getTime()).sec);
dataString+=" ";
 

// creacion de columnas,una para cada pin analogo y lectura de su valor
int sensor1 = analogRead(1);
int a1=(sensor1*(5.0/1023))*100;
dataString += String(a1);

dataFile = SD.open("datalog.txt", FILE WRITE);
if (dataFile) {
dataFile.println(dataString);
delay(1000);
dataFile.close();
Serial.println(dataString);

}
else {
Serial.println("Fallo comunicacion.txt");
Serial.println("Revise conecxion");
delay(1000);
}

}
}




Datos en Pantalla





Figura 3: Pantalla que muestra la lectura y almacenamiento de datos del tiempo y sensor luz.

lunes, 1 de junio de 2015

Presión Barométrica y Temperatura

Esta sencilla configuración nos permite registrar la presión barométrica y temperatura a través de una placa Arduino.

Componentes

Arduino UNO + cable USB
Sensor BMP180 (GY-68)
Protoboard
Cables para conexiones
Libreria SFE BMP180.h
 
Diagrama de Conexión

Figura 1: Diagrama de conexión elaborado con Fritzing
Foto Final

Figura 2: Foto del sensor de presión barométrica y temperatura conectado a una placa Arduino


Código de Lectura
 
/*
Pines SDA y SCL Arduinos:    SDA SCL
Uno, Redboard, Pro:                 A4    A5
Mega2560, Due:                         20    21
Leonardo:                                     2       3
*/
#include <SFE BMP180.h>
#include <Wire.h>
SFE BMP180 pressure;
// creacion del objeto "presion"
void setup()
   {
    Serial.begin(9600); //definicion de los baudios de el comunicacion serial
    Serial.println("REBOOT"); // reiniciar el sensor (para calibracion)
    if (pressure.begin())
      Serial.println("BMP180 init success");
   else
     {
        Serial.println("BMP180 init fail\n\n");
        while(1); // Pause forever.

     }
   }

void loop()
   {
    char status; //definicion tipo de variable status
    double T,P; // definicion variables T y P
    status = pressure.startTemperature(); // confirmacion tiempo para que sensor  mida
    if (status != 0)
      {
         // si el sensor no esta listo
        delay(status); // espera hasta que esta listo
        status = pressure.getTemperature(T); //Mide T y ver si puede medir denuevo
        if (status != 0) // si no esta listo
          {
            Serial.print(T,2); // imprime el valor de T en C
            Serial.print(" ");
            status = pressure.startPressure(3); // inicia medicion de temperatura,
           //3 para mayor precision
          if (status != 0)
            {
             // si no esta listo
               delay(status); // esperar
               status = pressure.getPressure(P,T); // medicion temperatura,
               // requiere temperatura reciente
               if (status != 0)
                 {
                    Serial.println(P,2);// imprime presion absoluta en mb
                 }
              }
         }
      }
delay(5000);
}

 
Datos en Pantalla

Figura 3: Pantalla que muestra la lectura de datos del sensor de presión barométrica y temperatura.

viernes, 29 de mayo de 2015

Humedad Relativa + Temperatura (DHT11)


Esta sencilla configuración nos permite registrar humedad relativa y temperatura a través de una placa Arduino.

Componentes
Tabla 1: Componentes para el sensor de humedad relativa y temperatura.
 Diagrama de Conexión


Figura 1: Diagrama de conexión elaborado con Fritzing

 Foto Final

Figura 2: Foto del sensor de humedad relativa y temperatura conectado a una placa Arduino.


 Código de Lectura

#include <dht.h>                              // cargar la libreria
dht sensor;                                        // cefinicion variable de que contiene datos leidos
void setup()
{
Serial.begin(9600);                          // baudios de la conexion serial
}
void loop()
{
int chk=sensor.read11(2);             //definicion Pin digital de lectura
Serial.print(sensor.humidity, 1); // imprime la humedad relativa
Serial.print("\t");                            // agrega un espacio
Serial.println(sensor.temperature, 1); // imprime la temperatura
delay(1000);                                               // retardo de 1 segundo en el loop

}

 Datos en Pantalla


Figura 3: Pantalla que muestra la lectura de datos del sensorde humedad relativa y temperatura.
Referencias

https://github.com/adafruit/DHT-sensor-library
http://panamahitek.com/dht11-sensor-de-humedadtemperatura-para-arduino/



viernes, 17 de abril de 2015

Luminosidad

Esta sencilla configuración nos permite registrar la luz a través de una placa Arduino.


 Componentes
Tabla 1: Lista de componentes usados y su valor aproximado (en pesos chilenos).

Diagrama de Conexión
Figura 1: Diagrama de conexión elaborado con Fritzing.

Foto Final
Figura 2: Foto del sensor de luz conectado a una placa Arduino.

  Código de Lectura
//Inicializacion de la salida serial
void setup() {
Serial.begin(9600);
}
// Loop principal
void loop() {
double sensor=analogRead(0);     //lectura del pin A0

int LDR=sensor*(5.0/1023)*100;   // conversion a voltaje
Serial.println(LDR);                        // Imprision de en valor en voltaje del sensor
delay(1000) ;                                     // retardo de 1 segundo en cada ciclo del loop
}


 Datos en Pantalla

                                    Figura 3: Pantalla que muestra la lectura de datos del sensor de luz.

Referencias

http://bildr.org/2012/11/photoresistor-arduino/