Calificación:
  • 1 voto(s) - 4 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Estacion Meteorologica
#61
Algo muy basico, si. Porque la estación va montada en un rover controlado bluetooth... Si, se me ha ido de las manos.

El datasheet le tengo a mano en ingles ya. Estoy en la fase de recopilar toda la info. Esta semana pongo el post presentación si puedo
Citar
#62
cansi22 escribió:Algo muy basico, si. Porque la estación va montada en un rover controlado bluetooth... Si, se me ha ido de las manos.

El datasheet le tengo a mano en ingles ya. Estoy en la fase de recopilar toda la info. Esta semana pongo el post presentación si puedo

Lo quieres mandar a marte??? :elrisas: :elrisas:
Citar
#63
DHT22/AM2302 (Sensor Humedad-Temperatura)

resim

DATASHEET

Bueno, vamos con otro sensor mas. En este caso el AM2302 o DHT22, tienen la misma denominacion. Es un sensor de humedad y temperatura, que consta de las siguientes caracteristicas:

resim

Es un sensor muy versatil, con unos rangos de temperatura aceptables al igual que una buena precision, claro esta dependiendo del uso que vayamos a darle.

La conexion en este caso es mas facil que en los anteriores, recurrimos al 1-Wire, mandamos los datos por un unico pin digital de manera serie.

Tenemos 16BITS de datos para la humedad (RH), y 16 para la temperatura, a lo que sumamos el CheckSum, 8 BITS de datos de comprobacion:

resim

Como vemos, los datos tanto de humedad como de temperatura, los pasamos de binario a decimal y los dividimos entre 10 para tener el valor real de temperatura y humedad.

La comprobacion de que los datos son correctos, viene dado por el CheckSum, es la suma de los octetos de bits de las anteriores medidas, suma de la cual cogemos los 8BITs menos significativos y comprobamos si cumple esta condicion.

Sin mas dilacion, vamos a ver como mandamos la informacion.

Iniciando la transmision:

resim

El micro pone en bajo durante mas de 1ms para iniciar la transmision. Tras esto mantiene en alto durante 20-40us. Una vez enviamos esto, el receptor en este caso el sensor, nos manda un pulso en bajo de 80us, y a continuacion otro pulso en alto de 80us. Con lo que iniciamos la transmision de datos, a continuacion veremos estos tiempo:

El IC manda el pulso en bajo largo:

resim

Tras esto tenemos el pulso de 20us:

resim

Contesta el sensor con un pulso bajo de 80us seguido de uno alto de la misma duracion. (En este caso podemos observar que existe una pequeña caida de tension, por lo que lo consideraremos bajos, realmente desconozco porque sucede esto, quizas se monten emisor y receptor...)

resim

resim

Una vez inicializamos la comunicacion, procedemos a la recepcion de datos:

resim

Resulta interesante ver la codificacion de los datos, ya que dependiendo del ancho de pulso en valor alto, tenemos si es un "0" para 26-28us

resim

Para valor "1", tenemos un ancho de pulso mayor, en este caso 70us

resim

Y para separarlos damos un tiempo en bajo de unos 50us:

resim

Una vez sabemos esto, podemos conocer que estamos enviado, en mi caso os mostrare una trama y decodificaremos que estamos recibiendo, es bastante facil ya que los pulsos largos son "1" y los pulsos cortos son "0", por lo que se aprecia muy bien:

resim

resim

resim

(La trama no entra en una sola captura)

Vemos que tenemos lo siguiente:

/0000_0010_1000_1011/ Corresponde a humedad pasado a DEC=651-> 651/10=65.1%RH
/0000_0000_1010_0111/ Corresponde a temperatura pasado a DEC=167->167/10=16.7ºC

Comprobacion con el CheckSum:

/00110100/

Si realizamos la suma de los anteriores, tenemos:

100110100

Cogiendo los 8Bits menos significativos:

/00110100/

Cumple, datos enviados correctamente

Y ya tenemos lo que buscabamos. Ahora vamos con la libreria que lo controla, como siempre recomiendo leer la libreria, ya que se ve bien como realizamos esta lectura de datos.

LIBRERIA

Pocos parametros podemos modificar en este caso, en el ejemplo vemos bien las funciones y como leer ambos parametros.

Código:
DHT dht(DHTPIN, DHTTYPE);

Con esta sentencia declaramos el PIN en el que conectamos el DHT, y el tipo de sensor DHT, ya que existe el DH11 y DHT21, en nuestro caso pondremos "22".

Código:
float h = dht.readHumidity();
  float t = dht.readTemperature();

Aqui leemos los datos del sensor

Código:
float convertCtoF(float);

Tenemos tambien una funcion de conversion a F

Y poco mas, es un sensor muy facil de usar, y que da buenos resultados


OBSERVACIONES:

El tiempo de muestreo del sensor debe de ser al menos de 2 segundos

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

CANSI, metele una pila nuclear a ese rover y lo mandamos a explorar planetas¡¡ jajajajaja
Citar
#64
No sé si se ha comentado. El tema de la autonomía¿? será cableada o con alimentación propia?
Citar
#65
jukillo escribió:No sé si se ha comentado. El tema de la autonomía¿? será cableada o con alimentación propia?


La estacion interna, ira enchufada, con conexion USB micro, para poder usar cualquier cargador de movil para alimentarla. Es mas sencillo esto que andar con baterias en una estacion que ira dentro de casa.

La parte exterior, si que me gustaria ponerla con algun tipo de bateria, y si fuera posible alguna placa solar para mantener dicha bateria.

Estamos hablando de que la estacion exterior enviara datos a la interior, cada 3 segundos minimo, hablamos de un consumo de pico de que? 3mA maximo? Los sensores tienen un consumo muy bajo.

Desconozco que tipo de bateria es la mas adecuada para mi proposito, ya que no estoy en el mundillo de las baterias, pero me gustaria una bateria facil de controlar. Alguna sugerencia?

Estoy algo estancado, ya que necesito otro arduino nano para comenzar a ponerme con los modulos inalambricos, pero una vez solucionada la comunicacion inalambrica ira todo sobre ruedas, lo mas dificil esta casi echo, que son los menus. La programacion de la estacion exterior no debiera ser problema, ya que es lectura de sensores y emision a la base interior.
Citar
#66
Sin duda los menús... yo no sé ni por donde empezar, xD.

¿Por qué quieres hacer lectura cada 3 segundos?

Sobre la batería, a ver si algún iluminado te echa un cable. Yo tengo dos cargadores usb con panel solar y no cargan, no preguntes por qué, xD. Uno de ellos cargaba por la placa si lo enchufabas antes al usb, pero ahora ya ni eso, xD. Si quieres verle las tripas avisa.
Citar
#67
jukillo escribió:Sin duda los menús... yo no sé ni por donde empezar, xD.

¿Por qué quieres hacer lectura cada 3 segundos?

Sobre la batería, a ver si algún iluminado te echa un cable. Yo tengo dos cargadores usb con panel solar y no cargan, no preguntes por qué, xD. Uno de ellos cargaba por la placa si lo enchufabas antes al usb, pero ahora ya ni eso, xD. Si quieres verle las tripas avisa.


Pues minimo 3 segundos, porque las condiciones que queremos medir no cambian de un segundo para otro, a no ser que pase una ciclogenesis explosiva de eso ajajaja. Ya te digo, minimo tres segundos, que lo mismo me da y pongo actualizacion cada 5 segundos.....o cada 10......, y piensa tambien, que si estas en el menu de RELOJ, no vas a estar midiendo de la estacion exterior...., es un tema a mirar con detenimiento la verdad. Pero no me planteo una actualizacion de valores en tiempo real.

Yo para panel me pensaba usar algo de este pelo:

http://www.ebay.es/itm/2W-9V-222mA-Mini-...51b3078f0d

Nose que tal iria la verdad....
Citar
#68
La bateria yo el rover le pondre una usb de 2000mAh que tengo para los moviles
Citar
#69
Vale vale, te había entendido al revés, jeje.
Citar
#70
cansi22 escribió:La bateria yo el rover le pondre una usb de 2000mAh que tengo para los moviles


Yo pensaba usar alguna de algun coche radiocontrol. Evitar la de litio porque es una movida el tema de cargas y demas segun tengo entendido. Estas semanas que no tengo mucho que hacer a la espera de los arduinos, me pondre a buscar.

Bueno, hoy me he puesto con la estacion exterior, no sin problemas. Nose porque la libreria que tenia del DHT22 me ha dado problemas junto con las demas librerias. Pero he conseguido solucionarlo con otra libreria. Ya tengo la estructura de datos y tengo mas o menos idea de como enviarla..., he estado haciendo unos adaptadores para poder poner los modulos inalambricos en las BreadBoards.

Tambien he implementado, que al pulsar el boton del encoder en la pantalla de reloj se apague la retroiluminacion. Nose si hare que cuando cambies de menu se encienda y solo puedas apagarla en el de relojes, que puedas apagarla en todos menos en el de opciones...., pero esto tiene poca cosa.

Nada del otro mundo pero hoy estoy tronzado ya, he estado mirando como comunicar y demas. Pero uno de los dos arduinos NANOS no funciona por USB, por tanto no voy a dar palos de ciego y esperare a que me llegen los demas arduinos.

Os dejo unas fotos del entorno de trabajo, bastante poco eficiente pero suficiente para ir probando jajajaja

resim

resim

El LCD sin retroiluminacion:

resim
Citar
#71
La iluminación del LCD, y si haces que se encienda/apague al haber un cambio? Espérate a mañana a ver si la entrada que estoy preparando para el blog te sirve de algo (aunque para mi es algo nuevo, quizás ya lo tengas más que quemado.. xD)
Citar
#72
jukillo escribió:La iluminación del LCD, y si haces que se encienda/apague al haber un cambio? Espérate a mañana a ver si la entrada que estoy preparando para el blog te sirve de algo (aunque para mi es algo nuevo, quizás ya lo tengas más que quemado.. xD)


El tema es que sin iluminacion no se ve una mierda jajaja, en verdad, lo de apagarla es mas que nada para por la noche, que molesta bastante...., esperando a esa entrada¡


Estoy empezando a tener problemas con las protoboard, me meten muchisimo ruido y mierda, lo que me da errores aunque la programacion sea correcta...., demasiado cable ya:

resim

Mañana intentare organizarlo un poco, pero me parece que voy a tener que hacer el diseño de placa al menos el de la estacion fija ya tengo definido que ira, asique me pondre a ello. Dejare varios conectores libres y demas para si en algun momento quiero poner algun sensor en la parte interior mas. Pero ya digo, se me hace imposible seguir en protoboards.

He logrado comunicacion inalambrica ya, pero nada serio, con montajes sencillos sin pega, pero en cuanto implemento todo en la protoboard adios.....

Ire dejando los avances en el diseño de la placa, mañana me pondre a ello que hoy ya estoy saturado jajajajaja.
Citar
#73
Por fin he conseguido comunicacion¡¡.

Usando la libreria RF24 es muy sencillo todo





Ahora tengo que ponerme a pulir la comunicacion. Mi idea es que sea la estacion interior la que solicite a la exterior una actualizacion de valores, cuando lo solicite, se actualizan, la base interior da el visto bueno y muestra por pantalla. Vamos a ver si me pongo a programar otro ratin
Citar
#74
Me encanta como va cogiendo forma ese prototipo. Quizás sólo me pasa a mí pero siento especial debilidad por las breadboard con sus componentes pinchados y sus 'manojos' de cables. Creo que tienen la esencia de la fase de prototipado de electrónica que tanto me gusta.

Muy buen hilo, no podría tener mejores análisis de los sensores que estás usando.
Citar
#75
Muy buena currada ^^
Citar
#76
+1. Da para paja, xD
Citar
#77
Mola como te lo curras, la de pruebas que haces con el osciloscopio :aplauso:

En cuanto al reloj que atrasa/adelanta, a mi me pasa igual en la estación 1 (reloj hecho a mano con un resonador de una Nintendo DSL y un DS1307) y un modulo como el tuyo. Para la estación 2 tengo pensado usar este que incorpora un sensor de temperatura interno para compensar los cambios de temperatura que afectan a la oscilación del resonador/cristal, lo tiene un amigo en su estación y según él la hora sigue como el primer dia.

https://www.google.es/search?q=DS3231&cl...83&bih=953
giltesa.com Mi blog personal sobre informática, electrónica, Arduino, bricolaje, etc.
Citar
#78
giltesa escribió:Mola como te lo curras, la de pruebas que haces con el osciloscopio :aplauso:

En cuanto al reloj que atrasa/adelanta, a mi me pasa igual en la estación 1 (reloj hecho a mano con un resonador de una Nintendo DSL y un DS1307) y un modulo como el tuyo. Para la estación 2 tengo pensado usar este que incorpora un sensor de temperatura interno para compensar los cambios de temperatura que afectan a la oscilación del resonador/cristal, lo tiene un amigo en su estación y según él la hora sigue como el primer dia.

https://www.google.es/search?q=DS3231&cl...83&bih=953


Si, ese justo tengo pedido yo, veremos si es mas preciso, porque este se me adelanta bastante la verdad.
Citar
#79
Bueno, he estado mirando hoy todo el tema de la comunicacion un poco mas a fondo y me estoy planteando usar el watchdog del arduino, en la estacion exterior para reducir el consumo, tengo un consumo de unos 40mA. Poner en modo sleep el arduino y en powerdown el modulo de comunicacion, y enviar datos cada 5 segundos o similar. El problema que me encuentro al hacer esto, es que la estacion interior, en caso de mirar el menu de temperaturas y demas, estaria unos segundos sin recibir datos, por lo que no podria mostrar nada, entonces nos planteamos, si poner un mensaje en plan "ACTUALIZANDO", hasta recibir datos, o transmitir de modo continuado, vamos tener siempre activo el arduino. En la practica es lo mas sencillo, pero en consumos....

Mirando un poco, un consumo de 40mA sostenido, tenemos que una bateria 1500maH, trabajando a 7.2V, regulados a 5, tenemos una duracion de unas 24horas, la pregunta es, seria capaz de mantener la carga en la misma, un panel solar de 9V, 222ma, 2W?, en principio si no?.

Logicamente seria necesario un circuito de carga control y demas....

De no poder recurrir a esto, siempre se puede pasar un cable de alimentacion, pero ya pierde la gracia
Citar
#80
Triggerr escribió:Poner en modo sleep el arduino y en powerdown el modulo de comunicacion, y enviar datos cada 5 segundos o similar. El problema que me encuentro al hacer esto, es que la estacion interior, en caso de mirar el menu de temperaturas y demas, estaria unos segundos sin recibir datos, por lo que no podria mostrar nada, entonces nos planteamos, si poner un mensaje en plan "ACTUALIZANDO", hasta recibir datos, o transmitir de modo continuado, vamos tener siempre activo el arduino. En la practica es lo mas sencillo, pero en consumos....

¿Pero cual es el problema? ¿Si entras en los menús no puedes atender interrupciones de comunicación? ¿O no va por interrupción? Lo digo por que si lo puedes atender "en segundo plano" y dejarte los datos ahí para cuando salgas del menu, se acaba el problema. De hecho, 5 segundos me parece hasta demasiado, salvo que alguna de las variables cambie muy deprisa, pero dudo que para temperatura o humedad necesites medir más de una vez por minuto. O cada 5 minutos, incluso... ¿Cuanto puede variar la temperatura o humedad ambiente en ese tiempo?
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Estación meteorológica v2 - giltesa giltesa 68 9,668 18-10-2014, 06:08 PM
Último mensaje: giltesa