Registrando temperatura y luz
viernes, 8 de marzo de 2013En esta ventanita a la izquierda podeis ver los datos en tiempo real tomados cada 5 segundos y tomados con una micro-estación meteorológica montada con arduino. Hora (está deliberadamente fuera de hora, unos 4 minutos de retraso) > temperatura > cantidad de luz (indice arbitrario a falta de saber los lumens que admite el sensor pero bastante sensible)
Para un divertido proyecto que quiero poner en marcha en breve ( y que contaré más adelante si todo sale como debe) he estado refrescando mi arduino que lo tenía acumulando polvo y montado un circuito elemental con un sensor de temperatura y un sensor de luz. Los he montado sobre la propia placa y los he puesto en el patio para ir probando a ver que tal dibujan el amanecer de hoy.
El resultado se va registrando cada 5 segundos en un archivo de texto, de este archivo se cogen las últimas 100 lecturas y se muestran en sentido cronológico inverso que es lo que podeis ver en el iframe superior.
El montaje y el código arduino es muy elemental#include
int sensorTemp = 0;
int sensorLuz = 1;
void setup() {
Serial.begin(9600);
setTime(08,30,45,8,3,2012);
}
void loop() {
int vTemp = analogRead(sensorTemp);
float voltage = ( vTemp * 5.0 ) / 1024;
float temperaturaC = (voltage - 0.5) * 100 ;
int vLuz = analogRead(sensorLuz);
float luzC = map(vLuz, 0, 1023, 100, 0);
Serial.print(hour()); numeros(minute()); numeros(second());
Serial.print(" > Temp: "); Serial.print(temperaturaC); Serial.print("ºC, Luz: ");
Serial.print(luzC); Serial.println("%");
delay(5000);
}
void numeros(int dg){
Serial.print(":");
if(dg < 10)
Serial.print('0');
Serial.print(dg);
}
Si todo sale como espero ya os contaré DONDE quiero medir la luz y la temperatura y algún registro más.
toni
#1/ 04 de April/2013 a 02:27:42
Otros comentarios de «toni»
Buenas, hace poco una compañera volvió de la antártida y me comentó que por allá todavía tienen heliógrafos instalados (de esos que miden el tiempo de luz con las marcas que deja el sol). Como no se dedica a la meteorología no me supo explicar por qué, pero el caso es que todavía los usan (tanto allá como en el resto de argentina mismo).
Yo asumí que para esto ya se usaban receptores electrónicos (que como mostrás son simples, baratos y cómodos para colectar datos).
Tenés idea por qué alguien usaría un heliógrafo? nostalgia? aprovechar cacharros que ya se tienen? resistencia del material? mayor sensibilidad/precisión?
saludos!
Trebol-a
#2/ 04 de April/2013 a 11:23:14
Otros comentarios de «Trebol-a»
Hola Toni,
un buen heliografo mecánico es incluso más preciso que uno electrónico, pero sobretodo es mucho más resistente, perdurable y autónomo. Los componentes electrónicos fallan mucho a bajas temperaturas y consumen mucha más corriente, se oxidan, se rompen, ... un heliografo lo puedes dejar 50 años abandonado y volver a reutilizarlo el 51 como si estuviera nuevo.
Saludos
JAVIER VALENZUELA
#3/ 17 de August/2015 a 12:42:45
Otros comentarios de «JAVIER VALENZUELA»
Hola esto desarrollando un proyecto que es un sensor de temperatura y humedad, con Arduino Uno y el sensor DHT 22. Pero no se que hago mal porque los datos me los escribe todos en la misma linea, aparte me gustaría saber como hay que hacerlo para pasarlos a una tabla Excell y poder tener una estadística de periodos de tiempo, así como poder anotar fecha y hora de cada dato.
// JOSE JAVIER VALENZUELA MORENATE
#include "DHT.h"
#define DHTPIN 2 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
// Connect pin 1 CABLE ROJO DEL SENSOR +5V
// Connect pin 2 CABLE AMARILLO DEL SENSOR
// Connect pin 4 CABLE NEGRO DEL SENSOR TIERRA
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("JAVIERCAZANDINGA");
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Read temperature as Fahrenheit
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("FALLO EN EL SENSOR!");
return;
}
float hic = dht.computeHeatIndex(f, h, false);
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");
}
Trebol-a
#4/ 17 de August/2015 a 17:30:31
Otros comentarios de «Trebol-a»
Hola Javier,
para hacer el salto de línea en la salida usa Serial.println y combinalo con Serial.print para intercalar variables.
Algo como Serial.print("Humedad: ");
Serial.print(h);
Serial.println(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C ");
Te devolvería los datos en dos líneas.
Para lo de extraer los datos para estadísticas puedes hacer varias cosas. Si el ARDUINO está junto a un ordenador quizás bastaría con acceder al Serial de Arduino abriendo un terminal de Linux y leyendo las impresiones que hace Arduino con TTY ó SCREEN.
Si no es así podrías instalar un módulo ETHERNET en tu Arduino de tal manera que puedas conectarlo a un red local y acceder esos datos desde otro ordenador.
Pero probablemente la opción más sencilla sea instalar un módulo que incorpore a tu Arduino un lector de tarjetas SD en la que tu Arduino recopile los datos de los sensores.
Saludos
22 de December, 2024 @ 01:28