En este mismo momento, millones de microcontroladores están trabajando en dispositivos inteligentes en el mundo entero. En algunos de nuestros electrodomésticos y equipos también. Imaginaos que los fabricantes hubieran dispuesto que estos electrodomésticos se conectasen a Internet (como es el caso de algunos). De esto a que el frigorífico de nuestra casa comenzase a hacer pedidos automáticos al supermercado habría tan sólo un paso, un pequeño paso.

Es una lástima, pero a pesar de las capacidades potenciales que tienen, tan sólo una parte ínfima de estos microcontroladores están preparados por el fabricante para intercambiar datos con otros dispositivos u ordenadores.

Por nuestra parte, hay muchos proyectos basados en BASIC Stamp con los que nos gustaría interactuar desde otro lugar, remotamente. Y no tan remotamente: probablemente tan sólo precisemos de una interfaz basada en web para poder interaccionar con nuestro circuito, con toda la amigabilidad y facilidad que nos ofrece el entorno web.

Y que decir tiene de poder disponer de un auténtico "panel de control", en forma de página web, donde monitorear información recolectada en tiempo real desde grandes distancias por, no uno sino un ejército de circuitos BASIC Stamp esparcidos a lo largo y ancho de este mundo, trabajando a tiempo completo tomando medidas, testando, vigilando,... Y ya que estamos ¿porqué no dejar, además, que intercambien datos entre ellos?

Amigos míos, todo esto será posible si conectamos el BASIC Stamp al mundo mediante un servidor web.


microcontroladores, BASIC Stamp, microbotica, Robot autónomo NR3, brazo robótico móvil, kit Lynxmotion, orugas, videocámara, transmisor TV, sonar ultrasónico, servomotores HiTec HS300, pinza manipulad
Parallax Internet Netburner Kit

Un servidor web nos permite, entre otras cosas, conectar un microcontrolador como puede ser el BS a una red Ethernet, como Internet, e intercambiar datos. Parallax tiene desde hace poco tiempo en su catálogo un servidor web que hace precisamente eso (http://www.parallax.com / detail.asp? product_id = 30013 ). Es tan fácil y rápido de usar que nos permitirá desarrollar nuestros proyectos basados en red desde el primer día.

Este módulo denominado PINK (Parallax Internet Netburner Kit) constituye un servidor web embebido (incrustado en el circuito del módulo) capaz de alojar nuestras propias páginas web, desde las cuales poder mostrar datos que pueda gestionar nuestro circuito BS, gracias al soporte de 100 variables y registros especiales; y además podremos interactuar con estos datos.

Configuración del módulo
La configuración del módulo es posible gracias a una interfaz basada en web, con lo que la puesta en marcha nos resultará fácil. Así como que cada dispositivo en un red Ethernet requiere una dirección IP, el módulo PINK también. Así pues, el primer paso consistirá en especificar la IP con la que este servidor web deberá mostrarse a Internet. Esto lo podemos realizar tanto manualmente (introduciendo la IP, la máscara de red, la puerta de enlace y el servidor DNS), como automáticamente (en modo DHCP: Dynamic Host Configuration Protocol). Esta operación la realizaremos mediante el software que acompaña al modulo en un CD.

Una vez configurado, es posible acceder a la "home" de nuestro servidor tecleando simplemente en el navegador http://xx.xx.xx.xx , donde "xx.xx.xx.xx" es la dirección IP que acabamos de asignar. La página principal que se carga por defecto es "index.html"; si no hemos cargado previamente nuestra página, se carga la que viene por defecto en el módulo.

Por supuesto, para evitar accesos no autorizados, el módulo PINK aporta protección mediante contraseñas. Desde la página web de configuración (http://xx.xx.xx.xx/nb_factory.htm , podemos crearlas tanto para el acceso vía FTP como para el acceso a las páginas web. Podemos prescindir de esto último o, mejor aún, tal vez nos interese especificar una clave sólo a determinadas páginas. En esto, el campo "Web file password filter" nos permitirá especificar ese grupo de páginas, incluso archivos, según el texto que introduzcamos y que filtrará las páginas cuyo nombre contengan dicho texto. Por ejemplo, si especificamos en el campo del filtro el texto "pass", los archivos con nombre "indexpass.htm", "passindex.htm", "passtime.jpg" solicitarán las claves de acceso, mientras que el resto de los archivos serán libremente accesibles.


Acceso vía FTP

Nuestras páginas y archivos pueden ser cargados en el módulo PINK mediante protocolo FTP (Protocolo de Transferencia de Archivos). Escribiendo ftp://xx.xx.xx.xx en un navegador Internet Explorer se nos mostrará una ventana donde poder mover los archivos mediante "drag-and-drop" (arrastrar y soltar) en la memoria del módulo del servidor.


Utilizando las variables
El módulo PINK tiene 100 variables de propósito general de 64 bytes. Las primeras 20 variables (0 al 19) pueden escribirse en la memoria Flash (memoria permanente). El resto de las variables (del 20 al 99) son sólo variables tipo RAM (memoria volátil).

La lista de todas las variables y sus valores se puede ver desde la página http://xx.xxx.xx.xxx/VV_Show.htm . Para cambiar el valor de una variable desde esta página, pulsamos "Modify"; para restaurar el valor de la variable a su valor original, pulsamos "Set default value".

Acceder al valor de cualquier variable desde una página web creada por nosotros es tan fácil como usar una referencia HTML como nombre de variable. Por ejemplo, para crear una página que muestre el valor de la variable 01, podemos escribir el siguiente código HTML:

<html>
The value in variable 01 is: <Nb_var01>
</html>

Después, guardamos esta página con un nombre de archivo con extensión htm o html (por ejemplo: test.html ), abrimos una sesión FTP y mediante "drag-and-drog" cargamos dicha página en el módulo PINK.

Ahora, escribiendo en nuestro navegador la url http://xx.xx.xx.xx/ test.html se mostrará la página ejemplo, tal como se ve en la imagen.

En este ejemplo, la palabra "hello" está en la variable 01. Notad que si el valor de esta variable es cambiado, la página se actualizará mostrando el cambio, de manera que esto favorecerá el trasiego de datos dinámicos que puedan ser mostrados en la página web cada vez que cambien.


Escribir valores en las variables no es nada complicado usando el método HTML POST (formulario). Por ejemplo: para crear una página que permita escribir o cambiar el valor de la variable 01, podemos escribir lo siguiente:

<html>
<FORM method="post" action="/test.html">
<P>
What value would you like stored in variable 01?
<INPUT name="Nb_var01"type="text"size="24"maxlength="63">
<INPUT type="submit">
</P>
</FORM>
</html>

Realizamos la misma operación de antes para cargar la página en el módulo PINK y, una vez que visualizamos el formulario en nuestro navegador, podemos escribir el valor que queramos, tal como muestra la imagen. Sencillo ¿verdad?

Ahora bien, ahora es cuando nuestro circuito BS entra en escena: ¿cómo actúa el BS para leer o proporcionar valores a dichas variables? Para leer el valor de una variable en el módulo PINK con el BS, nuestro programa en el BS debe enviar serialmente el siguiente comando: !NB0Rxx donde "xx" es el número de la variable que deseamos leer (00 a 99). Este comando se puede usar en un programa como el siguiente:

' PINK_01.bs2
' {$STAMP BS2}
' {$PBASIC 2.5}
NBVAR VAR Byte
SEROUT 8,396,["!NB0R06"]
SERIN 7,396,[NBVAR]
DEBUG DEC NBVAR
END

O el siguiente programa ejemplo, para leer variables tipo "string" (cadena de caracteres):

' PINK_02.bs2
' {$STAMP BS2}
' {$PBASIC 2.5}
NBVAR VAR Byte(16)
SEROUT 8,396,["!NB0R06"]
SERIN 7,396,[STR NBVAR\16\CLS]
DEBUG STR NBVAR
END

Escribir valores en las variables también es muy simple; para esto se utiliza el siguiente comando: !NB0Wxx:DD donde "xx" es la variable en la que deseamos escribir, y "DD" es el dato que deseamos enviar. El comando debe ser seguido por un CLS. Por ejemplo:

' PINK_03.bs2
' {$STAMP BS2}
' {$PBASIC 2.5}
SEROUT 8,396,["!NB0W06:25",CLS]
END

Registros especiales
Uno de los aspectos más interesantes entre las capacidades del módulo PINK es que tiene 9 registros para propósitos especiales, entre estos el de poder enviar un email debidamente formateado:

- Nb_varET corresponde al registro email TO:
- Nb_varEF corresponde al registro email FROM:
- Nb_varES corresponde al registro email SUBJECT:
- Nb_varEC corresponde al registro email CONTENT: Este registro lleva el nombre del archivo con el contenido del mensaje. Por supuesto, este archivo deberá haber sido cargado previamente en el módulo PINK.
- Nb_varEV corresponde al registro email del servidor SMTP.
- Nb_varST corresponde al registro de estado del módulo PINK. Se trata de una variable de sólo lectura, cuyos bits son usados para información relacionada con el estado del módulo PINK y la red.
- Nb_varSV guarda el número de la última variable actualizada desde una página web tipo formulario. Para leer el valor de esta variable el comando es el siguiente: !NB0SV
- Nb_varBI es usado para guardar la dirección IP destino para mensajes UDP (User Datagram Protocol).
- Nb_varBM es usado para guardar el contenido de un mensaje UDP.

Para enviar un mensaje e-mail desde el módulo PINK, deben ser especificadas las variables de los registros: Nb_varET, Nb_varEF, Nb_varES, Nb_varEC y Nb_varEV. El siguiente programa puede servir de ejemplo:

' PINK_05.bs2
' {$STAMP BS2}
' {$PBASIC 2.5}
SEROUT 8,396,["!NB0WET:null@parallax.com",CLS]
SEROUT 8,396,["!NB0WEF:PINKmodule@parallax.com",CLS]
SEROUT 8,396,["!NB0WES:This is a test message from PINK.",CLS]
SEROUT 8,396,["!NB0WEC:message.txt",CLS]
SEROUT 8,396,["!NB0WEV:your.SMTP.server.address.here",CLS]
SEROUT 8,396,["!NB0SM"]
END


Notad que la instrucción !NB0SM le dice al módulo PINK que envíe el mensaje.

El modulo PINK puede enviar y recibir mensajes bajo el protocolo abierto UDP. Los mensajes viajan encapsulados, de manera que lo que lee el receptor es exactamente lo que envía el emisor.

Para enviar un mensaje UDP, las variables de registro Nb_varBI y Nb_varBM deben ser inicializadas. Nb_varBI debe contener la dirección IP destino y Nb_varBM debe contener el mensaje UDP que se desea enviar. Una vez inicializadas las mencionadas variables, se usa el siguiente comando: !NB0SB y el mensaje será enviado. El siguiente programa puede servir perfectamente para enviar un mensaje UDP:

' PINK_06.bs2
' {$STAMP BS2}
' {$PBASIC 2.5}
SEROUT 8,396,["!NB0WBI:10.10.10.71",CLS]
SEROUT 8,396,["!NB0WBM:This is a UDP test message",CLS]
SEROUT 8,396,["!NB0SB"]
END

Por supuesto que hay más funcionalidades que soporta este módulo PINK como servidor web, pero lo interesante será descubrirlas por uno mismo.

Manos a la obra!
Los que se inician en esto del BS podrán comprobar que vivimos en un entorno sensorial del que poder recabar datos a distancia. Por ejemplo, les resultará tremendamente fácil construir y programar desde el primer día una alarma anti-intrusos, sin temor de que acabe convirtiéndose en un proyecto inacabado. Este pequeño desafío consistiría en hacer que en el momento en que alguien entre en nuestra casa, nuestro circuito BS cambie el estado de una variable y guarde el dato de la hora. Ambos datos podrán ser consultados, desde nuestro lugar de trabajo, en la página web que hayamos dispuesto para tal fin. Además, podemos hacer que el servidor web, a instancias del circuito BS, nos remita también un e-mail de alerta.

Seguramente, el usuario más avanzado descubrirá rápidamente las enormes posibilidades de adaptación que tiene el módulo. No obstante, yo recomiendo profundizar también un poco más en el código HTML con el fin de confeccionar páginas más interesantes y capaces de manejar el tráfico de datos.


Ahora bien ¿qué clase de proyectos podemos llevar a cabo con un BS y el PINK?

Con nuestro círcuíto BASIC Stamp y el módulo PINK podemos adquirir datos para mostrarlos a todo el mundo

Obtención de datos remotos
Imaginemos lo siguiente: Estaciones meteorológicas o de telemetría repartidas geográficamente que forman parte de un sistema automático de adquisición de datos que permite obtener continuamente lecturas, en una página web y en tiempo real, de un variado número de sensores con gran dispersión geográfica.

Variables meteorológicas como temperatura, humedad, vapor del aire, dirección y velocidad del viento, radiación solar, precipitación; variables de erosión del terreno; variables del suelo; medición de la potencia solar... son perfectamente recolectadas por cada circuito BS que gobierna uno o varios sensores, y conectado a un módulo PINK.

Tele-vigilancia
Además, los actuales planes de acción de "Internet en el rural" favorecen el acceso a esta vía de comunicación desde lugares remotos a través de la infraestructura existente.

Estas circunstancias relacionadas con el despliegue del ADSL y el Cable por todo el territorio favorecen la posible vigilancia remota de graneros, invernaderos, granjas, maquinaria, depósitos de agua y combustible, usando circuitos BS y servidores web como el PINK.

En la hostelería hay un sin fin de aplicaciones donde existe la conveniencia o necesidad de obtener datos remotos, a través de una red (como la que puede disponer un hotel moderno), y monitorearlos desde un monitor de ordenador en Recepción: actualización de datos en tiempo real de cada habitación (accesos y utilización de servicios), puntos de consigna de temperatura, activación/desactivación remota de servicios, supervisión de alarmas...

En relación con este aspecto, también es posible la vigilancia a distancia de la actividad que se desarrolla en zonas de tránsito, oficinas, áreas industriales, hospitales,... Mientras exista una infraestructura de red siempre habrá suficientes argumentos para emplear un circuito BS y el módulo PINK (bien como circuitos integrados en los sistemas o en calidad de circuitos supervisores y recolectores de información): disponibilidad de aparcamiento, control de accesos del personal y visitantes, vigilancia técnica de salas de máquinas y cuadros eléctricos, umbrales de trabajo de equipos, supervisión de alarmas (humo, fuego, temperatura, tele-asistencia), control de vibración de máquinas industriales ... Toda esta clase de información puede ser consultada desde cualquier ordenador conectado a la red local del edificio, incluso desde otras sucursales.

Las aplicaciones de domótica constituyen otro de los campos de aplicación de esta tecnología de telecontrol a distancia mediante un servidor web.


Domótica
¡Y como no! Este dúo de circuitos nos lo pone fácil la tarea de montar un sistema de gestión de salidas y entradas digitales o analógicas para aplicaciones de control domótico remoto de una vivienda o local. Las ventajas de este tipo de aplicaciones se traduce en: seguridad, confort y ahorro energético.

Nuestra vivienda equipada con los sensores adecuados (temperatura, intensidad luminosa, movimiento, fugas, humo y fuego, ...) puede estar proporcionando información continua e importante mediante nuestro dúo de circuitos BS+PINK. Las medidas de temperatura recogidas por sensores instalados tanto en el interior como el exterior de la vivienda nos pueden estar facilitando información suficiente como para decidir interactuar sobre las salidas digitales, accesibles desde la página del servidor, para encender la caldera o bomba de calor y de esta manera acondicionar la casa a su regreso. O sensores de humedad pueden avisarnos que en nuestro lugar de residencia está lloviendo. Incluso para descubrir fugas de temperatura mientras nos hallamos fuera de la vivienda.

El poder obtener datos en tiempo real nos permite verificar la eficacia en la ejecución de las ordenes al obtener continuamente lectura de los estados o mediciones (nuestra vivienda fría, al activar la bomba de calor, observaremos al cabo del tiempo cómo comienza a tomar temperatura cálida).

Tele-operación asistida y desasistida
La posibilidad de interactuar en un sistema programado, ya de por sí autónomo, nos permite alcanzar un mayor grado de control en circunstancias imprevisibles. Por ejemplo: tal vez hayamos dotado a nuestro circuito domótico BS de la capacidad de decidir si subir o bajar las persianas o desplegar un toldo sobre la base de la cantidad de luz que pasa a través de una ventana; pero también es cierto que si conectamos también el circuito autónomo a nuestro servidor web, podemos supervisar este tipo de decisiones autónomas para cuando existen intervalos nubosos que pudieran estar confundiendo a nuestro circuito domótico, haciéndole subir/bajar continuamente las persianas. Una orden enviada desde nuestro lugar de trabajo permitirá desactivar el sistema de decisión hasta nueva orden.

El mismo caso aplicaría a sistemas de riego programados, que nos interesaría desactivar durante un día lluvioso.

O cuando nos ausentamos de vacaciones podemos controlar remotamente todo lo que ocurre en nuestra casa, además de poder simular nuestra presencia en la vivienda (encendiendo la TV, subiendo/bajando persianas, encendiendo/apagando luces); todas estas acciones telecontroladas desde un cibercafe en el lugar de vacaciones. Si bien es cierto que todo puede programarse, dicho telecontrol proporcionaría más realismo a la simulación.

El ojo "que todo lo ve", en nuestra casa (o la versión actual de "La Guerra de los Mundos")

En una versión más avanzada del proyecto, podemos convertir nuestro circuito fijo BS en un Home Boe-bot dotado con una mini cámara inalámbrica que vaya enviando imágenes durante su recorrido por la vivienda.

O simplemente nuestro control de visión remota puede consistir en un brazo robótico gobernado por un circuito con BS, dotado de una cámara en el extremo e instalado en un lugar estratégico de la casa u oficina. Desde cualquier parte del planeta es posible estar tele-controlando el movimiento del brazo y así obtener imágenes de lo que está ocurriendo en ese mismo momento, desde cualquier ángulo que se nos antoje.

El control de abastecimiento en depósitos de combustibles u otros líquidos tiene el inconveniente de su necesaria supervisión, aún cuando sea dificultosa por la inaccesibilidad o lejanía del lugar donde se encuentran. En este aspecto, podemos hacer que nuestro circuito BS vigile los niveles del depósito y cuando exista un bajo mínimo, gracias a la utilización del módulo PINK, solicite vía e-mail el pedido del suministro adecuado.

Si tenemos equipos dispersos en diferentes ubicaciones, algunas muy alejadas y con problemas de suministro o potencia eléctrica y cuyo disfuncionamiento comprometa el cometido de tareas importantes, tal vez nos interese vigilar el nivel de tensión con el que están operando y de esta manera asegurarnos que no existen problemas o de que nuestros SAIs están ofreciendo el rendimiento esperado.


Telerrobótica
Los robots móviles constituyen sistemas susceptibles de ser tele-actuados a distancia en aquellas situaciones en las que el robot debe llevar a cabo tareas en entornos peligrosos, poco accesibles o muy ruidosos; o en entornos más amigables y con fines publicitarios. En Internet ya estamos viendo algún que otro "jardinero remoto" con el que ver como cuida plantas y poder interactuar con él. Usando la tecnología adecuada (inalámbrica, GSM/GPRS,...), un Home Boe-bot y nuestro módulo PINK, podemos convertirlo en una unidad totalmente autónoma, "cargado de sensores" de proximidad y distancia, listo para reaccionar en función de las situaciones ante las cuales ha sido programado y bajo nuestra supervisión en lo que tiene que ver con la toma de decisiones.

O sin supervisión: dejemos que sea nuestro vehículo autónomo, equipado con sensores que le permitan obtener información de su entorno e interactuar con él, el que en ocasiones se conecte físicamente al conector de red de un módulo servidor web y actualice su programa con nuevas instrucciones, al mismo tiempo que nos hace entrega de sus datos recolectados. O se vigile a sí mismo para la detección de errores y fallos en alguno de sus sensores, lo comunique al supervisor y espere un funcionamiento alternativo para la continuidad, mermada, del sistema.

Fijaos que será interesante trabajar en todo este esquema para el estudio de más cerca de la consecución de tareas coordinadas entre distintos robots móviles y su auto-mantenimiento (sociedades complejas).


Comunicación UDP
He dejado para el final una aplicación sencilla e inútil, pero que puede ilustrar perfectamente la posibilidad de conectar un BS con otro a través de sus respectivos módulos PINK. Esto es posible gracias al protocolo UDP (User Datagram Protocol). Veamos que pasa si, con la debida programación del BS, intentamos que un Home Boe-bot o Scribbler "lea" en el suelo un gráfico sencillo; al otro lado del planeta otro home boe-bot deberá recoger las lecturas y dibujarlo fielmente sobre un papel en el suelo; todo el proceso en tiempo real.

La comunicación directa entre circuitos BS bajo protocolo UDP abre muchas posibilidades

En esta misma línea de aplicaciones, otra aplicación más sofisticada y tremendamente útil: conectamos varios circuitos BS con sus respectivos módulos PINK a la red, en diferentes lugares, realizando tareas varias. Si alguno de estos cambia su estado o recibe una señal determinada, hagamos que lo comunique al resto, para que estos se reajusten tomando nuevas decisiones en sus tareas. Un excelente ejemplo de coordinación entre varios BS comunicados bajo UDP.

Ya lo veis, las ventajas potenciales de usar el tandem BS+PINK son enormes. No parece arriesgado afirmar que podemos reducir al mínimo el hardware de nuestro proyecto y abaratar los costes en material cuando se trata de instalar cableado de equipamiento que necesita ser controlado remotamente; no importa las peculiaridades de ese equipamiento: la conexión a Internet a través de un servidor web lo simplifica todo, o casi todo al menos.

Bueno, con todo esto he pretendido abrir un poco el apetito; de manera que ahora os toca a vosotros desarrollar vuestros ambiciosos proyectos que conecten vuestro BASIC Stamp al mundo.

Bibliografía:

- PINK (Parallax Internet Netburner Kit). www.parallax.com. PINK Manual v1.01: http://www.parallax.com/dl/docs/prod/comm/30013-PINK-v1.01.pdf

Visitas: 5

Cursos online y tutoriales


(se requiere registro previo gratuito en PortalArduino.com)

Mantenimiento del sitio

© 2025   Creado por Lorenzo M. Oliver.   [Imágenes licenciadas por Depositphotos.com] Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio