Go Down

Topic: Control domotico con servidor integrado en el arduino (Read 5258 times) previous topic - next topic

comeollas

Feb 10, 2011, 01:35 am Last Edit: Feb 11, 2011, 10:29 pm by comeollas Reason: 1
Tengo este codigo en el arduino (dejo el pde aqui en el post ojala tambien ayude a alguien que este en mi caso). Esta montado en un arduino duemilanove/UNO con una eth shield con el chip ENC28J60 (la mas economica del ebay). Tambien tengo un PDE funcional con la eth shield con wiznet (la que venden origianl de arduino) si alguien la necesita me lo dice y la posteo (cuando termine mi proyecto lo posteare todo).

Me he echo una web html donde controlar todos los arduinos para juntarlo todo el dia que toque, ahora por ahora solo es una prueba.

Mi duda es se puede añadir unos casos mas para por ejemplo en ciertos pins del arduino decirle activalo 4 segundos cuando haga el click y luego desactiva otra vez?

Seria para tener un boton para poner la persiana electrica en el centro de su recorrido, el delay no se cual seria eso lo veria cuando tenga la persiana montada.

Haber si un alma caritativa me puede modificar para que vea como seria. He echo alguna prueba y no me salgo con la mia y eso que me da la sensacion que es un fallo tonto XD


Gracias a todos por vuestra colaboracion!!

comeollas

He estado trasteando, veo que no me funcionaba por culpa del buffer (lo averigue a base de leer por el antiguo foro, pero no entiendo muy bien de que va).

Para que me funcionase quite la web que escribe el arduino cuando pones su ip y asi me deja poner mas botones, sino no me dejava.

Estoy intentando poner un delay en alguno de los casos y veo que si pongo un delay de 1000ms realmente me hace esperar 3000ms es porque hago mal en ponerlo asi?

Este es el codigo para hacer que se enciendan los reles:

                    case 'K': //el caso K y L son los funcionales normales que van al instante si hago click en la web que me he echo
                            on_off6=1;
                           digitalWrite(SW6, HIGH);  // switch on LED6
                            break;
                    case 'L':
                            on_off6=0;
                           digitalWrite(SW6, LOW);  // switch off LED6
                            break;     
                     case 'M': //aqui simplemente quite el break y caso N poniendo un delay en medio.
                            on_off7=1;
                           digitalWrite(SW7, HIGH);  // switch on LED7
                           // break;
                     //case 'N':
                     delay(1000);
                            //on_off7=0;
                            digitalWrite(SW7, LOW);  // switch off LED7
                            break;


comeollas


pacojarcia

te dejo la misma versión del PDE pero modificada para que quede algo más clara:
- no le paso argumentos a la función print_webpage (son variable globales) así si modificas algo en el programa no tienes que estar cambiando la función.
- he quitado algún switch a cambio de ver variables analógicas
- le buffer lo he subido a 1600 (más de daba problemas)
- he puesto un debugger para ver si me paso o no en el tamaño del buffer

Me queda pendiente saber algo más de HTML. Si la página se hace más simple, se podrían ver más cosas.
En mi opinión es el mayor limitante

Estoy viendo otras liberías que haces más amigable programar la ethershield, pero cada una tiene sus "pijadas" y no hay tiempo para todo.

comeollas


Pues no utilizarlo o realizar la comunicacion cuando no tengas que contar tiempo. En la referencia de arduino hay algun documento sobre esto.


Amph, no entiendo a la que te refieres (piensa que soy un novato total :P)

comeollas


te dejo la misma versión del PDE pero modificada para que quede algo más clara:
- no le paso argumentos a la función print_webpage (son variable globales) así si modificas algo en el programa no tienes que estar cambiando la función.
- he quitado algún switch a cambio de ver variables analógicas
- le buffer lo he subido a 1600 (más de daba problemas)
- he puesto un debugger para ver si me paso o no en el tamaño del buffer

Me queda pendiente saber algo más de HTML. Si la página se hace más simple, se podrían ver más cosas.
En mi opinión es el mayor limitante

Estoy viendo otras liberías que haces más amigable programar la ethershield, pero cada una tiene sus "pijadas" y no hay tiempo para todo.



No tienes problemas si utilizas todos los pins digitales? yo he modificado el pde que posteaisteis para controlar los pins 2 a 9 que estan libres de la duemilanove/uno y si no quito la web se queda pillado, haciendo una web externa puedo controlar todo bien, pero tengo el problema (solo es problema dependiendo de para que lo tenga que usar en el caso actual da igual, este proyecto solo sera para subir/bajar persianas y encender luces), tengo que mirar si toca la moral si pongo LDR's y LM35's para mirar temperaturas y otras funciones como abrir cerrar persianas cuando es de dia o noche, o le da el sol en verano/hinvierno.

Pero una cosa que me pica mucho ahora es el tema de usar RS o canbus (para mi aun es chino esto) porque veo que todo el mundo se decanta por alla y no se porque :P

Gracias a todos por vuestros aportes, poco a poco voy aprendiendo jejejeje

pacojarcia

Yo acabo de conectar el arduino haciendo un bus RS485 con el integrado MAX485 (2,5€).
el el PC uso un coversor RS232-RS485.
He usado varias aplicaciones para monitorizar los puertos. Tambíen he conseguido comunicar el arduino con un software comercial de medición de consumos de energía de Circutor (Power Studio). Esta parte es la que más tiempo me ha llevado, porque aunque funcionaba el bus, no comunicaban. El problema es el Power Studio solo usaba la función 4 para leer el Arduino y esa función no estaba implementada. En el PDE cambié la función 3 por 4 y todo ha ido muy bien.
La ventaja del Modbus es que con 2 hilos sin muchas historias puede comunicar equipos a mucha distancia. En donde trabajo tengo equipos Circutor a distancias de 400m en un ambiente industrial sin problema.

comeollas


Yo acabo de conectar el arduino haciendo un bus RS485 con el integrado MAX485 (2,5€).
el el PC uso un coversor RS232-RS485.
He usado varias aplicaciones para monitorizar los puertos. Tambíen he conseguido comunicar el arduino con un software comercial de medición de consumos de energía de Circutor (Power Studio). Esta parte es la que más tiempo me ha llevado, porque aunque funcionaba el bus, no comunicaban. El problema es el Power Studio solo usaba la función 4 para leer el Arduino y esa función no estaba implementada. En el PDE cambié la función 3 por 4 y todo ha ido muy bien.
La ventaja del Modbus es que con 2 hilos sin muchas historias puede comunicar equipos a mucha distancia. En donde trabajo tengo equipos Circutor a distancias de 400m en un ambiente industrial sin problema.


Si se comunican con dos hilos, si el segundo aparato se estropea cae el tercero y cuarto? o el hilo va unido del inicio al fin y pueden estropearse los que sean que cuelgan de el sin afectar al resto?

pepote97

Oye pacojarcia, ese sistema que usas de comunicación, se puede usar a su vez como alimentación también, o no ¿?

Y si estan todos en serie, si se cae uno, tira la comunicación del resto ?¿?

Un saludo

Igor R

#9
Feb 11, 2011, 11:25 pm Last Edit: Feb 12, 2011, 12:32 am by Igor R Reason: 1
pacojarcia, molaria que hicieses una explicacion de tu proyecto con modbus, codigo, como has cableado,...
Podrias integrarlo en el blog en espanyol de Arduino, no??
Para dar un empujoncito al material en espanyol.... :D

Yo hace tiempo escribi esto sobre el RS485 en castellano => http://real2electronics.blogspot.com/2009/09/buses-de-campo-para-arduino-rs485.html

Es estructura de bus, por lo que si "rompes" dicho bus.... estas "muerto".
Lo de si se cae uno, no lo entiendo muy bien.....

Lo mejor es "actualizarse" a CAN, que tiene muchas mas ventajas, y no hay mucha diferencia de precio.



Salu2



Igor R.

comeollas


Es estructura de bus, por lo que si "rompes" dicho bus.... estas "muerto".
Lo de si se cae uno, no lo entiendo muy bien.....

Lo mejor es "actualizarse" a CAN, que tiene muchas mas ventajas, y no hay mucha diferencia de precio.

Salu2

Igor R.


Con lo de si se cae uno, me refiero a que si se quema el arduino del centro por ejemplo, deja de haber comunicacion con los que tiene detras.

Igor R

Segun lo que le pase al driver, que es el dispositivo que se conecta entre el Arduino y el bus.

Te pongo un diagrama como se cablea un bus CAN (que es similar al rs485):


comeollas

Ok, veo que van con "Y" asi que el cable que pasa de un arduino a otro no esta separado entre los dos extremos.

Tendre que estudiarmelo, por ahora se que cableando MAS (ethernet shield sin complicarme la vida pero tirando un cable a cada arduino) puedo hacerlo ahora lo que falta es intentar enteder como usar RS-485 o CAM que aun no tengo claro como funcionaria en una instalacion domotica ni que diferencias de programacion en el arduino habra.

Bufff, no se que hacer si quedarme con lo que estoy ahora o intentar cambiar mi "chip" y ir a por el bus.

Igor R

#13
Feb 12, 2011, 12:30 am Last Edit: Feb 12, 2011, 12:35 am by Igor R Reason: 1
FAQ de http://secuduino.blogspot.com/
esta todavia calentito!!! recien sacado del horno!!

Tambien puedes usar rs485/can para el control, y luego tener uno de ellos que tenga ethernet para monitorizar por web.

Si quieres tener varios modulitos distribuidos, lo mas sencillo a mi manera de ver es Can bus.

comeollas

Una pregunta que no he echo podeis explicarme que mejoras hay con can o 485 a que use eth shield (aparte del tema de la facilidad del cableado).

Mi proyecto no es gran cosa, control de ventanas, puertas... algun sensor de movimiento, temperatura/humedad...


Go Up