Pages: 1 2 3 [4] 5   Go Down
Author Topic: Functiodomo-Sistema de automatización del hogar (domótica) sin cables  (Read 18999 times)
0 Members and 1 Guest are viewing this topic.
Torremolinos (Málaga)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Ventajas de esta arquitectura: funciona hasta en una bicicleta si tiene navegador de internet. Desventajas: Con entornos concretos (lease android, ios...) la transmisión de datos es menor pues no tendrás que transmitir las imágenes, pero por contra tienes que desarrollar una aplicación específica para cada plataforma.

No entendí la parte de la desventaja, se supone que si tenemos un interfaz web la cual contiene los módulos que se comunican con los actuadores.. esta puede ser accesada vía web desde cualquier plataforma no?

La desventaja está en la rapidez del interface.
Con una aplicación web, el código tanto de las órdenes como del interfaz se envían desde el servidor, incluidas las imágenes que dan forma al aspecto de la aplicación

Con la aplicación específica de la plataforma móvil (lease androis o ios) todo el código e imágenes de la interfaz están almacenadas en el dispositivo móvil, con lo que sólo se transmiten los datos correspondientes a las órdenes que se envían desde/hacia el teléfono hasta/desde el servidor. El flujo de datos es menor y la velocidad del interfaz en mayor. Se eliminan los tiempos de carga del interfaz.

Para mí el núcleo del sistema siempre se trata de una aplicación web, en mi caso en PHP por cuestiones de portabilidad y documentación existente, pero para el interfaz se puede valorar qué es mejor, si rapidez y exclusividad, o por el otro lado, universalidad y un interfaz menos rápido.
Logged

José Antonio Castillo Rodríguez
Responsable de diseño de producto
Functio & Ars S.L.
www.functionars.com

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

Antes que nada dejame felicitarte, se ve increible Fuctiodomo, y te queria hacer una pregunta, como logras hacer el live streaming (tan fluido), to estoy intentando hacer un control de una webcam, pero me he estado dando de topes con el streaming, no consigo hacerlo fluido, me podrias hechar una mano con eso?..

de antemano gracias y denuevo esta increible...
Logged

Torremolinos (Málaga)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Antes que nada dejame felicitarte, se ve increible Fuctiodomo, y te queria hacer una pregunta, como logras hacer el live streaming (tan fluido), to estoy intentando hacer un control de una webcam, pero me he estado dando de topes con el streaming, no consigo hacerlo fluido, me podrias hechar una mano con eso?..

de antemano gracias y denuevo esta increible...

El vídeo lo grabé haciendo un screencast de la pantalla del portátil desde donde interactuaba con el sistema. El portátil cliente y el servidor LAMP que contiene el sistema domótico estaban en la misma red wifi. En cuanto al programa de grabación, no recuerdo si usé Record My Destop o Istambul, pero seguro que fue uno de los dos, el que me fuera más sencillo de usar.
Logged

José Antonio Castillo Rodríguez
Responsable de diseño de producto
Functio & Ars S.L.
www.functionars.com

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

Hola que tal Castillo14, tengo el Arduino Uno R3 conectado con una USB a una maquina con Ubuntu y Xampp...

Al hacer las pruebas por el monitor serial del arduino todo funciona correctamente sin embargo
al quererle enviar los valores al arduino con la libreria php_serial.class.php no lo hace...

Podrías decirme si le hiciste alguna configuracion en el apache?.. ya que tampoco en windows logro hacerlo andar.

Code:
<?php

require ("php_serial.class.php");

$serial = new phpSerial();

$serial->deviceSet("/dev/ttyACM0");

$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");

$serial->deviceOpen();

$serial->sendMessage('A');

$serial->deviceClose();
?>
Logged

Torremolinos (Málaga)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola que tal Castillo14, tengo el Arduino Uno R3 conectado con una USB a una maquina con Ubuntu y Xampp...

Al hacer las pruebas por el monitor serial del arduino todo funciona correctamente sin embargo
al quererle enviar los valores al arduino con la libreria php_serial.class.php no lo hace...

Esta noche o mañana voy a publicar una entrada con el método que uso para comunicarme con arduino a través de PHP.

eyoZ07 también está teniendo problemas y creo que la solución que encontré es mucho más sencilla de lo que estáis intentando.

En un rato me pongo a ello.
Logged

José Antonio Castillo Rodríguez
Responsable de diseño de producto
Functio & Ars S.L.
www.functionars.com

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

Quote

Esta noche o mañana voy a publicar una entrada con el método que uso para comunicarme con arduino a través de PHP.

eyoZ07 también está teniendo problemas y creo que la solución que encontré es mucho más sencilla de lo que estáis intentando.

En un rato me pongo a ello.

Gracias..! una manera que me funcionó para conectarme al Arduino fue haciendo librerias en python las cuales son llamadas desde PHP...

Tambien intente con el comando exec pero auditando la velocidad de comunicacion me di cuenta que es mas rapido con python...

Estaré al tanto de tu entrada! smiley-grin
Logged

Torremolinos (Málaga)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Comunicación con Arduino a través de un servidor PHP.
http://functionars.com/functiodomo_wp/?p=104

En este artículo explico como nos comunicamos entre el ordenador principal y cada uno de los nodos Arduino mediante instrucciones escritas en PHP.

Como aparece más detallado en el artículo, un punto importante de nuestro método es que la selección de nodo activo no se hace mediante direcciones IP, sino que aprovechando que en las redes Zigbee, todas las órdenes pasan por todos los nodos, debido a su configuración tipo malla, la selección de a qué nodo se dirige una orden la hacemos mediante programación en la propia placa Arduino.



Esta técnica tiene como ventajas:
- La programación es muy sencilla, tanto en PHP como en Arduino.
- Los nodos son independientes de los chips Xbee que les comunican con el sistema central. Aunque lo recomendable es saber qué chip XBee acompaña a cada nodo Arduino, los chips Xbee son perfectamente intercambiables entre ellos, ya que la selección del nodo no la hace su dirección de red, sino la propia placa Arduino

También tiene sus desventajas, siendo la principal que esta técnica obliga a tener la placa Arduino siempre conectada, no permitiendo técnicas de ahorro de energía (manteniéndola apagada mientras no llegue una orden), aunque como en nuestro caso los nodos no van a estar alimentados por baterías, este factor no es tan crítico.

Como ejemplos de comunicación PHP-Arduino sobre red Xbee, nuestra programación es la siguiente:
- para el servidor PHP:

enviar_instrucción_M_al_nodo_a.php
Code:
<HTML>
<BODY>
<?php 
// apertura del fichero de escritura a través del puerto serie ttyUSB0
$fp =fopen("/dev/ttyUSB0""w"); 
// escritura de la instrucción aM
fwrite($fpaM); 
// cierre del fichero
fclose($fp); 
?>

<p>Envío de la instrucción M a la placa a</p>
<br/>
<br/>
<a href="../control_por_zonas/index_plata_zonas.html" title="Orden enviada">vuelta a control por zonas</a>
</BODY>
</HTML>

En cuanto a la programación de la placa Arduino, el código necesario es el siguiente:

ectura_ordenes_PHP.pde
Code:
/* Modificación del programa SwitchCase2 de la librería de ejemplos de Arduino
Programa original creado por Tom Igoe el 1 de julio de 2009
Programa mofificado por José Antonio Castillo Rodríguez el 15 de abril de 2010
A continuación el texto informativo original de Tom Igoe:
-- Switch statement with serial input
--
-- Demonstrates the use of a switch statement. The switch
-- statement allows you to choose from among a set of discrete values
-- of a variable. It's like a series of if statements.
--
-- To see this sketch in action, open the Serial monitor and send any character.
-- The characters a, b, c, d, and e, will turn on LEDs. Any other character will turn
-- the LEDs off.
--
-- The circuit:
-- * 5 LEDs attached to digital pins 2 through 6 through 220-ohm resistors
--
-- created 1 Jul 2009
-- by Tom Igoe
--
-- http://www.arduino.cc/en/Tutorial/SwitchCase2
--
Modificaciones realizadas por José Antonio Castillo Rodríguez:
+ pin actuable para control de estado manual modificables por variable (asignaPinAlimentacion)
+ pin actuable para alimentación sensor modificables por variable (alimenSensor)
+
+ cambio en los caracteres de control; nomenclatura de acciones:
+ M -> activa el pin que alimenta el detector de estado manual; N -> desactiva el pin que alimenta el detector de estado manual
+ OTRO VALOR -> envía una señal de error a través del puerto serie
+
+ "a","b","c"... selecciona la placa como activa para poder recibir la siguiente orden; valor de activación definido por variable (selecPlaca)
+
+ el pin de lectura del cambio de estado manual esta definido por variable (remotoPin)
+
*/
// VARIABLE DE SELECCIÓN DE PLACA
int inByte = 0; // almacena la lectura del puerto serie
int selecPlaca = 'a'; // CTE-valor ante el CUAL se activa la placa en modo escucha
boolean placaActiva = false; // indica si la placa está en modo escucha o no
// VARIABLES RELATIVAS AL PIN 13 DE ARDUINO-UTILIZADO PARA LA COMPROBACIÓN DEL ESTADO MANUAL
int asignaPinAlimentacion = 13; // CTE-indica el pin de la placa que alimenta el comprobador de estado manual
boolean estadoPinAlimentacion = true; // encendido/apagado del pin que alimenta el comprobador de estado manual
int remotoPin = 12; // CTE-selecciona el pin de entrada para comprobar cambios en el modo manual
int remotoCambio = 0; // inicialización de la variable para leer en pin del cambio de estado manual
boolean estadoManual = false; // indica el estado del control manual (false-> apagado manual; true-> encendido manual)
boolean estadoManualPrevio = false; // almacena el estado del control manual en el ciclo anterior (false-> apagado manual; true-> encendido manual)

void setup() {
// initialize serial communication:
Serial.begin(9600);
// inicialización de los pines
pinMode(asignaPinAlimentacion, OUTPUT);
pinMode(remotoPin, INPUT);
}

void loop() {
// comenzamos con el pin 13 encendido
if (estadoPinAlimentacion == true) {
digitalWrite(asignaPinAlimentacion, HIGH);
}
// lectura de la señal serie
if (Serial.available() > 0) {
int inByte = Serial.read();
if (placaActiva == true) { // si la placa está en modo activo pasa a actuar dependiendo de la lectura del valor de inByte
switch (inByte) {
// desconectar el pin 13 que alimenta al analógico
// "N" desactiva el pin, "M" lo vuelve a activar
case 'N':
digitalWrite(asignaPinAlimentacion, LOW);
estadoPinAlimentacion = false;
// hay que enviar por serie el código "'placa'13OFF"
Serial.print(selecPlaca, BYTE);
Serial.print('1', BYTE);
Serial.print('3', BYTE);
Serial.print('O', BYTE);
Serial.print('F', BYTE);
Serial.print('F', BYTE);
Serial.print(",");
break;
case 'M':
digitalWrite(asignaPinAlimentacion, HIGH);
estadoPinAlimentacion = true;
// hay que enviar por serie el código "'placa'13ON"
Serial.print(selecPlaca, BYTE);
Serial.print('1', BYTE);
Serial.print('3', BYTE);
Serial.print('O', BYTE);
Serial.print('N', BYTE);
Serial.print(",");
break;
default: //cualquier otro valor leido envía señal de error
// hay que enviar por serie el código "'placa'13err"
Serial.print(selecPlaca, BYTE);
Serial.print('1', BYTE);
Serial.print('3', BYTE);
Serial.print('e', BYTE);
Serial.print('r', BYTE);
Serial.print('r', BYTE);
Serial.print(",");
}
}
// caso que la placa esté en modo activo, se vuelve a modo escucha tras
// haber ejecutado la orden correspondiente
if (placaActiva == true) {
placaActiva = false;
}
//******** SELECCIÓN DE LA PLACA ***************************
//*********************************************************************
// si la variable inByte se corresponde con la letra de la placa (la asignada a la variable selecPlaca en este caso)
// la placa se pone en modo activo
if (inByte == selecPlaca) {
placaActiva = true;
}
}
}

Con estos dos códigos, nos permirtirán activar el pin 13 cuando enviemos la orden "aM" (nodo "a"+orden "M") y desactivarlo cuando enviémos la orden "aN".

Todo este proceso de comunicación está basado en la información publicada en los siguientes enlaces:
Control de Arduino utilizando PHP:
http://www.arduinoprojects.com/?q=node/10
http://www.mydarkmaterials.co.uk/2008/11/30/interfacing-php-with-the-arduino/

Configuración de Zigbee:
http://ladyada.net/make/xbee/arduino.html

Software de configuración de los chips Xbee:
http://www.digi.com/support/productdetail?pid=3352&osvid=0&type=utilities
« Last Edit: March 09, 2013, 06:44:17 pm by castillo14 » Logged

José Antonio Castillo Rodríguez
Responsable de diseño de producto
Functio & Ars S.L.
www.functionars.com

Torremolinos (Málaga)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bueno, después de unas semanas en las que mis publicaciones realizadas sobre el sistema "functiodomo" habían decaído exponencialmente, puedo anunciar que a partir de la próxima semana esto cambiará, con lo que haré pública el resto de documentación (interconexiones, programación, evoluciones...) del proyecto.

La razón del parón que sufrieron las publicaciones es que me anunciaron que el proyecto "functiodomo" había sido preseleccionado entre los finalistas del concurso EmprendeGo, cuyo premio consistía en una colaboración con una empresa patrocinadora, en mi caso Nokia. Como me acaban de comunicar que no estoy al final entre los ganadores, no voy a depender del criterio de ninguna empresa externa y voy a poder continuar con el plan previsto de publicaciones.

Objetivo: desarrollar un sistema de automatización del hogar que sea la referencia del sector.

P.D.: Este fin de semana también abriré un hilo en la sección correspondiente de Home Automation del foro en inglés. Incluiré este hilo como enlace en ese otro nuevo hilo, por lo que es posible que empiecen a aparecer algunos comentarios en el idioma de Shakespeare smiley-wink
Logged

José Antonio Castillo Rodríguez
Responsable de diseño de producto
Functio & Ars S.L.
www.functionars.com

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sigo tus avances, a ver si hay alguna idea tuya que pueda meter en mi casa inteligente.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Torremolinos (Málaga)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Muy pronto podré publicar la documentación de unas nuevas placas que estamos desarrollando para el sistema functiodomo. las PCB que estamos desarrollando son dos:
- Una que engloba toda la parte de control (programable compatible con Arduino), transformador 220 VAC/9 VDC y comunicaciones inalámbricas por XBee. Todo en 60x65mm.
- La otra es la que maneja la parte de potencia, siguiendo el esquema de la que he publicado en este foro. Tamaño 60x55 mm.

Adjunto una imagen del esquema de las placas en modo de conexión para 3 equipos independientes:


¿Cuál es el motivo de desarrollar estas placas? Pues porque necesitaba unas placas que me permitieran minimizar los errores de montaje, que fueran más compactas y que resultasen más económicas que la combinación de placas anteriores.

Conforme me sea posible, iré publicando más información, aquí y a través del blog: http://www.functiodomo.org
« Last Edit: March 09, 2013, 06:46:03 pm by castillo14 » Logged

José Antonio Castillo Rodríguez
Responsable de diseño de producto
Functio & Ars S.L.
www.functionars.com

Torremolinos (Málaga)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Después de un montón de tiempo sin participar en el foro, vuelvo para anunciar que estoy realizando los últimos test a las placas que he desarrollado por necesidades de intergración del sistema "functiodomo".

Características de la placa de control:
- Placa 100% compatible con la plataforma Arduino.
- Alimentación directa desde una toma de 220V AC+3 entradas de interruptor
- Comunicación ZigBee integrada
- Reprogramación "en caliente", esto es puede estar la placa conectada y simplemente conectando el cable de programación a la entrada de datos, se corta la comunicación con el módulo Zigbee y se actúa directamente sobre el chip ATMEGA168
- Dimensiones de la placa 65x60x25 mm
- Posibilidad de conexión de hasta 3 placas de potencia para control de 3 equipos de forma independiente.
- Posibilidad de conexión de 2 sensores junto con las 3 placas de potencia.

Características de la placa de control:
- Capacidad para comportamiento como conmutador de cualquier sistema eléctrico de encendido y apagado
- Conexión directa, sin cableado, a las nuevas placas de control del sistema functidomo
- Esquema eléctrico idéntico al de las placas anteriormente descritas en este foro.
- Dimensiones 40x60x20 mm

He realizado estas placas porque las necesito para la industrialización de nuestro sistema "functiodomo", pero soy consciente de que pueden ser usadas para diferentes y variadas aplicaciones. Mi intención es no sólo utilizarlas para nuestro sistema, sino que si alguien está interesado en adquirirlas para sus propios desarrollos, pues encantado de poder proporcionárselas. Así que vamos a comenzar a vender las placas de forma independiente.

En cuanto termine los test, subiré imágenes y vídeos de las mismas.
Logged

José Antonio Castillo Rodríguez
Responsable de diseño de producto
Functio & Ars S.L.
www.functionars.com

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

Castillo me parece muy interesante tu proyecto, tengo que repasar detenidamente el planteamiento, porque no termino de entender las ventajas de trabajar con la opción Automático/Manual tal y como se emplea en la industria, en la domótica por no existir peligro alguno para el usuario se suele trabajar en un modo combinado sin hacer distinciones. A primera vista, el esquema que publicaste del conmutador necesitabas tres relés cuando con un solo relé biestable es suficiente con lo que reducirá el coste de las placas algo indispensable si quieres que tu sistema desbanque a otros ya consolidados y de reconocidas marcas.
Yo por ahora estoy intentado aprender al máximo sobre Arduino porque necesito desarrollar un sistema de control remoto muy economico, así que de momento estoy en la "escuela", pero si necesitas mi ayuda estaré encantado de ayudarte, llevo 10 años haciendo instalaciones con KNX y alguna que otra automatización industrial.

Suerte campeón!!!
Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Llevo 10 años haciendo instalaciones con KNX y alguna que otra automatización industrial.

Esto son palabras mayores. Una casa domotica de 100 m2 cuanto sale domotizarla con KNX?
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

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

Flico la domótica no se presupuesta como la pintura, por metros, sino por instalaciones. Cuantos circuitos y tipo de alumbrado, persianas, climatización y seguridad fundamentalmente.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hola , me apunto al hilo que es intresante
salu2
Logged

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