Pages: 1 [2] 3 4   Go Down
Author Topic: Proyecto de domótica desde 0  (Read 21506 times)
0 Members and 1 Guest are viewing this topic.
Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 956
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si no me equivoco si usas delay pones en "pausa" arduino por lo que no puedes hacer hacer nada mas, es decir, estas regando 5 min y en ese tiempo no puedes controlar nada.

El tema de la programacion de tareas lo puedes hacer con un modulo rtc de arduino, vamos un reloj.
Si encuentras la forma de hacer que el servidor php ejecute en un tiempo algo comentamela pero ten en cuenta que la web solo se ejecuta cuando esta abierta. Mi idea si conseguimos que sea el server es que si se va la luz mande un correo avisando, pero todavia no le veo la solucion

No Jossema106, el delay que yo he puesto es solo un ejemplo para que viera una estructura de programa no un codigo de aplicacion directa, es solo un ejemplo.

En realidad nunca usara un delay, empleara un final de carrera lo mas probable para detectar cuando esta la persiana arriba o abajo...pero eso es tema del diseñador, el delay de ese cacho ficticio de programa es solo eso, ficticio a modo de ejemplo.

heke muy buen trabajo !!
Me ha gustado mucha la idea del rele de activación. Me guardo el esquema de concepto porque seguro que lo uso en el futuro.

Gracias compi, pero no es nada en realidad.

La culpa de esto la tiene Ockham con su navaja http://es.wikipedia.org/wiki/Navaja_de_Ockham



Y Karnaugh con sus mapas http://es.wikipedia.org/wiki/Mapa_de_Karnaugh


Al final deformacion profesional... siempre tiende uno a simplificar.

Un saludo.

Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Offline Offline
Full Member
***
Karma: 1
Posts: 208
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset



No Jossema106, el delay que yo he puesto es solo un ejemplo para que viera una estructura de programa no un codigo de aplicacion directa, es solo un ejemplo.

En realidad nunca usara un delay, empleara un final de carrera lo mas probable para detectar cuando esta la persiana arriba o abajo...pero eso es tema del diseñador, el delay de ese cacho ficticio de programa es solo eso, ficticio a modo de ejemplo.

heke muy buen trabajo !!
Me ha gustado mucha la idea del rele de activación. Me guardo el esquema de concepto porque seguro que lo uso en el futuro.

Gracias compi, pero no es nada en realidad.

La culpa de esto la tiene Ockham con su navaja http://es.wikipedia.org/wiki/Navaja_de_Ockham



Y Karnaugh con sus mapas http://es.wikipedia.org/wiki/Mapa_de_Karnaugh


Al final deformacion profesional... siempre tiende uno a simplificar.

Un saludo.



Ok tienes alguna idea para hacerlo sin usar el rtc?
Y para lo que te comente del servidor?
Logged


Madrid
Offline Offline
Sr. Member
****
Karma: 5
Posts: 481
Life isn't about finding yourself, life is about creating yourself!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Si no me equivoco si usas delay pones en "pausa" arduino por lo que no puedes hacer hacer nada mas, es decir, estas regando 5 min y en ese tiempo no puedes controlar nada.
Eso no es precisamente cierto ya que puedes usar uno de los timers y no bloquear el resto de funciones.
--->ver blink without delay
Logged

Engineering is the art of
making what you want from
things you can get.

     

[SOLUCIONADO]

Offline Offline
Full Member
***
Karma: 1
Posts: 208
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Si pero entonces no usas delay, y el problema de los milis segun tengo entendido funciona por un tiempo determinado.


Si me equivoco perdon.
Logged


Madrid
Offline Offline
Sr. Member
****
Karma: 5
Posts: 481
Life isn't about finding yourself, life is about creating yourself!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

* El timer debes usarlo para ejecutar funciones y no para calcular tiempos.
* Para este tipo de proyectos en mi humilde opinión es imprescindible usar el RTC.
* Para detectar un corte de luz si hay corte de luz el router estará apagado por lo que la ip de arduino no estará   disponible, podrías hacer pings cada cierto tiempo desde tu server y si no hay respuesta mandas el email de alerta si quieres algo mas eficaz  puedes usar un modulo GSM.
 
Logged

Engineering is the art of
making what you want from
things you can get.

     

[SOLUCIONADO]

Offline Offline
Full Member
***
Karma: 1
Posts: 208
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

* El timer debes usarlo para ejecutar funciones y no para calcular tiempos.
* Para este tipo de proyectos en mi humilde opinión es imprescindible usar el RTC.
* Para detectar un corte de luz si hay corte de luz el router estará apagado por lo que la ip de arduino no estará   disponible, podrías hacer pings cada cierto tiempo desde tu server y si no hay respuesta mandas el email de alerta si quieres algo mas eficaz  puedes usar un modulo GSM.
 


Lo de la ip es lo que tenia pensado pero en el server que tengo contratado no puedo programar funciones asi que trendre que cambiar de server..

el riego estoy pensando no ponerle tiempo, como tengo higrometros cuando la humedad baje de un tanto por ciento se encienda hasta que supere otro %. Pero para la calefaccion si lo tengo que usar, y aunque lo tengo no consigo que funcione (me da valores raros, http://arduino.cc/forum/index.php/topic,139564.0.html) Sino ya estaria solucionado el problema

Gracias por todo.
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 50
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Jossema106 lo del reloj tambien me paso a mi, no recuerdo como lo solucione. puede ser un cable no hacia buen contacto o despues de poner en hora el reloj tienes que comentar esa parte del codigo.
sobre tu idea del hidrometro, te refieres a esos que van en la tierra o te refieres a los que miden la humedad ambiente? Si te refieres a los de las macetas, creo que tendrias que darle un tiempo para cerrar el agua, porque el agua hara disparar el sensor enseguida.

Espero que te sirvan mis ideas
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sigo pensando en la programación de tareas y la cosa se complica sobre todo para las escenas. Supongamos que los paneles japoneses se deben mover a cierta distancia para dejar paso salida de calor a los radiadores en el momento en que se conecte la calefacción. Lo mismo para las persianas (bajar al 100% cuando calefacción on), y sumando que los radiadores son válvulas electrotérmicas por zonas. Al final resulta en multitud de tareas donde no solo deben estar programadas sino que deben llevar un identificativo que el servidor sepa interpretar.

Al final creo que voy a optar por la idea de montar el PHP server en Ubuntu y utilizar los crontab como rutina de programación. Básicamente:

1. Desde formulario en navegador cliente establece temporización ->
2. Servidor ejecuta comando "crontab -e"
3. inserta comentario al final del archivo con el identificativo de la tarea "#xyz"
4. inserta rutina al final del archivo de ON (a la hora "h"). Es decir, a la hora "H"->abre un script en una pagina php?action=ON_lo_que_sea sin html y envía orden a/los arduinos de ON
5. inserta rutina al final del archivo de OFF (a la hora "h"). Es decir, a la hora "H"->abre un script en una pagina php?action=OFF_lo_que_sea sin html y envía orden a/los arduinos de OFF

Para saber en el navegador las tareas programadas, envía submit al server que ejecutaría "contrab -l" y recupera las tareas programadas gracias a los identificativos #xyz

Decir esto es fácil, saber si funcionará o hacerlo supongo que es bastante complejo...
No conozco los módulos RTC para Arduino, se podrían programar las tareas más fácilmente con ellos ?

Un saludo


Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 208
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Jossema106 lo del reloj tambien me paso a mi, no recuerdo como lo solucione. puede ser un cable no hacia buen contacto o despues de poner en hora el reloj tienes que comentar esa parte del codigo.
sobre tu idea del hidrometro, te refieres a esos que van en la tierra o te refieres a los que miden la humedad ambiente? Si te refieres a los de las macetas, creo que tendrias que darle un tiempo para cerrar el agua, porque el agua hara disparar el sensor enseguida.

Espero que te sirvan mis ideas


No tengo ni idea de lo del rtc, pero bueno seguire probando.

Lo del higro, es de los de la tierra, tendre que graduarlos en el ultimo momento y no creo que sea complicado porque lo unico que hago es leer el puerto analogico primero en agua (al rededor de 1026) y en seco (< de 26).


Gracias por la ayuda
Logged


Offline Offline
Full Member
***
Karma: 1
Posts: 208
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sigo pensando en la programación de tareas y la cosa se complica sobre todo para las escenas. Supongamos que los paneles japoneses se deben mover a cierta distancia para dejar paso salida de calor a los radiadores en el momento en que se conecte la calefacción. Lo mismo para las persianas (bajar al 100% cuando calefacción on), y sumando que los radiadores son válvulas electrotérmicas por zonas. Al final resulta en multitud de tareas donde no solo deben estar programadas sino que deben llevar un identificativo que el servidor sepa interpretar.

Al final creo que voy a optar por la idea de montar el PHP server en Ubuntu y utilizar los crontab como rutina de programación. Básicamente:

1. Desde formulario en navegador cliente establece temporización ->
2. Servidor ejecuta comando "crontab -e"
3. inserta comentario al final del archivo con el identificativo de la tarea "#xyz"
4. inserta rutina al final del archivo de ON (a la hora "h"). Es decir, a la hora "H"->abre un script en una pagina php?action=ON_lo_que_sea sin html y envía orden a/los arduinos de ON
5. inserta rutina al final del archivo de OFF (a la hora "h"). Es decir, a la hora "H"->abre un script en una pagina php?action=OFF_lo_que_sea sin html y envía orden a/los arduinos de OFF

Para saber en el navegador las tareas programadas, envía submit al server que ejecutaría "contrab -l" y recupera las tareas programadas gracias a los identificativos #xyz

Decir esto es fácil, saber si funcionará o hacerlo supongo que es bastante complejo...
No conozco los módulos RTC para Arduino, se podrían programar las tareas más fácilmente con ellos ?

Un saludo






El rtc es un reloj para automatizar tareas directamente desde arduino. Y evitar problemas de que no tengas conexion o falle el servidor.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

He estado echando un vistazo al RTC y me he centrado en el modulo RTC DS3232

http://www.freetronics.com/pages/rtc-real-time-clock-module-quickstart-guide#.UPigV4c707Q

Está interesante, lo malo es que solo es posible la programación de 2 alarmas. Si pensamos en programar diferentes tareas para diferentes escenas  creo que el módulo se queda corto.

¿ Alguien tiene experiencia en programar diferentes tareas con este módulo ?

Un saludo
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 208
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Desconozco ese modulo pero no creo que tengas problemas con las alarmas porque lo unico que haces comprobar que hora es y si es la establecidad para la calefaccion la enciendes, no lo enfoques como una alarma sino como comprobar la hora que es.

Si me equivoco que me corrijan.
Logged


Madrid
Offline Offline
Sr. Member
****
Karma: 5
Posts: 481
Life isn't about finding yourself, life is about creating yourself!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

+1.
El rtc te da la hora y tu haces las comparaciones.
Logged

Engineering is the art of
making what you want from
things you can get.

     

[SOLUCIONADO]

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yo plantearía un proyecto de domótica:
  • Todos los módulos (i.e. Arduino) conectados entre sí por un bus (ejemplo rs485 o bus CAN).
  • Una raspberry, beagleboard,router con openwrt, dispositivo android, etc

- No necesitas tener un rtc en cada dispositivo, ya que van conectados por bus. Esa información puede ir en el bus del dispositivo que disponga uno.
- La raspberry (o dispositivo similar) puede mirar tareas de google calendar y/o aceptar comandos por google talk,twitter, etc.Hay mucha documentación de cómo hacerlo, por ejemplo con python. Usar estos servicios, te dan flexibilidad que cualquier dispositivo móvil android, ipad, ordendador, iphone, etc. esta preparado o tiene aplicaciones para manejarlos. Todo el tema de seguridad, va manejado por dichos servicios web.... Envia por el bus los comandos recibidos.
- La raspberry (o dispositivo similar) contiene la GUI del sistema (via web, glcd, o lo que se prefiera). Pero el sistema puede funcionar aunque dicho dispositivo caiga, no tenga conexion a internet, etc.. Es decir, cada módulo es independiente es sus tareas.
- La raspberry (o dispositivo similar) puede hacer de datalogger.
- La raspberry (o dispositivo similar) hace la pasarela internet <-> bus.
- Cualquier dispositivo puede hacer pasarela con otras redes, ejemplo bluethooth <--> bus, zigbee, infrared, etc.

Esta opción la veo la más potente, coste-efectiva, escalable, flexible, documentada, no depende de un sólo equipo para manejar las tareas y fácil de implementar.
Las tareas más difíciles como servidor, internet, etc son manejadas por un dispositivo que se programa en alto nivel.


Aunque hay muchísimas formas y a cada uno le gusta una.... esta es una manera más.


Saludos,


Igor R.


http://mitchtech.net/raspberry-pi-google-talk-robot/
http://eva-quirinius.blogspot.co.uk/2012/07/google-calendar-raspberry-pi-and-lights.html
https://developers.google.com/google-apps/calendar/v1/developers_guide_python



« Last Edit: January 18, 2013, 03:24:46 pm by Igor R » Logged


0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

muy buen planteamiento Igor.

Yo llevo ya unos años desarrollando mi propio proyecto de monitorización del hogar, junto con muchas otras funcionalidades.
Uso un arduino mega y la verdad que hace muchisimas funciones, lo tengo situado como unidad central y se encarga de casi todo, aunque es cierto lo que dice Igor de repartir las tareas a unidades remotas.
Yo si que uso 1 unidad remota y en mi caso me aventure a usar los 2 pines del puerto de serie para comunicarse entre ellos y funciona muy bien. Si tuviese que escalar no seria viable.
en mi caso el arduino mega principal se encarga de subir todo a una web que a su vez tiene programada multitud de tareas de estadisticas, informes, emails, graficos, alarmas, etc etc.

resumiendo, todo depende cuantas cosas quieras integrar y la disposición de tu casa.
y lo mas importante, ir paso a paso y probando modulos por separado. lo digo por experiencia.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Pages: 1 [2] 3 4   Go Up
Jump to: