Proyecto Souliss (Domotica sencilla y barata) con App Android. ESTABLE


Bueno, dada la poca difusion y mucho potencial de la libreria que quiero presentar, creo que es importante hacer una buena exposicion del Sistema, y aun mas, de sus posibilidades (casi ilimitadas)

Primero quede claro que es un proyecto totalmente abierto, en el que simplemente colaboro y para el cual busco mas apoyo de forma desinteresada ( mentira! casi todos son italianos y busco apoyo de hispano-parlantes... xD porque no me entero de nada en su foro!! ) ... bueno, tambien hablan bien ingles, mejor que yo... xD

Novedad!!! Hemos hecho un Blog con una serie de Tutoriales por niveles para que sea mas facil para todos aprender y colaborar! Aqui la direccion:

El sistema se basa en nodos, (Arduino y compatibles), como minimo tendremos un nodo principal o gateway, el cual se puede conectar a la LAN de casa tanto con el Shield estandar como el mucho mas economico ENC28J60 (1.67€), asi como por WIFI. NOTICIA IMPORTANTE Hemos conseguido INTEGRAR de forma directa un NODO Souliss sobre un modulo ESP8266!! SIN ARDUINO Este modulo cuesta entre 2-3€! :slight_smile: Pongo los Links y Mucha mas informacion [/url]aqui.. Recomiendo igualmente terminar de leer este post.

Aqui el post de la integracion que estoy haciendo yo:
https://groups.google.com/forum/#!topic/souliss-es/MRNRyQ-6CxU
El post en Ingles:
https://groups.google.com/forum/#!topic/souliss/8TALFUqfzEQ
Y la noticia en la web:

Aqui el link directo al IDE con la libreria integrada:
https://drive.google.com/a/souliss.net/folderview?id=0BzyjHRwlzov4fjkwWVZJNVExVUc0QzVpVmRobTZkWkJ3Wk55b0xPUE9xTU0xRVJYZkQzcWs&usp=drive_web#list

Con esta configuracion minima y un codigo en Arduino reducido podremos configurar diferentes tipos de dispositivos:
-Cualquier tipo de sensor
-Led's
-Reles
-Tiras Led (RGB y normales)
-Motores (Cortinas y Persianas, con finales de carrera)
-Control cualquier dispositivo por envio de Infrarrojos (Aires acondicionados, TV, Tiras Led RGB con mando,...)
-Pulsadores (Capacitivos y pushbuttons)
-Pulsadores externos por rf ( Con los emisores y receptores mas baratos, 1€)
-Alarmas
-... (Puedes imaginar algo mas? Aportalo! :slight_smile: )


Y con esto podemos instalarnos la App gratuita de Android para controlar todo, es sencilla de configurar (solo poner la ip) y si se quiere tambien se puede conectar desde 3G simplemente poniendo la IP publica de nuestra conexion. Permite programar grupos de comandos (apagar todas las luces, ... ) y escenas (Encender calefaccion si hace frio, apagar luces si no estoy en casa, encendidos temporizados, y demas condicionales configurables. Tambien permite ver de forma manual todos los Nodos y Slots ("dispositivos"), asi como controlar directamente la intensidad o color de las luces, sincronizarlas con la musica o ver graficos de temperatura y humedad de tiempo ilimitado. (Link de la App al final)

Edito He desarrollado una pequeña app que nos permite el control de la domotica por Comandos de Voz de forma sencilla, intuitiva y sin ninguna configuracion :slight_smile:
Espero que os guste!

Por supuesto el sistema es totalmente autonomo y puede controlarse todo con las entradas (botones,etc...) - salidas

Pero no queda aqui, de hecho, a partir de aqui es desde yo empiezo a implicarme en la idea de Souliss.

Un nodo es barato, solo necesitas un Arduino ( yo de hecho uso atmega328 standalone ) y una conexion de red, en mi caso la mas economica ENC fue la que hizo que me decantara por este proyecto, y no me equivoque.

A partir de la idea de tener un nodo que hace de gateway podemos conectar otros a él. Los metodos de conexion entre nodos son tambien muy interesantes, se puede conectar cualquier otro nodo por LAN (cable o wifi) o bien por conexion directa (cruzando RX-TX), con distancia limitada, la cual he conseguido ampliar con la conexion de unos chips muy baratos (MAX485 4€ 10ud) a una distancia maxima de 1.2km entre cada nodo. :slight_smile:

La ventaja de este metodo es que con un solo Arduino + ENC puedo tener hasta 31 nodos conectados con solo dos cables (utilizando la instalacion de cable telefonico de mi casa) y los Peers (o nodos no-gateway) unicamente necesitaran para conectarse a la red de Souliss un MAX485 (0.40€). Con esto tendriamos practicamente la red domotica de la casa motada =)

Luego quedaria la instalacion de control, que seran los botones, pulsadores o capacitivos, y por supuesto los dispositivos a controlar, en mi caso la iluminacion sera practicamente sustituida por iluminacion led por tiras de led, o leds de alta potencia, asi como pulsadores capacitivos. Los sensores de Temperatura-Humedad (DHT11 1€ud) se pueden montar directamente sobre el Nodo.

Tambien he desarrollado un pequeño dispositivo ( que se puede cargar en un atmega8 ) que enviaria hasta 18 botones o pulsadores al nodo por RF, con las placas mas baratas del mercado (1€ el emisor y el receptor), de forma que podria tener la "botonera" sustituyendo los interruptores de la luz ( o poniendo una simple placa de metal encima convertirlo en un sensor capacitivo ) y el nodo, con las Salidas (Regletas, lamparas, tiras led).

Para mi era prioritario para el proyecto que fuera lo mas BARATO posible. ( Se nota no? xD) El coste de un nodo (incluyendo botones capacitivos, transistores para control de tiras led, led infrarrojo, receptor rf, sensor de temperatura y humedad y max485) rondara los 5€ :slight_smile:

Y por ultimo, pero no menos importante, estamos dando los ultimos toques al desarrollo una interfaz de enlace con OpenHab (Si, el archiconocido) y una interfaz simple en web, ( la app de android ya devuelve el estado de la red y permite enviar comandos de encendido y apagado por html ) Hay algun proyecto avanzado en HTML5+JS+CSS. Y tambien hemos desarrollado una "mini-app" que recoge los datos y los sube a xively (una web que permite registrar sensores y datos para posterior analisis y estadisticas)

Los links para mas informacion:

IMPORTANTE, proyecto migrado a github, todas las descargas y codigo fuente aqui:

Guia de Primeros Pasos en ESPAÑOL Traducida por Dabauza (Gracias!)

La web, con algo de informacion, noticias y videos pero para estar realmente al dia es mejor el foro.

El foro (registraros!! que estoy solo hablando español!! jajaja)
https://groups.google.com/forum/#!forum/souliss

Unos videos de Youtube (Haz tu Souliss y subelo!! )
http://www.youtube.com/results?search_query=souliss

La app
https://play.google.com/store/apps/details?id=it.angelic.soulissclient&hl=es

Espero que os guste y que podais aportar vuestro desinteresado apoyo :slight_smile: Sois Bienvenidos :slight_smile:

Edito. Añado el Link con la explicacion un sketch de Souliss y para poder entender un poco mejor el codigo:

http://forum.arduino.cc/index.php?topic=223723.msg1643510#msg1643510

Añado Sketch GATEWAY sencillo con 2 Sensores DHT, Led normal y Led PWM. (Ocupa 182 lineas Con comentarios 88 Sin Ellos, asi que es Sencillito y esta bien explicado :stuck_out_tongue: ) Dado que utiliza la libreria DHT la añado aqui como adjunto, aunque es la libreria estandar.

http://forum.arduino.cc/index.php?topic=223723.msg1651081#msg1651081

DHT.ZIP (1.55 KB)

Has visto este proyecto.

http://excontrol.es/Domotica-Arduino/Default.aspx

Es parecido pero tooodo en español!!!, tinene todas las funciones que comentas y ademas puedes programar horarios, controlar condicionados, control por voz....

Lo conozco, lo estuve mirando y realmente esta muy desarrollado y con algunas funciones interesantes como el RTC integrado. Principalmente no lo probé porque no tengo un shield original W5100, utilizo el ENC, que es muuucho mas economico, he estado buscando informacion en el foro y no he localizado forma de integrarlo.

Por otro lado y con todo mi respeto al proyecto Excontrol y a su comunidad, no me parecio interesante la idea de tener que pagar 17€ por año por tener el servicio a traves de 3g, es una de las cosas que mas importantes considero. Entiendo el trabajo de desarrollo, incluso la aplicacion de pago por 10€, ahora bien, con esos precios esperaria un proyecto ( a nivel hardware ) mas desarrollado.

El tema de horarios y condicionales ya esta integrado tambien en la APP de Souliss y estoy hechando una mano para configurar otras muchas cosas "en caliente" directamente sobre los nodos.
El control por voz no esta integrado, estamos en ello y es muy sencillo, al tener integradas respuestas y comandos por HTML al nodo o a la app de android las posibilidades infinitas.

Ademas tambien se puede controlar directamente el color de una tira RGB, o sincronizarlo con la musica, ver graficos detallados de Sensores.

Buenas, estoy mirando pero no esta la app para IOS :0.
Supongo que con el tiempo la sacaran para Iphone de momento toca esperar y seguir buscando.

Buenas, estuve viendo los enlaces de Souliss que explican el funcionamiento y demas cosas, pero no me quedan claro algunas cuestiones, como por ejemplo, si trabajo con el modulo Ethernet ENC....., como tiene que estar configurado este? es decir, lo conecto por cable de red a uno de los puertos LAN de mi Router y que tendria que setearle al micro del ethernet? luego como seria la conexión de este modulo con Arduino?
Si por ejemplo quiero que la conexión entre nodos, es decir, desde el ethernet+arduino y otro nodo, por ejemplo, un modulo de relé que comande un foco, sea inalambrica, lo puedo hacer? Mucha gracias

Mañana mismo te pongo las conexiones (son las standard) para el ENC son los pines del 10 al 13. La configuracion del mismo es muy sencilla, basicamente 1 linea de codigo. (mañana lo detallo que estoy en el movil)
Para tu caso no son necesarios 2 nodos (2arduino) aunque te detallo algunas opciones inalambricas de conexion entre nodos.
De la conexion entre nodos inalambrica hay multiples opciones, la mas barata ya probada son los modulos rf tradicionales (1€), tambien estan funcionando los. modulos ciseco rf que ademas de permitir conexion podremos reprogramar los nodos con ellos ( me refiero a cambiar el sketch si fuese necesario) y tambien estamos integrando el modulo rf24 que son baratos y permiten mas control que los rf tradicionales. Ademas de todas estas opciones baratas cualquier conexion con modulos wifi o otro ethernet convertiria ambos nodos en una red visible desde la app de android, con conectarlo a la red ya funciona, simplemente cargarlo al arduino e instalar la app. 10 minutos.

En tu caso (encender un modulo de un rele de forma inalambrica) la opcion usada seria esta:
code.google.com/p/souliss/wiki/ss_RCSwitch
Aunque tambien seria mas sencillo, para realmente leer el estado del rele, quue el rele estuviera conectado al nodo, este a su vez a la red, y poder manejarlo s traves de la app, de botones o capacitivos, que pueden estar directamente conectados o bien inalambricos.
Mañana lo detallo :slight_smile:

aldsa como te dije se esta comentando en el foro, es mas hay una persona trabajando en adaptar la app a ios. Y en otra rama tanto el nodo como la app responden a comandos html y devuelve una estructura json con el estado, he hecho una pequeña webapp en jquery html css que muestra los nodos y dispositivos de forma dinamica, Aqui tienes un link para que puedas ver la idea de la webapp

La conexion de la tarjeta ENC28J60 seria la siguiente:


ENC28J60:

CS - pin 10
SI - PIN 11
SO - PIN 12
SCK - PIN 13

Y las conexiones de VCC Y GND obviamente,

Para configurarla simplemente debes configurar el valor de BOARDTYPE, hay varias formas:

-La mas sencilla: Añadir al principio del sketch:

#include "bconf/inSketch.h"
#define QC_BOARDTYPE 0x05 //Arduino with ENC28J60 Ethernet Shield

//Si queremos configurarlo como Gateway
#define QC_GATEWAYTYPE 0x01 //Gateway

//Si ademas quieres configurarle tu la IP hay que definir:
#define network_address_1 0x0011 // 0x0011 es igual a 17 en decimal
#define network_my_subnet 0xFF00
#define network_my_supern 0x0000

Esto realmente no es necesario, ya que tambien podemos configurar la ip de forma dinamica, de hecho, cualquier nodo conectado a un gateway se puede incluir en la red sin necesidad de configurar las direcciones, incluso siendo la conexion por UART (RS485).

-La forma antigua era modificar el archivo /conf/QuickCfg.h pero ahora se puede hacer practicamente todo desde el metodo que hemos creado llamado inSketch, el cual permite configurar todo sin tener que alterar los archivos de la libreria. Mas detalles: Google Code Archive - Long-term storage for Google Code Project Hosting.

Abre el ejemplo mas basico: Souliss_ex01_HelloWorld_eth1.ino
http://code.google.com/p/souliss/wiki/Souliss_ex01_HelloWorld

Y veras como al principio explica casi todo en los comentarios. En ese ejemplo veras que el codigo es algo mas complicado, actualmente tenemos el metodo SpeakEasy que permite programar todo en un sketch muuucho mas simple. Souliss tiene integrado en el codigo una serie de funciones que permiten ejecutar cualquier accion en una frecuencia de tiempo (desde 30ms a 2110seg) Esto tambien se simplifica con el SpeakEasy. Te pongo un link de la wiki para que veas la diferencias entre un sketch con y sin speakeasy

http://code.google.com/p/souliss/wiki/SpeakEasy

Cualquier duda no dudes en consultarme, y sobretodo comparte tu codigo :slight_smile:

De hecho, con respecto al codigo estamos trabajando en un pequeño interfaz grafico en el que seleccionemos el tipo de placa y los dispositivos conectados para con ello obtener un sketch ya completo.

Gran parte esta desarrollado, pero estaria bien "reclutar" a nuevos colaboradores, y sobretodo estaria bien añadir gente con conocimientos en HTML y JS para algunas cosas, asi como desarrolladores de Apps Android e IOs, aunque toda ayuda es bienvenida =)

Salu2

juanpintom:
Lo conozco, lo estuve mirando y realmente esta muy desarrollado y con algunas funciones interesantes como el RTC integrado. Principalmente no lo probé porque no tengo un shield original W5100, utilizo el ENC, que es muuucho mas economico, he estado buscando informacion en el foro y no he localizado forma de integrarlo.

Por otro lado y con todo mi respeto al proyecto Excontrol y a su comunidad, no me parecio interesante la idea de tener que pagar 17€ por año por tener el servicio a traves de 3g, es una de las cosas que mas importantes considero. Entiendo el trabajo de desarrollo, incluso la aplicacion de pago por 10€, ahora bien, con esos precios esperaria un proyecto ( a nivel hardware ) mas desarrollado.

El tema de horarios y condicionales ya esta integrado tambien en la APP de Souliss y estoy hechando una mano para configurar otras muchas cosas "en caliente" directamente sobre los nodos.
El control por voz no esta integrado, estamos en ello y es muy sencillo, al tener integradas respuestas y comandos por HTML al nodo o a la app de android las posibilidades infinitas.

Ademas tambien se puede controlar directamente el color de una tira RGB, o sincronizarlo con la musica, ver graficos detallados de Sensores.

Creo que no has comprendido bien el servicio de conexion 3g, este permite conectarte a tu instalación mediante una conexion 3g, teniendo una ip dinamica en tu router, vamos que te ahorras Dydns, NoIp o servicios similares.

Si tienes una ip fija o un nombre de dominio puedes omitir este servicio.

Otra cosa que comentarte es el precio del servicio, son 17USD, unos 10€, no 17€.

Mis disculpas entonces, ciertamente lei demasiado rapido los 17USD (Sinceramente mi capacidad economica no me permite actualmente ni 10€ ni 17€ :(( ).

En todo caso me sigue siendo imposible probarlo ya que no tengo Ethernet Shield Original. Ademas he estado mirando el codigo arduino, no esta mal, pero se puede disponer del codigo fuente de la app de Android?

Lo cierto es que estoy muy contento con el entorno de Souliss, aunque le daria una oportunidad a Excontrol si tuviera soporte ENC28j60 (1.67€)

Un saludo

Integracion en OpenHab "casi" finalizada. Por cuestiones de memoria y de persistencia de los datos estamos tratando de optimizar algo el codigo, por ahora es posible probarlo sobre 2560 .

http://code.google.com/p/souliss/wiki/UserInterfaces

Aqui un video de demostracion para subida / bajada de persianas y luces.

Un saludo

juanpintom felicidades por la forma de exponer el proyecto.

Yo soy un novato en esto, pero tan novato como que el otro día compre mi primer arduino uno para empezar a ver video tutoriales y meterme en este mundo.

Me atrae mucho la idea de montar Souliss en mi casa.

Voy a ver la documentación que aportas, a ver si me entero de algo y empezar a pedir módulos por china… ¿Alguna página en especial?

Un saludo y lo dicho.

Gracias.

Hola juanpintom,

Muy interesante el tema. esto es justo todo lo que yo tenia en mente y pretendía hacer. Solo que yo llevo poco tiempo trasteando con Arduino y aun estoy en fase de aprendizaje. XD

Yo tengo un Arduino UNO, un mega 2560, y un Pro Mini atmega328 como este:
http://www.ebay.es/itm/New-Pro-Mini-atmega328-Board-5V-16M-Arduino-Compatible-Nano-GOOD-QUANLITY-/121192432250?pt=LH_DefaultDomain_0&hash=item1c37a1c27a&_uhb=1

Este ultimo me a parecido entender que si que sirve. ¿No? Al menos eso creo que pone aqui:
"Arduino Boards
Runs over Atmel ATmega328P and ATmega32U4 is 16 MHz configuration, you can add an Ethernet shield with Wiznet W5100 or Microchip ENC28J60 to bridge them to a network. Use its I/O pins to link objects"

Por otra parte, ¿a que tipo de botones capacitivos, led infrarrojo y el receptor rf te refieres?

Si no me equivoco ni se me escapa nada a mi solo me faltaría comprarme un ENC28J60 ya que mi idea era usar el Mega 2560 como nodo principal y el resto acoplarlos a este, pero voy un poco perdido en tema, he estado mirando la info que has enviado pero entre que mi dominio del ingles no es que sea demasiado amplio y como ya he dicho con el Arduino estoy aprendiendo...

Si pudieras decirme por donde empezar o asesorarme un poco te lo agradecería.

Un saludo

doraimontv:
juanpintom felicidades por la forma de exponer el proyecto.

Yo soy un novato en esto, pero tan novato como que el otro día compre mi primer arduino uno para empezar a ver video tutoriales y meterme en este mundo.

Me atrae mucho la idea de montar Souliss en mi casa.

Voy a ver la documentación que aportas, a ver si me entero de algo y empezar a pedir módulos por china… ¿Alguna página en especial?

Un saludo y lo dicho.

Gracias.

Hola! Por el tema de ser novato en Arduino no te preocupes, es mas sencillo de lo que parece.

Montar Souliss en casa es extremadamente sencillo ! De hecho el planteamiento de mi proyecto es hacerlo de la forma mas sencilla y barata. Comentame las "dimensiones" de tu proyecto y los elementos que quieres controlar, siempre hay que empezar por el Gateway (el nodo que se encarga de enviar por red los datos para ser controlados a traves de la App de Android, para ello necesitaras minimo un Arduino (Yo uso un Atmega328Mini, (2€) pero cualquiera sirve) y una tarjeta de red (Yo uso la ENC28J60 que cuesta 1,67€)

Por lo demas, dependiendo de la idea que lleves de dispositivos "a controlar" necesitaras unos u otros componentes o modulos, en cualquier caso, ya no es un mundo al alcance de unos pocos. Yo practicamente lo compro todo a traves de eBay, con un poco de paciencia (20-30 dias) el ahorro es en torno al 60-70% :open_mouth:

-Por ejemplo, un modulo interesante a tener es el de Reles, por poco menos de 1-2€ tienes uno de 2 reles y por 5-6€ tienes uno de 8 reles.
-Para controlar una tira de leds unicamente hace falta un Transistor de media potencia (TIP122 utilizo yo) y valen baratiiiisimos (0.15-0.30€/ud).
Con estos dos tipos de elementos controlas practicamente cualquier elemento de iluminacion o elemento a 220v

Siempre es bueno tener por casa unas pocar resistencias de diferentes valores, yo principalmente uso de 220O, 10k, 100k y 1mO, aunque venden paquetes de (hasta 1000!) por unos 6€ y son de casi todos los valores. Los paquetes de 100ud de 1 valor suelen costar en torno a 1€.

Para la parte de "entradas", es decir, botones o pulsadores sirve cualquier cosa, pushbuttons son baratos, y los botones capacitivos se hacen con una resistencia de 1mOhm (economico economico!) xD

Lo mejor es que a partir de un Arduino (cualquiera), y una Ethernet, te plantees un nodo, y luego a ese nodo veas que elementos quieres controlar, detallame eso y soy mas especifico :slight_smile:

Salu2

Dabauza:
Hola juanpintom,

Muy interesante el tema. esto es justo todo lo que yo tenia en mente y pretendía hacer. Solo que yo llevo poco tiempo trasteando con Arduino y aun estoy en fase de aprendizaje. XD

Yo tengo un Arduino UNO, un mega 2560, y un Pro Mini atmega328 como este:
http://www.ebay.es/itm/New-Pro-Mini-atmega328-Board-5V-16M-Arduino-Compatible-Nano-GOOD-QUANLITY-/121192432250?pt=LH_DefaultDomain_0&hash=item1c37a1c27a&_uhb=1

Este ultimo me a parecido entender que si que sirve. ¿No? Al menos eso creo que pone aqui:
"Arduino Boards
Runs over Atmel ATmega328P and ATmega32U4 is 16 MHz configuration, you can add an Ethernet shield with Wiznet W5100 or Microchip ENC28J60 to bridge them to a network. Use its I/O pins to link objects"

Por otra parte, ¿a que tipo de botones capacitivos, led infrarrojo y el receptor rf te refieres?

Si no me equivoco ni se me escapa nada a mi solo me faltaría comprarme un ENC28J60 ya que mi idea era usar el Mega 2560 como nodo principal y el resto acoplarlos a este, pero voy un poco perdido en tema, he estado mirando la info que has enviado pero entre que mi dominio del ingles no es que sea demasiado amplio y como ya he dicho con el Arduino estoy aprendiendo...

Si pudieras decirme por donde empezar o asesorarme un poco te lo agradecería.

Un saludo

Hola! aprendemos todos cada dia, eso es lo que me encanta de este "ambito" de "trabajo" :slight_smile:

Te sirve cualquiera de los que mencionas, el Arduino Uno en esencia es un atmega328p :slight_smile: Efectivamente necesitas alguna tarjeta de red para conectarlo (la ENC funciona perfectamente y es mucho mas barata), para la interconexion de nodos hay multiples opciones, la mas barata es por RS485. ( mas adelante te detallo segun el proyecto que tengas en mente )

Lo primero de todo, y lo normal, es utilizar pushbuttons simples ( cuestan pocos centimos )

Los botones Capacitivos, los he integrado en Souliss usando la libreria Capsense, con una simple resistencia de 1 a 10mOhm y una superficie metalica tienes un "boton", tocando el metal, lanzarias una pulsacion, o podrias hacer una pulsacion larga, con ello podrias apagar/encender, controlar brillo, etc... incluso estoy pendiente de integrar un funcion "slide" para deslizar sobre la superficie metalica y configurar por ejemplo el brillo de la lampara.

El tema del envio de Infrarrojos es sencillo, a traves de un Led de Infrarrojos (barato) conectado al PIN3 del nodo, este enviaria señales codificadas como un mando a distancia, a un dispositivo con un receptor de infrarrojos, sea un Aire Acondicionado, una TV o una Tira de Leds con Receptor y Mando como esta:

http://www.ledquotations.com/media/catalog/product/cache/1/image/6464c348eaa9b36b9dfeb15420a243f4/0/5/05010744.jpg

En cualquier caso hay que configurar el codigo a enviar, es algo relativamente sencillo de hacer para cada caso, aunque no hay un caso general o configuracion universal (estoy desarrollando algunas funciones que podrian ayuda a configurar esto fuera del tiempo de compilacion)

Los botones rF es algo que he desarrollado hace unos dias y aun esta en pruebas, en concepto es utilizando los receptores-emisores RF tradicionales (los baratos), conectando el Receptor al Nodo Souliss y el Emisor formaria parte de un mini-proyecto que yo llamo Souliss-Button-Sender, que es un Arduino (Puede ser un Atmega8 que vale muucho mas barato, en torno a los 0.60€) y los botones conectados a este. De esta forma podriamos enviar multiples botones desde Souliss-Button-Sender ubicado como sustituto o añadido a mi interruptor de las luces tradicional. Aqui tienes la pagina de la Wiki que añadí hace poco:

http://code.google.com/p/souliss/wiki/DistributedRCSwitches

De esta forma no tengo en la misma ubicacion el Nodo con los cables para controlar luces y demas y los botones que controlan el sistema. Pero repito, esto es algo que acabo de aportar yo, cualquier tester es bienvenido =)
Tambien tengo en mente hacer lo mismo pero con un Repeptor de Infrarrojos conectado a Souliss y controlarlo todo a traves de un mando a distancia :slight_smile:

El nodo Gateway con un 2560 perfecto, esa era mi idea para tener un Gran Gateway y con mucha memoria, para asi poder usar las opciones de OpenHab y demas ( aunque estan en pruebas ya funcionales de ello ) Igualmente con un Gateway en un atmega328p + ENC funciona perfectamente ( yo lo tengo conectado desde hace meses y funcionando en un AtmegaMini)

Dame/Dadme mas detalles de tu/vuestro proyecto y hacemos el codigo (que por otro lado es extremadamente simple) :slight_smile:

Salu2

juanpintom:
Hola! aprendemos todos cada dia, eso es lo que me encanta de este "ambito" de "trabajo" :slight_smile:

Te sirve cualquiera de los que mencionas, el Arduino Uno en esencia es un atmega328p :slight_smile: Efectivamente necesitas alguna tarjeta de red para conectarlo (la ENC funciona perfectamente y es mucho mas barata), para la interconexion de nodos hay multiples opciones, la mas barata es por RS485. ( mas adelante te detallo segun el proyecto que tengas en mente )

Lo primero de todo, y lo normal, es utilizar pushbuttons simples ( cuestan pocos centimos )

Los botones Capacitivos, los he integrado en Souliss usando la libreria Capsense, con una simple resistencia de 1 a 10mOhm y una superficie metalica tienes un "boton", tocando el metal, lanzarias una pulsacion, o podrias hacer una pulsacion larga, con ello podrias apagar/encender, controlar brillo, etc... incluso estoy pendiente de integrar un funcion "slide" para deslizar sobre la superficie metalica y configurar por ejemplo el brillo de la lampara.

El tema del envio de Infrarrojos es sencillo, a traves de un Led de Infrarrojos (barato) conectado al PIN3 del nodo, este enviaria señales codificadas como un mando a distancia, a un dispositivo con un receptor de infrarrojos, sea un Aire Acondicionado, una TV o una Tira de Leds con Receptor y Mando como esta:

http://www.ledquotations.com/media/catalog/product/cache/1/image/6464c348eaa9b36b9dfeb15420a243f4/0/5/05010744.jpg

En cualquier caso hay que configurar el codigo a enviar, es algo relativamente sencillo de hacer para cada caso, aunque no hay un caso general o configuracion universal (estoy desarrollando algunas funciones que podrian ayuda a configurar esto fuera del tiempo de compilacion)

Los botones rF es algo que he desarrollado hace unos dias y aun esta en pruebas, en concepto es utilizando los receptores-emisores RF tradicionales (los baratos), conectando el Receptor al Nodo Souliss y el Emisor formaria parte de un mini-proyecto que yo llamo Souliss-Button-Sender, que es un Arduino (Puede ser un Atmega8 que vale muucho mas barato, en torno a los 0.60€) y los botones conectados a este. De esta forma podriamos enviar multiples botones desde Souliss-Button-Sender ubicado como sustituto o añadido a mi interruptor de las luces tradicional. Aqui tienes la pagina de la Wiki que añadí hace poco:

Google Code Archive - Long-term storage for Google Code Project Hosting.

De esta forma no tengo en la misma ubicacion el Nodo con los cables para controlar luces y demas y los botones que controlan el sistema. Pero repito, esto es algo que acabo de aportar yo, cualquier tester es bienvenido =)
Tambien tengo en mente hacer lo mismo pero con un Repeptor de Infrarrojos conectado a Souliss y controlarlo todo a traves de un mando a distancia :slight_smile:

El nodo Gateway con un 2560 perfecto, esa era mi idea para tener un Gran Gateway y con mucha memoria, para asi poder usar las opciones de OpenHab y demas ( aunque estan en pruebas ya funcionales de ello ) Igualmente con un Gateway en un atmega328p + ENC funciona perfectamente ( yo lo tengo conectado desde hace meses y funcionando en un AtmegaMini)

Dame/Dadme mas detalles de tu/vuestro proyecto y hacemos el codigo (que por otro lado es extremadamente simple) :slight_smile:

Salu2

Yo de momento tengo hecho mediante dos pulsadores controlar unos leds (lo tengo todo montado en la placaboard antes de pasarlo a la vivienda), con un pulsador enciendo y apago (modo manual). Con otro enciendo el modo automático, este modo lleva incorporado un PIR que detecta el movimiento y enciende los leds, pero ademas estos se encienden de forma regulada mediante la lectura que proporciona una LDR. También he incorporado un LCD de 16x2 que se enciende al pulsar cualquiera de los dos pulsadores en el cual muestro la temperatura y la humedad (a través de un DHT11), la hora gracias a un RTC, y si el sistema esta accionado en modo manual o automático.

Todo esto seria por el momento el funcionamiento de un nodo que controlaría el alumbrado de una habitación, mas adelante tengo pensado añadir el control de persianas y tal vez algo de climatizacion.

Ahora bien, mi idea era conseguir hacer que el LCD no estuviera siempre encendido mientras los leds estuvieran funcionando, si no que solo se encendiera durante los 30 segundos después al pulsar cualquiera de los dos botones, pero no hay manera.

También me gustaría que el mega 2560 no estuviera leyendo constantemente el RTC y el DHT11, si no que que tomare lectura cada 30 segundos, ya que consume demasiada memoria y va un poco lento.

Aquí es donde he puesto mi código y comentado el problema que tengo:

http://forum.arduino.cc/index.php?topic=226589.0

Yo los transistores que me he comprado para controlar los leds es el TIP120, que es un par Darlington el cual lo controlo con el arduino y este puede soportar hasta 60V-5A entre colector-emisor, son estos por si te interesa:

http://www.ebay.es/itm/10PCS-TIP120-TRANS-NPN-DARL-60V-5A-TO-220-NEW-GOOD-QUALITY-T12-/290969319855?pt=LH_DefaultDomain_0&hash=item43bf1f79af

En cuanto a lo de los infrarrojos yo me compre este kit y lleva un mando ademas del receptor IR:

Luego, ¿La conexion entre nodos no la podria hacer mediante los pines Rx y Tx?

Un saludo y muchas gracias

Dabauza:
Yo de momento tengo hecho mediante dos pulsadores controlar unos leds (lo tengo todo montado en la placaboard antes de pasarlo a la vivienda), con un pulsador enciendo y apago (modo manual). Con otro enciendo el modo automático, este modo lleva incorporado un PIR que detecta el movimiento y enciende los leds, pero ademas estos se encienden de forma regulada mediante la lectura que proporciona una LDR. También he incorporado un LCD de 16x2 que se enciende al pulsar cualquiera de los dos pulsadores en el cual muestro la temperatura y la humedad (a través de un DHT11), la hora gracias a un RTC, y si el sistema esta accionado en modo manual o automático.

Todo esto seria por el momento el funcionamiento de un nodo que controlaría el alumbrado de una habitación, mas adelante tengo pensado añadir el control de persianas y tal vez algo de climatizacion.

Es un proyecto casi terminado, mas que implementarlo seria adaptarlo al entorno Souliss. Ya disponemos de un Typical para PIR que ademas se puede ajustar tambien en modo automatico. (vease "Typical" como dispositivo Tipico, sea un Rele, una LedStrip RGB o Simple, asi como sensores, PIR, u otros dispositivos de entrada-salida, "Tipico")

El LDR, que seria que, en funcion de la luz que entra emita mas o menos luz seria facil de implementar. De hecho tengo unos LDR y lo voy a mirar en breve, tenia la idea en mente pero aun no implementada =)

Estamos pendientes de acabar la integracion del Typical "Termostato", con el ajuste del Setpoint (solo queda añadirlo a la App de Android), de esta forma podremos configurar cualquier condicional en remoto, desde la App de Android

Dabauza:
Ahora bien, mi idea era conseguir hacer que el LCD no estuviera siempre encendido mientras los leds estuvieran funcionando, si no que solo se encendiera durante los 30 segundos después al pulsar cualquiera de los dos botones, pero no hay manera.

También me gustaría que el mega 2560 no estuviera leyendo constantemente el RTC y el DHT11, si no que que tomare lectura cada 30 segundos, ya que consume demasiada memoria y va un poco lento.

Aquí es donde he puesto mi código y comentado el problema que tengo:

Duda función millis en domotización para el apagado de un display (SOLUCIONADO) - Software - Arduino Forum

Ahora miro tu codigo (estoy en el trabajo). Para que el LCD se encienda o se apague, la solucion mas sencilla que he visto en multiples ocasiones es asignarle un PIN que vaya al VCC del LCD, de ese modo podrias establecer cuando el LCD se enciende por programacion. Para hacer esto y las lecturas de modo que no interfieran en el resto de codigo lo debes hacer mediante un "blink without delay" cada x seg. En los ejemplos del IDE Arduino tienes un ejemplo muy sencillo.

Integrandolo en Souliss es mas sencillo aun, ya que tenemos una serie de funciones ya integradas para ejecutar determinada lectura o parte del codigo cada x tiempo, de forma que hacemos las lecturas de temperatura cada 2 minutos, por ejemplo.

Dabauza:
Yo los transistores que me he comprado para controlar los leds es el TIP120, que es un par Darlington el cual lo controlo con el arduino y este puede soportar hasta 60V-5A entre colector-emisor, son estos por si te interesa:

http://www.ebay.es/itm/10PCS-TIP120-TRANS-NPN-DARL-60V-5A-TO-220-NEW-GOOD-QUALITY-T12-/290969319855?pt=LH_DefaultDomain_0&hash=item43bf1f79af

En cuanto a lo de los infrarrojos yo me compre este kit y lleva un mando ademas del receptor IR:

Microcontroller Development Type-C Experiment Kit for Arduino - Free shipping - DealExtreme

Luego, ¿La conexion entre nodos no la podria hacer mediante los pines Rx y Tx?

Un saludo y muchas gracias

Transistores Perfecto, :wink: Para controlar una tira Mono-color, solo necesitas uno y una resistencia (10k).

La conexion RX - TX tiene un limite longitud de cable bastante restrictivo (1-2mts), pero utilizando los IC MAX485 que vienen a costar unos 0.40€ y los mismos PINES RX-TX y sin ninguna otra programacion ampliamos esa distancia a los 1.2km. Actualmente tengo conectados 3 nodos por RS485 funcionando sin problemas.

Emisor y receptores RFID no estan integrados (adelante con ello! te ayudo en lo que haga falta a hacer las pruebas) En principio seria facil hacer que si detecta determinado llavero RFID ejecute determinadas acciones dentro de la Red de Souliss (encencer/apagar o temporizar x dispositivos)

El mando junto con el Receptor de Ir que tienes seria la alternativa que tengo pendiente de implementar, y seria parecido al RFID. Una vez conectado, cada pulsacion del mando puede corresponder a un comando dentro de la red de Souliss.

Te sugiero igualmente que antes de ponerte con estas 2 ultimas alternativas pruebes con los botones simples. (Poco a poco ) :slight_smile:

Yo tengo otro proyecto ya realizado de control de clima, que tengo con una LCD16X2 y botonera, que por ahora no me he decidido a integrar porque tengo algunas cosas pendientes, pero si se empieza con el proyecto directamente sobre Souliss se hace mas sencillo.

Salu2

juanpintom:
Es un proyecto casi terminado, mas que implementarlo seria adaptarlo al entorno Souliss. Ya disponemos de un Typical para PIR que ademas se puede ajustar tambien en modo automatico. (vease "Typical" como dispositivo Tipico, sea una un Rele, una LedStrip RGB o Dimmable, asi como sensores PIR, u otros dispositivos de entrada-salida "Tipico")

El LDR, que seria que, en funcion de la luz que entra emita mas o menos luz seria facil de implementar.

Estamos pendientes de acabar la integracion del Typical "Termostato", con el ajuste del Setpoint (solo queda añadirlo a la App de Android), de esta forma podremos configurar cualquier condicional en remoto, desde la App.

Vaya, lo tenéis todo pensado :slight_smile:

juanpintom:
Ahora miro tu codigo (estoy en el trabajo). Para que el LCD se encenda o se apague, la solucion mas sencilla que he visto en multiples ocasiones es asignarle un PIN que vaya al VCC del LCD, de ese modo podrias establecer cuando el LCD se enciende por programacion. Para hacer esto, y las lecturas de modo que no interfieran en el resto de codigo lo debes hacer mediante un "blink without delay" cada x seg. En los ejemplos del IDE Arduino tienes el mas sencillo.

Integrandolo en Souliss es mas sencillo aun, ya que tenemos una serie de funciones ya integradas para ejecutar determinada lectura o parte del codigo cada x tiempo, de forma que hacemos las lecturas de temperatura cada 2 minutos, por ejemplo.

Me parece buena idea conectar Vcc del LCD a un pin del Arduino, lo unico es que seguiria teniendo el mismo lo problema para que se apagara transcurridos x segundos. Lo que podria hacer es añadir un tercer pulsador para poder encender/apagar el display de forma manual a traves de este pin conectado al Vcc. Este me gustaria mas poder combinarlo con que se apagara automaticamente el display, pero bueno, asi por el momento no tendria que estar siempre iluminada.

Ya me habia estado mirando el ejemplo de "blink without delay", gracias a el a sido como he estado haciendo pruebas, el problema que yo tengo es no se como hacer para que me tome como referencia el momento en el que yo pulso cualquiera de los dos pulsadores, ya que la funcion millis se inicia justo cuando arranco la placa. Vamos que no le termino de pillar yo el funcionamiento a la funcion millis, y seguro que luego es super sencillo pero he probado de miles de formas y nada de nada.

Lo ideal seria eso, retrasar las lecturas del DHT11 cada 2 minutos y las del RTC cada 30seg, pero tampoc tengo ni idea de como hacerlo, tengo que cogerle el truco a la funcion millis por que si no...

juanpintom:
Transistores Perfecto, :wink: Para controlar una tira Mono-color, solo necesitas uno y una resistencia (10k).

Esto ya lo tengo funcionando :slight_smile: , tengo un LED COB de 32V-20W funcionando mediante un TIP120 y una resistencia conectada en la base, no veas la cantidad de luz que hacen este tipo de LEDS.

juanpintom:
La conexion RX - TX tiene un limite longitud de cable bastante restrictivo (1-2mts), pero utilizando los IC MAX485 que vienen a costar unos 0.40€ y los mismos PINES RX-TX y sin ninguna otra programacion ampliamos esa distancia a los 1.2km. Actualmente tengo conectados 3 nodos por RS485 funcionando sin problemas.

Vaya :fearful:, si que esta limitada la distancia si, yo creía (tenia la esperanza :D) de que estuviera en torno a los 10-15mts, ya que yo entre nodos no llego a los 10mts.

juanpintom:
Emisor y receptores RFID no estan integrados (adelante con ello! te ayudo en lo que haga falta a hacer las pruebas) En principio seria facil hacer que si detecta determinado llavero RFID ejecute determinadas acciones dentro de la Red de Souliss (encencer/apagar o temporizar x dispositivos)

Mi idea era el poner el lector de RFID a la entrada de mi casa y así cada vez que entrara a casa dejar la tarjeta/llavero en su sitio y que se pusiera en marcha el sistema. Ademas cuando saliera de casa y al recoger la tarjeta/llavero tenia en mente que todas las luces se apagaran. Ademas también se podría añadir un sistema de alarma de forma que al dejar la tarjeta/llavero en su sitio esta se desactivara y que al retirarlos se activara. Por supuesto también se debería de poder controlar todo este mediante una matriz de pulsadores y mediante un código de pulsaciones.

Pero de todo esto aun no he probado nada. primero quiero aprender bien lo basico y luego ir añadiendo cosas.

juanpintom:
El mando junto con el Receptor de Ir que tienes seria la alternativa que tengo pendiente de implementar, y seria parecido al RFID. Una vez conectado, cada pulsación del mando puede corresponder a un comando dentro de la red de Souliss.

El mando y el fotodiodo solamente los he probado para hacer encender un LED cuando en fotodiodo inciden los infrarrojos emitidos por el mando al pulsar cualquier botón. Por el momento no he probado mas por lo mismo que con lo del RFID. (Primero lo básico y luego ir avanzando :slight_smile: ) Ademas de que no tengo ni idea de como hacer que el arduino reconozca el patrón de cada botón del mando a distancia : XD.

juanpintom:
Te sugiero igualmente que antes de ponerte con estas 2 ultimas alternativas pruebes con los botones simples. (Poco a poco ) :slight_smile:

Tienes toda la razón del mundo, ademas esta es la dinámica que estoy llevando, primero lo básico y luego ir complicando. Lo que hago es ir probando los componentes por separado y una vez tengo claro su funcionamiento los añado al sistema.

Me quedo a la espera de que me reveles tu secreto para ampliar la distancia entre arduinos con el MAX485 XD

Un saludo

Dabauza:
Vaya, lo tenéis todo pensado :slight_smile:

Jaja, Cada dia aportamos cosas nuevas! y por supuesto entre todos intentamos que salgan adelante, somos pocos pero currantes :slight_smile: :stuck_out_tongue:

Dabauza:
LCD y funcion millis...

Esto es mas facil de lo que parece, lo que debes hacer guardar el valor de millis() en una variable unsigned long y luego evaluar si ha pasado el tiempo que tu quieres o no. Te lo explico en Pseudocodigo
//Ejemplo apagar pantalla si despues de 30 segundos sin pulsar ningun boton:

unsingned long tiempo//Declaras variable

Si alguno de los botones esta pulsado (IF)
{
tiempo = millis()
Enciende LCD
}

Si millis() - tiempo > 30000
{
Apaga LCD
}

Te lo detallo luego si quieres que ahora me queda poco para acabar en el curro y no te lo puedo escribir en el compilador :slight_smile:

Dabauza:
Esto ya lo tengo funcionando :slight_smile: , tengo un LED COB de 32V-20W funcionando mediante un TIP120 y una resistencia conectada en la base, no veas la cantidad de luz que hacen este tipo de LEDS.

Yo tengo pendiente pedir algunos =) y son baratos.

Dabauza:
Vaya :fearful:, si que esta limitada la distancia si, yo creía (tenia la esperanza :D) de que estuviera en torno a los 10-15mts, ya que yo entre nodos no llego a los 10mts.

No es la mejor forma, y con los MAX485 estas mucho mas seguro de no tener perdida de datos, no tienen ningun secreto, llevan 20 años usandose, y no necesitan componentes adicionales, unicamente es un integrado de 8 patillas y la red se crea con los mismos 2 cables que usarias para RXTX cruzado. Yo pedí 10ud y me costaron menos de 5€.

Dabauza:
Mi idea era el poner el lector de RFID a la entrada de mi casa y así cada vez que entrara a casa dejar la tarjeta/llavero en su sitio y que se pusiera en marcha el sistema. Ademas cuando saliera de casa y al recoger la tarjeta/llavero tenia en mente que todas las luces se apagaran. Ademas también se podría añadir un sistema de alarma de forma que al dejar la tarjeta/llavero en su sitio esta se desactivara y que al retirarlos se activara. Por supuesto también se debería de poder controlar todo este mediante una matriz de pulsadores y mediante un código de pulsaciones.

Pero de todo esto aun no he probado nada. primero quiero aprender bien lo basico y luego ir añadiendo cosas.

En la aplicacion de Android tienes una funcion que ya hace algo muy parecido, por geolocalizacion puedes determinar la ubicacion del domicilio y asi ejecutar cualquier tipo de accion. =) Interesante no? :stuck_out_tongue:

Dabauza:
El mando y el fotodiodo solamente los he probado para hacer encender un LED cuando en fotodiodo inciden los infrarrojos emitidos por el mando al pulsar cualquier botón. Por el momento no he probado mas por lo mismo que con lo del RFID. (Primero lo básico y luego ir avanzando :slight_smile: ) Ademas de que no tengo ni idea de como hacer que el arduino reconozca el patrón de cada botón del mando a distancia : XD.

Para diferenciar botones seria simplemente imprimir los codigos por puerto serie, para ver que valor tiene cada boton y asignarlo a diferentes acciones, se hace algo parecido cuando quieres integrar el emisor de IR, llegado el momento te explico con mas detalle :slight_smile:

PD. Ouch, no me salen bien los quotes y tengo que irme a casa!!, jaja, luego lo arreglo :stuck_out_tongue:

juanpintom:
Esto es mas facil de lo que parece, lo que debes hacer guardar el valor de millis() en una variable unsigned long y luego evaluar si ha pasado el tiempo que tu quieres o no. Te lo explico en Pseudocodigo
//Ejemplo apagar pantalla si despues de 30 segundos sin pulsar ningun boton:

unsingned long tiempo//Declaras variable

Si alguno de los botones esta pulsado (IF)
{
tiempo = millis()
Enciende LCD
}

Si millis() - tiempo > 30000
{
Apaga LCD
}

Esto es mas o menos lo que yo estaba intentando pero no he tenido narices de hacerlo andar, voy a intentarlo siguiendo tus pasos a ver si lo consigo. :slight_smile:

juanpintom:
No es la mejor forma, y con los MAX485 estas mucho mas seguro de no tener perdida de datos, no tienen ningun secreto, llevan 20 años usandose, y no necesitan componentes adicionales, unicamente es un integrado de 8 patillas y la red se crea con los mismos 2 cables que usarias para RXTX cruzado. Yo pedí 10ud y me costaron menos de 5€.

Vale, pues voy a hacer el pedido de los MAX485 y el ENC28J60, con estos me valdría. ¿No?

http://www.ebay.es/itm/10PCS-MAX485EPA-MAX485-IC-TXRX-RS485-RS422-8-DIP-NEW-DATE-CODE-12-/300776191104?pt=LH_DefaultDomain_0&hash=item4607a87480

http://www.ebay.es/itm/1pcs-MiNi-ENC28J60-Ethernet-LAN-Network-Module-For-Arduino-SPI-AVR-PIC-LPC-STM32-/281284310097?pt=LH_DefaultDomain_0&hash=item417dd9f451&_uhb=1

La idea seria montar algo así con los MAX485, si no me equivoco:

http://forum.arduino.cc/index.php/topic,32313.0.html

juanpintom:
En la aplicacion de Android tienes una funcion que ya hace algo muy parecido, por geolocalizacion puedes determinar la ubicacion del domicilio y asi ejecutar cualquier tipo de accion. =) Interesante no? :stuck_out_tongue:

Si que es interesante si, ya te digo si es interesante, :smiley: . Le tendre que buscar otra utilididad al RFID XD

Dabauza:
Para diferenciar botones seria simplemente imprimir los codigos por puerto serie, para ver que valor tiene cada boton y asignarlo a diferentes acciones, se hace algo parecido cuando quieres integrar el emisor de IR, llegado el momento te explico con mas detalle :slight_smile:

Vaya, jamas se me habría ocurrido hacer esto para ver que código envía cada botón.

Voy a intentar apañar lo del LCD. Muchas gracias por tu ayuda.

Saludos