This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Estación meteorológica v2 - giltesa
#21
Hola Glitesa, me podrías decir donde conseguiste el reloj que lleva esta estación, tengo entendido que es el mas preciso y el que tiene más funciones. Muchas gracias.

Saludos
  Responder
#22
Universo escribió:Hola Glitesa, me podrías decir donde conseguiste el reloj que lleva esta estación, tengo entendido que es el mas preciso y el que tiene más funciones. Muchas gracias.

Saludos

Lo tienes en ebay. Si pones el nombre del compone, te saldrá el componente en si, o los diferentes módulos que hay para arduino.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#23
Exacto, todo se puede encontrar por ebay, ahí es donde lo compro yo. En el caso del reloj es este: <!-- w --><a class="postlink" href="http://www.ebay.es/itm/190930900936">www.ebay.es/itm/190930900936</a><!-- w -->
giltesa.com Mi blog personal sobre informática, electrónica, Arduino, bricolaje, etc.
  Responder
#24
Ahora que vamos a cambiar la hora este fin de semana, ¿te has planteado que haga el cambio de horario verano/invierno automáticamente?
Si lo usas no lo he visto.
Yo lo apliqué hace unos años para un fraile del tiempo que hice con arduino. Posteriormente he cambiado algunas cosas, y aún tengo pendiente actualizar la página, pero lo puedes ver en frailedeltiempo.wordpress.com
Utilizaba el algoritmo de Zeller para calcular el día de la semana de una fecha dada. Y a partir de ahí hace el cambio el último domingo de Marzo y el último deomingo de Octubre.
Lo tengo bastante olvidado, pero lo buscaré.
  Responder
#25
jfelipe escribió:Ahora que vamos a cambiar la hora este fin de semana, ¿te has planteado que haga el cambio de horario verano/invierno automáticamente?
Si lo usas no lo he visto.
Yo lo apliqué hace unos años para un fraile del tiempo que hice con arduino. Posteriormente he cambiado algunas cosas, y aún tengo pendiente actualizar la página, pero lo puedes ver en frailedeltiempo.wordpress.com
Utilizaba el algoritmo de Zeller para calcular el día de la semana de una fecha dada. Y a partir de ahí hace el cambio el último domingo de Marzo y el último deomingo de Octubre.
Lo tengo bastante olvidado, pero lo buscaré.

Ummmm, no estoy al tanto de los cambios de horas, pero si es el ultimo domingo de marzo, el DS3231 lleva cuenta de los dias de la semana, creo recordar que el 0 era el domingo si no me confundo, todo seria revisarlo, por tanto teniendo los dias de la semana no necesitarias de hacerlo. Vamos el IC usara internamente ese algoritmo. Sabiendo que el ultimo domingo va a caer en un margen determinado de dias, o que tienes 4 domingos al mes es muy sencillo.
  Responder
#26
Yo usaba como RTC el DS1307 y no me proporcionaba (o no supe encontrar) la información del día de la semana. Me daba día, mes y año, y a partir de ahí calculaba el día de la semana mediante el algoritmo de Zeller.
Es posible que otros RTC ya lo calculen y te den ese dato, incluso quizás el DS1307 lo hacía y no me enteré.
  Responder
#27
jfelipe escribió:Yo usaba como RTC el DS1307 y no me proporcionaba (o no supe encontrar) la información del día de la semana. Me daba día, mes y año, y a partir de ahí calculaba el día de la semana mediante el algoritmo de Zeller.
Es posible que otros RTC ya lo calculen y te den ese dato, incluso quizás el DS1307 lo hacía y no me enteré.

Lo tiene tambien, otro tema es que este implementado en la liberia

Enviado desde mi Nexus 4 mediante Tapatalk
  Responder
#28
giltesa escribió:10 placas de 10x10 son 28$/21€ envió incluido, esta muy bien :zpalomitas:

PD: Pedidas aquí: http://imall.iteadstudio.com/open-pcb/pc...yping.html

¡Gracias y felicidades amigo Giltesa por compartir el enlace donde pediste tus PCB!
Al día de hoy están los 10 PCB en promo de $19.90USD tamaño 10 x 10cm.

:one:

¡Eres todo un Genio!
Me agrada tu bonito y bien pensado footprint/layout en Eagle.
Me es útil para otro proyecto, porque lo pensaste e hiciste universal en compatibilidad con Arduino UNO, Leonardo y Pro micro.
  Responder
#29
Bueno, ya he empezado con la programación.

Por el momento he creado una librería para la estación, por ahora solo inicializa, configura y obtiene todos los datos de los sensores, así el sketch de Arduino estará lo mas limpio posible. Eso era lo mínimo que quería que hiciese, lo demás: comunicaciones y lcd, aun tengo que decidir si merece la pena integrarlo dentro o sera peor.

Os dejo el código (borrador) por si queréis verlo:

Código:
/**
*  Author:    Alberto Gil Tesa
*  Website:   giltesa.com
*  License:   CC BY-NC-SA 3.0
*
*  Project:   Weather Station Library
*  File:      WeatherStation.h
*  Date:      2014/04/03
*  Version:   0.1
*/


#ifndef WeatherStation_H_
#define WeatherStation_H_


// LIBRERIAS
#if ARDUINO >= 100
    #include "Arduino.h"
#else
    #include "WProgram.h"
#endif


#include "Wire.h"
#include "BH1750.h"
#include "gRTC.h"
#include "BMP180.h"
#include "DHT.h"
#include "OneWire.h"
#include "DallasTemperature.h"


/**
*
*/
class Sensors
{
  public:
    //TYPEDATA      NAMEDATA    SENSOR      FUNCTIONALITY
    Tiempo          clock;      // DS3231   Real Time Clock (Struct)
    float           DHT_U;      // DHT22    Humidity
    float           DHT_T;      // DHT22    Temperature
    float           DS_T;       // DS18B20  Temperature
    unsigned short  BH_LX;      // BH1770   Lux
    long            BMP_P;      // BMP180   Pressure
    float           BMP_A;      // BMP180   Altitude
    float           BMP_T;      // BMP180   Temperature

    Sensors();
};


/**
*
*/
class Configuration
{
  public:
    //TYPEDATA    NAMEDATA
    byte          addLCD;
    byte          rfCE;
    byte          rfCSN;
    byte          pDS18B20;
    byte          pDHT22;
    byte          addExpI2C;
    byte          pExp1;
    byte          pExp2;
    byte          pExp3;
    float         seaLevelPressure;

    Configuration();
};


/**
*
*/
class WeatherStation
{
    public:
        Configuration conf;
        Sensors sensors;

        WeatherStation();
        void begin();
        void refresh();

    private:
        gRTC rtc;
        DHT *dht;
        OneWire *oneWire;
        DallasTemperature *ds18b20;
        BH1750 lightMeter;
        BMP180 bmp;
};


#endif /* WeatherStation_H_ */





Código:
/**
*  Author:    Alberto Gil Tesa
*  Website:   giltesa.com
*  License:   CC BY-NC-SA 3.0
*
*  Project:   Weather Station Library
*  File:      WeatherStation.cpp
*  Date:      2014/04/03
*  Version:   0.1
*/


#include "WeatherStation.h"


/**
*
*/
Sensors :: Sensors()
{
    DHT_U = 0.0;
    DHT_T = 0.0;
    DS_T  = 0.0;
    BH_LX = 0;
    BMP_P = 0;
    BMP_A = 0.0;
    BMP_T = 0.0;
}


/**
*
*/
Configuration :: Configuration()
{
    addLCD    = 0x27;
    rfCE      = 8;
    rfCSN     = 10;
    pDS18B20  = 7;
    pDHT22    = 5;
    addExpI2C = 0x00;
    pExp1     = 4;
    pExp2     = 6;
    pExp3     = 9;
    seaLevelPressure = 154100;
}


/**
*
*/
WeatherStation :: WeatherStation()
{

}


/**
* Starts and configures all modules.
* Does not consider that a module this bad connected or broken.
*/
void WeatherStation :: begin()
{
    // DHT22
    dht = new DHT(conf.pDHT22,DHT22);

    // DS18B20
    oneWire = new OneWire(conf.pDS18B20);
    ds18b20 = new DallasTemperature(oneWire);
    ds18b20->begin();

    // BH1750
    lightMeter.begin();
    lightMeter.configure(BH1750_CONTINUOUS_HIGH_RES_MODE);

    //BMP180
    bmp = BMP180();
    if( bmp.EnsureConnected() )
    {
        bmp.SoftReset();
        bmp.Initialize();
    }
}


/**
* Refreshes all sensor data.
*/
void WeatherStation :: refresh()
{
    ds18b20->requestTemperatures();

    sensors.clock = rtc.getDatos();
    sensors.DHT_U = dht->readHumidity();
    sensors.DHT_T = dht->readTemperature();
    sensors.DS_T  = ds18b20->getTempCByIndex(0);
    sensors.BH_LX = lightMeter.readLightLevel();
    sensors.BMP_P = bmp.IsConnected ? bmp.GetPressure() : 0;
    sensors.BMP_A = bmp.IsConnected ? bmp.GetAltitude(conf.seaLevelPressure) : 0;
    sensors.BMP_T = bmp.IsConnected ? bmp.GetTemperature() : 0;
}





Ejemplo:
Código:
#include <Wire.h>
#include <WeatherStation.h>


WeatherStation ws;

unsigned long tAntes = 0;
unsigned long tAhora = 0;
unsigned long tEjecucion = 3000;


void setup()
{
    ws.begin();
    Serial.begin(9600);
}


void loop()
{
    tAhora = millis();

    if( tAhora - tAntes >= tEjecucion )
    {
        tAntes = tAhora;
        ws.refresh();

        Serial.print("Tiempo: ");
        Serial.print(ws.sensors.clock.anio);     Serial.print("/");
        Serial.print(ws.sensors.clock.mes);      Serial.print("/");
        Serial.print(ws.sensors.clock.diaMes);   Serial.print(" ");
        Serial.print(ws.sensors.clock.hora24h);  Serial.print(":");
        Serial.print(ws.sensors.clock.minutos);  Serial.print(":");
        Serial.print(ws.sensors.clock.segundos); Serial.print("\n");

        Serial.print("Temperaturas: ");
        Serial.print(ws.sensors.DS_T);   Serial.print(" / ");
        Serial.print(ws.sensors.DHT_T);  Serial.print(" / ");
        Serial.print(ws.sensors.BMP_T);  Serial.print("\n");

        Serial.print("Luz: ");
        Serial.print(ws.sensors.BH_LX);  Serial.print("\n");
        
        Serial.print("Presion: ");
        Serial.print(ws.sensors.BMP_P);  Serial.print("\n");
        
        Serial.print("Humedad: ");
        Serial.print(ws.sensors.DHT_U);  Serial.print("\n");

        Serial.print("Altitud: ");
        Serial.print(ws.sensors.BMP_A);  Serial.print("\n\n");                
    }
}

Código:
Tiempo: 2014/4/5 23:0:51
Temperaturas: 29.50 / 29.10 / 28.70
Luz: 54
Presion: 145317
Humedad: 35.70
Altitud: 491.95


Aun me falta eliminar la linea "#include <Wire.h>" y dejarla en la librería de la estación, lo mismo con todas las librerías de los sensores que me han quedado en la raiz del directorio de la librería... las quiero dentro de un directorio llamado lib pero dan error en los includes :S
Otro día lo intento de nuevo.

Edit:
Ya he conseguido que lea las librerías desde un subdirectorio... antes usaba uno llamado "lib" y ese no quería leerlo, probé cambiándole el nombre a "utility" y ahora funciona perfecto.
En cuando a Wire.h no ha habido forma, o la cargo desde el sketch o no funciona en ningún lado así que ahí se queda.
giltesa.com Mi blog personal sobre informática, electrónica, Arduino, bricolaje, etc.
  Responder
#30
Hola a todos,

Con respecto a la estación meteorológica, sabéis de algún sensor que mida la cantidad de lluvia? Pluviometros se llaman, he visto por internet que la gente se los hace caseros, pero igual había por ahí alguno baratillo..., He encontrado este de sparkfun que viene con anemómetro y veleta, pero es un pelín caro https://www.sparkfun.com/products/8942

Gracias!! Un saludo!!
  Responder
#31
dcp1985 escribió:Hola a todos,

Con respecto a la estación meteorológica, sabéis de algún sensor que mida la cantidad de lluvia? Pluviometros se llaman, he visto por internet que la gente se los hace caseros, pero igual había por ahí alguno baratillo..., He encontrado este de sparkfun que viene con anemómetro y veleta, pero es un pelín caro https://www.sparkfun.com/products/8942

Gracias!! Un saludo!!

He encontrado este por 15€gi, aunque habria que modificarlo para que funcionase con Arduino:
http://www.ebay.es/itm/2-7inch-LCD-Wirel...43c277626c
giltesa.com Mi blog personal sobre informática, electrónica, Arduino, bricolaje, etc.
  Responder
#32
Ese es como uno que hay en sparkfun, se puede conectar directamente a arduino. Funciona por interrupciones.

Por dentro son 2 cubos pequeños que cuando se llenan generan un pulso, si lo metes como interrupcion es mucho mas facil de medir, pues no tienes que estar pendiente de leer un pin y esperar el pulso.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#33
Te refieres a que es el mismo sensor el de sparkfun que el del link de ebay que ha puesto giltesa?
Lo unico que el de sparkfun está cableado y el de ebay es wireless, habra que desmontar y chequear los pines para cablearlo.

Como se miden los litros que han caído?, con la interrupcion detectas cuando empieza a llover, pero la cantidad de agua será en función que tarda en vaciarse el cacharro supongo no?

Saludos!! Mola
  Responder
#34
La que comenta grafisoft se puede construir como indican en:
http://vwlowen.co.uk/picaxe/weather-station/page-5.htm
o la puedes comprar como repuesto.
Inalámbrica es más cómoda por no echar cables, pero hay que descifrar el protocolo que usa. Yo pensaba ponerle dentro un arduino micro y un RF24 y mandar los datos a la base.
Hace poco pillé dos por internet
[Imagen: rain%20meter%20replacement.JPG]

gitesa, te podría pasar una si pasas por zaragoza, o te la mando.
Después me aprovecharé de tu código Gran sonrisa
  Responder
#35
Donde los has pillado? Tienes el link?

S2! Mola
  Responder
#36
Era de Inglaterra, creo que era de aquí:
http://www.ebay.co.uk/itm/Replacement-Ra...AQ:GB:1123
En la página vienen los datos para calibrar los pulsos a mm de lluvia.
  Responder
#37
Ok, gracias!, Ya veo como funciona, ahora lo entiendo!
No puedo comprarlo parece que no tiene mas disponibles Triste, lo tendré en seguimiento, hasta entonces me he pillado el wireless para cacharrear.

Saludos!

Edito: Esto igual te sirve para empezar

http://tronview.blogspot.com.es/2014/01/...duino.html

En este hilo hablan también de como hacerlos funcionar con las interrupciones
http://forum.arduino.cc/index.php?topic=31764.0
  Responder
#38
dcp1985 escribió:Te refieres a que es el mismo sensor el de sparkfun que el del link de ebay que ha puesto giltesa?
Lo unico que el de sparkfun está cableado y el de ebay es wireless, habra que desmontar y chequear los pines para cablearlo.

Como se miden los litros que han caído?, con la interrupcion detectas cuando empieza a llover, pero la cantidad de agua será en función que tarda en vaciarse el cacharro supongo no?

Saludos!! Mola
Lo que se mide es el movimiento de vaivén del balancín con los dos contenedores para el agua, cuando uno se llena el balancín se mueve hacia un lado y el otro contenedor queda listo para recibir el agua. Con cada movimiento el balancín actúa contra un sensor magnético que hay dentro, de modo que se emite un pulso. Sabiendo la cantidad de agua necesaria para mover el balancín y el numero de pulsos se puede saber cuanta ha llovido.
http://youtu.be/7cob90RhIag?t=2m55s

En cuanto al sensor que puse yo no fue con la idea de aprovechar la conexión inalámbrica, si no simplemente los plásticos y el sensor magnético, debería de ser relativamente fácil la conversión a sensor cableado.


jfelipe escribió:La que comenta grafisoft se puede construir como indican en:
http://vwlowen.co.uk/picaxe/weather-station/page-5.htm
o la puedes comprar como repuesto.
Inalámbrica es más cómoda por no echar cables, pero hay que descifrar el protocolo que usa. Yo pensaba ponerle dentro un arduino micro y un RF24 y mandar los datos a la base.
Hace poco pillé dos por internet
[Imagen: rain%20meter%20replacement.JPG]

gitesa, te podría pasar una si pasas por zaragoza, o te la mando.
Después me aprovecharé de tu código Gran sonrisa
jfelipe escribió:Era de Inglaterra, creo que era de aquí:
http://www.ebay.co.uk/itm/Replacement-Ra...AQ:GB:1123
En la página vienen los datos para calibrar los pulsos a mm de lluvia.

No sabia que vendían repuestos de ese sensor.
Yo ya me lo había planteado varias veces el poner el sensor de agua y el de aire, el problema es que siempre llego a la conclusión de que en mi caso no merece la pena ya que de montarlos tendría que ser en la terraza y solo funcionarían correctamente cuando el agua o viento diera a favor/a dentro. Por eso siempre lo dejo estar.

Y para hacer el código debería de ser sencillo no? Si en las instrucciones no viene la capacidad de los contenedores del balancín pues seria coger una jeringuilla e ir echando agua hasta que se incline, una vez se tenga la capacidad se monta un código con, o sin, interrupciones y vas guardando los datos.

Por cierto, como es que pillaste dos medidores de agua? :zpalomitas:
giltesa.com Mi blog personal sobre informática, electrónica, Arduino, bricolaje, etc.
  Responder
#39
La idea inicial era completar la estación meteorológica que tengo en el pueblo.
Actualmente toma datos de temperatura y humedad y los sube a xively, y así los puedo ver desde zaragoza y sé si ha helado, y si se me habrán helado las tomateras. Sonrisa
Quería registrar las lluvias y el viento (velocidad y dirección). Y como soy un poco chapucero, pues cogí dos por si me la cargaba, tener repuesto, pero veo que es fácil de desmontar (dos pestañas de plástico) y no me la cargaré.
Un verano estuve haciendo pruebas con ventiladores de ordenador. A partir de la mecánica, y aprovechando algo de la electrónica que lleva (el sensor de efecto hall), llegué a hacer este pluviómetro, un anemómetro y una veleta, pero no resistieron el invierno. Para estar al exterior la mecánica debe ser más robusta que la que hice.
Incluso tenía pensado si el pluviómetro estaba conectado por cable y no iba con batería poner una resistencia para conectarla con temperaturas bajas, para poder medir también precipitaciones en forma de nieve.
  Responder
#40
Que crack!! Eso mismo quiero hacer yo, montar una estacion con 4 cosas en el huerto del pueblo y que mande los datos a xively, o guardarlos en una SD, y que avise por sms o por email de ciertos eventos. Estoy un poco atascado con el tema de xively, me gustaría hacerlo con un modulo GSM/GPRS y una SIM con datos contratados. Tu como los sube a xively?

Mil gracias!! Saludos!! Mola
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  Estacion Meteorologica Triggerr 261 55,033 21-01-2017, 10:43 PM
Último mensaje: cna