{"id":18,"date":"2010-05-07T15:41:38","date_gmt":"2010-05-07T13:41:38","guid":{"rendered":"http:\/\/pinguino.walii.es\/archives\/18"},"modified":"2010-10-09T21:06:24","modified_gmt":"2010-10-09T18:06:24","slug":"pinguino-rgb-remoto-via-web","status":"publish","type":"post","link":"https:\/\/pinguino.walii.es\/?p=18","title":{"rendered":"PING\u00dcINO RGB remoto via web"},"content":{"rendered":"

Este proyecto tiene varios usos, b\u00e1sicamente es una forma de controlar un grupo de LED RGB (tricolores con masa com\u00fan) v\u00eda una p\u00e1gina web, que seleccionar que color queremos que se muestre.<\/p>\n

Puede ser una forma de armonizar una habitaci\u00f3n, cambiar el color de una piscina o simplemente tontear\u2026 J<\/span><\/p>\n

\"\"<\/p>\n

<\/embed><\/object><\/p>\n

\n

<\/p>\n

\"\"\"\"\"\"<\/p>\n

<\/p>\n

\"\"<\/p>\n

\"\"<\/p>\n

\"\"<\/p>\n

\n

\n

Al ser un control remoto v\u00eda WEB, podr\u00edamos controlarlo de cualquier parte del mundo, con una conexi\u00f3n a internet, cualquier PDA o port\u00e1til con wifi o 3g podr\u00eda controlarlo.<\/p>\n

Claro est\u00e1 que el servidor web tendr\u00eda que tener una protecci\u00f3n para evitar el acceso de gente indeseable.<\/p>\n

En mi caso el servidor web esta en un ROUTER linksys 54g v4<\/a> el cual lo he \u00abhackeado\/tunneado\u00bb e instalado una versi\u00f3n de LINUX abierta\u2026 en este caso OPENWRT 9.02, con esta versi\u00f3n especial para este tipo de equipos<\/a>, puedo tener una flexibilidad que el software original no posee. Instalando LUA y un webserver ya tengo lo que necesito.<\/p>\n

\"\"<\/p>\n

Como se me hacia escaso el espacio de memoria de este equipo, para poder alojar mi pagina web, he incluido una modificaci\u00f3n y le he instalado una tarjeta SD de 1GB como si fuese el disco duro del cacharro y as\u00ed poder jugar e instalar cosas sin miedo a ocupar los 5Mb que posee por defecto. Adem\u00e1s he creado dos interfaces de salida para los puertos SERIES internos que posee por defecto el LINKSYS y que en principio son para consolas de control, modific\u00e1ndolos un poco sirven para conectar cualquier equipo que posea comunicaci\u00f3n RS232.<\/p>\n

Como interfaz hardware he utilizado un Microcontrolador 18f2550 con el Firmware PING\u00dcINO v2,12<\/a>. Este posee una programaci\u00f3n b\u00e1sica, que intenta trasladar una comunicaci\u00f3n v\u00eda serie desde el web server y scripts que posee en ordenes y datos a trav\u00e9s del puerto serie. Envi\u00e1ndoles por ejemplo el car\u00e1cter \u00abR\u00bb v\u00eda serie para indicarle al microcontrolador que encienda SOLO los leds ROJOS. Y As\u00ed con todos los colores y combinaciones.<\/p>\n

\"\"<\/p>\n

\"\"<\/p>\n

El programa b\u00e1sicamente le dice al microcontrolador que escuche el puerto serie y que cuando reciba por ejemplo el car\u00e1cter R env\u00ede un pulso continuo de 5volts a la salida determinada para los leds ROJOS. Y que por ultimo env\u00ede al puerto serie el nombre del color que se ha encendido.<\/p>\n

El c\u00f3digo es el siguiente.<\/p>\n

[sourcecode language=\u00bbpy\u00bb]
\n\/\/ Prueba de Puerto serie comandando RGB
\n\/\/ walii.es 2010
\n\/\/aqu\u00ed agregamos las posibles variables.
\nint i; \/\/para nuestro contador de puertos
\nint key; \/\/para la tecla que escucha por el Puerto serie.
\nvoid setup()
\n{
\n\/\/Aqu\u00ed configuramos los puertos de salida para que inicien
\n\/\/en estado de SALIDA y APAGADOs.
\nfor (i=1;i<4;i++){
\n pinMode(i,OUTPUT);
\n digitalWrite(i,LOW);
\n }
\n\/\/Aqu\u00ed configuramos el Puerto serie, para que escuche peticiones a 9600bps,
\n\/\/suficiente para este proyecto.
\nSerial.begin(9600);
\n}
\n\/\/Y por ac\u00e1 podemos ver la configuraci\u00f3n de comandos a escuchar en el Puerto
\n\/\/serie y hacer lo necesario para iniciar los leds que correspondan a la acci\u00f3n
\nvoid loop()
\n{
\nif Serial.available()
\n {
\n key=Serial.read(); \/\/escucha el Puerto serie\u2026
\n if (key==’r’) digitalWrite(1,1),digitalWrite(2,0),digitalWrite(3,0),Serial.print("rojo");
\n if (key==’v’) digitalWrite(1,0),digitalWrite(2,1),digitalWrite(3,0),Serial.print("verde");
\n if (key==’a’) digitalWrite(1,0),digitalWrite(2,0),digitalWrite(3,1),Serial.print("azul");
\n if (key==’m’) digitalWrite(1,1),digitalWrite(2,1),digitalWrite(3,0),Serial.print("marron");
\n if (key==’b’) digitalWrite(1,1),digitalWrite(2,0),digitalWrite(3,1),Serial.print("morado");
\n if (key==’n’) digitalWrite(1,0),digitalWrite(2,1),digitalWrite(3,1),Serial.print("celeste");
\n if (key==’w’) digitalWrite(1,1),digitalWrite(2,1),digitalWrite(3,1),Serial.print("blanco");
\n if (key==’c’) digitalWrite(1,0),digitalWrite(2,0),digitalWrite(3,0),Serial.print("apagado");
\n Serial.print("\\n\\r"); \/\/por ultimo imprimimos el nombre del color seleccionado.
\n }
\n\/\/vuelve a comenzar el loop
\n}
\n[\/sourcecode]<\/p>\n


\n<\/span>Cuando tenemos todo, conectado y funcionando nos quedara algo as\u00ed.<\/p>\n

El VIDEO EN YOUTUBE:<\/p>\n

http:\/\/www.youtube.com\/watch?v=xR4tj4pb1eE<\/a><\/p>\n

\"\"<\/p>\n

La parte web es f\u00e1cil, son script en lua que generen un mensaje de ECHO al puerto serie.<\/p>\n

Por ejemplo:<\/p>\n

Creamos los archivos para cada color.<\/p>\n

Rojo.lua, verde.lua, azul.lua, morado.lua, etc.<\/p>\n

Los ponemos en el directorio de ejecuci\u00f3n CGI-BIN de nuestro servidor. Y le damos permiso de ejecuci\u00f3n. Con el comando CHMOD +x *.lua<\/p>\n

Los archivos por dentro tienen lo siguiente. Para el archivo rojo.lua, para nuestro caso el puerto serie es (\/dev\/tts\/1)<\/p>\n

[sourcecode language=\u00bbc\u00bb]
\n—# \/\/para rojo env\u00eda por puerto serie el car\u00e1cter "r"
\n—#! \/usr\/bin\/lua
\ncaracter="echo r > \/dev\/tts\/1";
\nos.execute(caracter);<\/p>\n

[\/sourcecode]<\/p>\n

FACIL NO????????<\/p>\n

Ahora en cualquier bot\u00f3n que queramos hacer, podemos poner como HREF=\u00bb\/cgi-bin\/rojo.lua\u00bb y ejecutara el script cada vez que se presione.<\/p>\n

Por ejemplo, este c\u00f3digo lo copiamos a un archivo.html en nuestro servidor web.<\/p>\n

[sourcecode language=\u00bbhtml\u00bb]
\n<html>
\n<head>
\n<title>control de RGB via web walii.es<\/title>
\n<\/head>
\n<body>
\n<h2>Control remoto RGB via web (<a href="http:\/\/blog.walii.es\/" target="_new">blog de Walii.es<\/a>)<\/h2>
\n<p>
\n<b>Presionando el boton activamos la salida para el color ROJO <\/b>
\n<\/p>
\n<table border="0" cellpadding="0">
\n<tr>
\n<td valign="top" width="50%">
\n<p>
\n<b>Este es solo para un color, necesita un poco de imaginacion y dise\u00f1o web para hacer el resto<\/b>
\n<ul>
\n<li><a href="\/cgi-bin\/rojo.lua" target="_new">ROJO<\/a><\/li>
\n<\/ul>
\n<\/body>
\n<\/html>
\n[\/sourcecode]<\/p>\n","protected":false},"excerpt":{"rendered":"

Este proyecto tiene varios usos, b\u00e1sicamente es una forma de controlar un grupo de LED RGB (tricolores con masa com\u00fan) v\u00eda una p\u00e1gina web, que…<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,4,6],"tags":[],"_links":{"self":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/18"}],"collection":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18"}],"version-history":[{"count":3,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/18\/revisions"}],"predecessor-version":[{"id":309,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/18\/revisions\/309"}],"wp:attachment":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}