Date post: | 30-Jun-2015 |
Category: |
Documents |
Upload: | biblioman-aquihayapuntes |
View: | 6,045 times |
Download: | 0 times |
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 2
Introducción
Conectar un Microcontrolador a una red Ethernet y recibir o enviarle instrucciones al
PIC desde una página WEB a través del protocolo HTTP no es nada novedoso a estas
alturas. Para ello tenemos dos opciones; la primera es utilizar un controlador externo
que implementa ya todo lo necesario para la comunicación Ethernet, el
Microcontrolador se conecta al módulo Ethernet a través de una interfaz como RS-232,
SPI, etc. En este grupo se encuentran dispositivos como: ENC28J60, ENC624J600,
Rabbit, EZ Web Lynx, SitePlayer, etc. La otra opción es utilizar un Microcontrolador que
lleve ya integrado el controlador Ethernet, Microchip dispone de varios PICs con estas
características como el PIC18F67J60, PIC18f97J60, PIC32MX795FXXX, etc. Las ventajas
y desventajas de utilizar una opción u otra son hasta cierto punto obvias, en el caso de
utilizar un módulo externo puedes utilizar cualquier Microcontrolador para realizar
una aplicación que envíe y reciba datos desde Internet, al estar todo lo referente a la
comunicación Ethernet en el módulo externo, no necesitas implementar nada más que
tú aplicación en el Microcontrolador y las funciones necesarias para el envío de datos
serie al controlador, con el consiguiente ahorro de recursos en el PIC, como
inconveniente lógicamente está el que tienes que utilizar un componente Hardware
más en tú circuito. Si se utiliza un Microcontrolador que incorpore el controlador
Ethernet te ahorras el tener que utilizar un componente extra para la gestión de la
comunicación Ethernet, pero como inconvenientes tendrás que solo podrás utilizar un
número reducido de PICs en tus proyectos y que lógicamente tendrás que incluirle a tú
código el conjunto de librerías o Stack TCP/IP que suministre el desarrollador del
compilador que utilices y como estarás suponiendo, si es que no las conoces ya, no son
nada “livianas” en cuanto a tamaño , con el consiguiente consumo de recursos por
parte del PIC. En realidad dada la complejidad del Stack lo que se hace es adaptar tú
aplicación para que funcione dentro del conjunto de librerías TCP/IP.
En mi opinión el uso de un controlador externo es una manera fácil y sencilla de
conectar un Microcontrolador o cualquier otro dispositivo a una red Ethernet pero
difiere bastante en cuanto al desarrollo del código de la aplicación si en vez de ello
utilizamos un Microcontrolador con el controlador Ethernet incluido y por tanto no se
puede comparar una cosa con la otra.
En este artículo vamos a ver como utilizar un controlador Ethernet externo
concretamente el SitePlayer SP1 que fabrica la empresa NetMedia. Algunas de sus
características son las siguientes:
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 3
Características Principales
Servidor WEB completo en un módulo de reducido tamaño (22x33mm), cuyo
cerebro es tan solo un Microcontrolador de 8 bits concretamente el 89C51 de
Philips al que se le ha añadido una interfaz Ethernet.
Dispone de un puerto de 8 pines que permite su conexión directa a circuitos de
entrada y salida, también pueden configurarse cuatro PWMs o DACs de 8 bits,
generadores de frecuencia, o contadores de eventos.
El dispositivo cumple con el estándar 10BaseT con corrección automática de la
polaridad por hardware.
64 KBites de memoria flash de los cuales 48 KBites están disponibles para
albergar las páginas web, cuya carga se hace vía Ethernet.
El Firmware del dispositivo es actualizable vía Ethernet.
Soporte para los siguientes protocolos de comunicación: ARP, ICPM, IP, UDP,
TCP, DHCP.
La IP del dispositivo la podemos configurar de forma estática o de forma
dinámica a través de un servidor DHCP.
Interfaz serie con un Baud Rate configurable entre 300 y 115.200 bits por
segundo.
Controles .OCX para facilitar la creación de aplicaciones de escritorio en Visual
Basic, Java, C ó C++ y para el monitoreo y control remoto del SitePlayer.
768 bytes para los SiteObjetos (veremos más adelante lo que es esto), los
cuales pueden ser del tipo bit, byte, integer, long y string.
Las páginas web que posteriormente se alojarán en el SitePlayer deben de
cumplir el estándar HTML y se pueden crear por medio del bloc de Notas o con
cualquiera de los múltiples programas del tipo WYSIWYG que existen como
FrontPage, Dreamweaver, etc.
La conexión del dispositivo a una red Ethernet se realiza a través de un
conector RJ-45 apantallado con filtros para evitar interferencias.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 4
Comenzando
Para empezar a trabajar con el SitePlayer lo primero que tenemos que tener además
de disponer del dispositivo en sí, es bajarnos las aplicaciones de escritorio y la
documentación (muy completa) desde la página del fabricante NetMedia.
Desde la sección de descargas nos bajaremos la versión completa que incluye el Site
Linker V1.1
Una vez instalado el paquete se nos habrán instalado varias aplicaciones, todas ellas
muy sencillas de utilizar: SitePlayerPCDemo, SiteLinker, Serial Port Tester y
UPDsendtest. Vamos hacer una pequeña descripción de cada una de ellas.
Serial Port Tester: como su propio nombre indica es una aplicación que nos
permite testear la interfaz serie que incorpora el SitePlayer, además desde ella
podemos ajustar determinados parámetros de configuración en el SitePlayer
como la dirección IP del dispositivo, Obtener la dirección MAC, hacer un Reset,
Obtener o cambiar el valor de determinadas posiciones de memoria, etc.
La conexión al SitePlayer se realiza a través de un puerto serie libre que
tengamos en nuestro ordenador y un convertidor de niveles como el MAX232
para adaptar los niveles TTL en los que trabaja el SitePlayer a la norma RS232
requerida por el PC.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 5
SitePlayerPCDemo: es un emulador software del SitePlayer y nos permite
depurar nuestro proyecto, antes de descargarlo definitivamente en el
SitePlayer. En si es un servidor WEB local que nos permite visualizar en el
navegador las páginas tal y como si lo estuviéramos haciendo realmente a
través del SitePlayer.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 6
SiteLinker: un proyecto para el SitePlayer no consta sólo de los archivos en
html de las páginas que queremos cargar en él, además hay que crear otra serie
de archivos como el archivo de definiciones (.SPD) y otros, que veremos en un
ejemplo más adelante. Pues bien el SiteLinker tiene dos funciones, la primera
es enlazar todos esos archivos en un solo archivo binario y que tendrá de
extensión (.SPB) este será el archivo que hay que cargar en el SitePlayer y que
se transferirá a él vía Ethernet a través de este mismo programa.
Como se ve en la figura de arriba si hacemos clic sobre la pestaña Download tenemos
tres opciones:
o Make DownLoad: solamente hará el linkado de los archivos y generará
el archivo binario con extensión (.spb).
o Download SitePlayer: enviará al SitePlayer vía Ethernet el archivo
binario que seleccionemos.
o Make and DownLoad: hará los dos pasos anteriores en uno, nos pedirá
que seleccionemos un archivo de definiciones (.SPD), generará el
archivo binario (.spb) y lo cargará en el SitePlayer.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 7
UDPsendtest: el SitePlayer también tiene la funcionalidad de poder enviar
mensajes UDP a cualquier combinación de direcciones MAC/IP que queramos.
Está aplicación permite visualizar los paquetes UDP enviados por el SitePlayer.
Hardware necesario
El SitePlayer aunque pocos, necesita componentes auxiliares para ponerlo en
funcionamiento. Podemos adquirir una placa de demostración ya hecha o hacerla
nosotros mismos, también se puede realizar el montaje en una Proto-Board, yo he
optado por la realización de una pequeña placa modular.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 8
Modulo principal:
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 9
PCB:
Montaje terminado:
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 10
Módulo para la conexión serie a un PC:
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 11
Conexión serie del SitePlayer a un PC
Ejemplo Nº1
Ahora que ya tenemos nuestro SitePlayer montado y leída la documentación del
fabricante ya estamos listos para realizar el primer ejemplo. Que consistirá en la
realización de una página WEB realizada en HTML y que alojaremos en el SitePlayer,
después desde un navegador WEB instalado en un PC accederemos a dicha página, la
cual permitirá el control del puerto de I/O del SitePlayer.
La aplicación una vez terminada quedará según se muestra en la figura de abajo.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 12
Desde la página web mostrada a la izquierda de la imagen de arriba podremos poner a
ON/OFF tres salidas digitales representadas por tres diodos Leds, también podremos
visualizar el estado de los dos pulsadores colocados sobre la proto-Board.
Para la realización de cualquier proyecto con el SitePlayer deberemos de realizar los
siguientes pasos:
1) Crear el archivo de definiciones de nuestro proyecto (.SPD) con el bloc de Notas
u otro editor de texto plano.
2) Crear la o las páginas WEBS usando un editor HTML (podéis utilizar cualquiera,
siempre que cumpla el estándar).
3) Ensamblar todo en único archivo binario (.SPB) y descargarlo en el SitePlayer a
través del programa SiteLinker.
4) Acceder a la página cargada en el SitePlayer a través de un navegador WEB.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 13
Archivo de Definiciones
El archivo de definiciones para nuestro primer ejemplo es el siguiente:
;Ejemplo1
;SECCIÓN DEFINICIONES
;Nombre o descripción del dispositivo
$Devicename "AquiHayApuntes.com"
;$DHCP on establece que el SitePlayer obtenga la IP a través de un
;servidor DHCP
$DHCP off
;$DownloadPassword password para poder descargar nuevas páginas y
;actualizaciones del firmware.
$DownloadPassword ""
;$InitialIP Parámetro para configurar una IP fija
$InitialIP "192.168.1.250"
;$PostIRQ on genera un nivel bajo (IRQ) en el pin 11.
$PostIRQ off
;$Sitefile ruta donde se creará el archivo binario con extensión .SPB
$Sitefile "C:\Program Files\SitePlayer\Ejemplo1.spb"
;$Sitepath Directorio raíz donde está alojada la página WEB
$Sitepath "C:\Program Files\SitePlayer\Ejemplo1"
;SECCIÓN DE OBJETOS
org 0FF14h
led1 ds 1
org 0FF15h
led2 ds 1
org 0FF16h
led3 ds 1
org 0FF17h
pulsador1 ds 1
org 0FF18h
pulsador2 ds 1
;SECCIÓN EXPORTACIÓN DE FICHEROS
;No utilizada en este ejemplo.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 14
Lo primero que observamos viendo el contenido del archivo es que se parece mucho a
un código escrito en ensamblador, lo que va detrás del “;“ son comentarios. El código
se puede dividir en tres secciones: sección de definiciones, declaración de Objetos y
una sección de exportación de ficheros.
En la sección de definiciones se establecen los parámetros iníciales del SitePlayer, hay
muchas opciones de configuración (están todas explicadas en el manual de referencia),
aquí vamos a comentar las utilizadas en este ejemplo:
;$Nombre o descripción del dispositivo
$Devicename "AquiHayApuntes.com"
Este parámetro es equivalente al “nombre” de un PC que le ponemos para identificarlo
dentro de una red local. El nombre puede ser una cadena de hasta 64 caracteres.
;$DHCP on establece que el SitePlayer obtenga la IP a través de un
;servidor DHCP
$DHCP off
Si nuestro Router dispone de servidor DHCP entonces la IP del dispositivo se la dará el
Rooter dentro de las que tenga libres en el rango definido por nosotros.
Nota: la mayoría de los Modem-Rooter que proporcionan gratuitamente los
proveedores de servicios de Internet llevan incorporado este servicio).
;$DownloadPassword password para poder descargar nuevas páginas y
;actualizaciones del firmware.
$DownloadPassword ""
En este caso la contraseña está en blanco, se puede especificar una contraseña de
hasta 16 caracteres. Si tenemos establecida una contraseña el SiteLinker nos pedirá la
contraseña antes de poder cargar una nueva página.
;$InitialIP Parámetro para configurar una IP fija
$InitialIP "192.168.1.250"
Si no utilizamos un servidor DHCP para obtener la dirección IP, con este parámetro
asignaremos una IP fija a nuestro dispositivo. Si utilizamos la opción del DHCP a ON,
también deberemos configurar una IP inicial con este parámetro.
;$PostIRQ on genera un nivel bajo (IRQ) en el pin 11.
$PostIRQ off
Esta opción es muy útil cuando utilizamos el SitePlayer junto con un Microcontrolador. Cada vez que desde la página WEB se modifique algún dato, el SitePlayer pondrá a
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 15
nivel bajo el PIN 11 durante cinco microsegundos, cuando este parámetro lo configuremos a ON podremos conectar ese PIN a la patilla RB0 del PIC configurado como interrupción externa, de esa manera el Microcontrolador no estará constantemente preguntando el valor de los datos al dispositivo, solo lo hará cuando haya datos nuevos que leer en el SitePlayer. ;$Sitefile ruta donde se creará el archivo binario con extensión .SPB
$Sitefile "C:\Program Files\SitePlayer\Ejemplo1.spb"
La ruta que pongamos aquí será donde se creará el archivo binario Ejemplo1.spb después de ensamblarlo con el programa SiteLinker. ;$Sitepath Directorio raíz donde está alojada la página WEB
$Sitepath "C:\Program Files\SitePlayer\Ejemplo1"
Tendremos que crear la carpeta Ejemplo1 en el directorio indicado y dentro de esa carpeta es donde tendremos que guardar nuestra página WEB que puede constar de varias páginas html unidas mediante enlaces.
Sección de Objetos
Aquí es donde está el “Kit” de la cuestión. El SitePlayer dispone de unas direcciones de
memoria que van desde la 0000h a 02FFh donde se pueden guardar objetos definidos
por nosotros y acceder a su valor a través de diferentes interfaces y protocolos.
Nota: se puede hacer un símil entre lo que es una variable y el concepto de Objeto en
el SitePlayer, pero como se verá más adelante los “SiteObjetos” disponen de
modificadores y propiedades que los hacen diferentes a lo que es en sí el concepto de
una variable.
Por ejemplo, desde la página WEB utilizando el protocolo http puedo hacer una
petición de lectura o escritura de los objetos (variables) y desde la interfaz serie puedo
también leer o escribir en esos objetos.
Por ejemplo:
org 0FF14h
led1 ds 1
Declara el objeto led1 del tipo ds que es un tipo de dato que depende del espacio
usado (parecido al tipo Variant en Basic) el 1 indica que es tipo byte., si fuera un dos
sería de tipo Integer, etc. Este tipo de dato no admite un valor inicial para el objeto.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 16
El org al igual que en ensamblador sirve para indicar a partir de que posición de
memoria empezarán a guardarse los Objetos.
Veamos otro ejemplo:
org 00h
led1 db 1
pulsador1 db 1
Aquí el valor del Objeto led1 se guardará en la dirección 0x00h y pulsador1 en la
dirección 0x01h. El dato es de tipo byte (db) y el 1 tiene un significado diferente al
ejemplo anterior, en este caso significa el valor inicial que tomará la variable.
Sección de Exportación de Ficheros
No utilizada en este ejemplo. Define cómo y dónde se exportará cualquier fichero
durante el proceso de linkado. Útil cuando los datos se tienes que exportar a
aplicaciones de escritorio hechas en Visual Basic, C, C++, etc.
Nota: Una vez creado el archivo de definiciones lo guardamos con el nombre
Ejemplo1.SPD, (no olvidarse de modificar la extensión del archivo).
Creación de la página WEB en html
Como hemos comentado ya para crear la página WEB podemos utilizar un simple
editor de texto plano como el bloc de notas o ayudarnos de un editor de páginas WEB
más avanzado como FrontPage, Dreamweaver u otro cualquiera, si utilizamos está
última opción hay que tener en cuenta que aunque estos IDES son de gran ayuda para
el que no tiene mucha soltura en programar en este lenguaje de etiquetas como es el
html siempre tendremos que editar el código generado por el Wizard y modificar
algunas cosas, vamos a ver que cosas son esas con el código del ejemplo que estamos
viendo.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title></head>
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 17
<body>
<div align="left">
<p><img src="logo.jpg" width="300" height="85" /></p>
</div>
<table width="309" border="1">
<tr>
<th colspan="2" bgcolor="#0066FF" scope="col">Contol E/S Site
Player</th>
</tr>
<tr>
<td width="124" rowspan="3" bgcolor="#99CC00"><div
align="center"><strong>Salidas Digitales</strong></div></td>
<td bgcolor="#FFFFFF"><div align="center"><a href="Ejemplo1.SPI
?led1=led1~1">Toggle Led 1</a> <img src="led^led1.gif"
width="40" height="20" /></div></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><div align="center"><a href="Ejemplo1.SPI
?led2=led2~1">Toggle Led 2</a> <img src="led^led2.gif"
width="40" height="20" /></div>
<div align="center"></div></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><div align="center"><a href="Ejemplo1.SPI
?led3=led3~1">Toggle Led 3</a> <img src="led^led3.gif"
width="40" height="20" /></div>
<div align="center"></div></td>
</tr>
<tr>
<td bgcolor="#CCFF00"><p align="center"><strong>Entradas
Digitales</strong></p> </td>
<td><p><strong>estable/strong></p>
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 18
<p><strong>Pulsador 2 = ^pulsador2</strong></p></td>
</tr>
</table>
<p> </p>
<p> </p>
</body>
</html>
De todo este código y quitando el código que le da formato a la página, lo que nos
interesa son las líneas que lleven código como este:
div align="center"><a href="Ejemplo1.SPI?led1=led1~1">Toggle Led
1</a> <img src="led^led1.gif" width="40" height="20"
/></div>
Pulsador 2 = ^pulsador2
El fabricante nos da la posibilidad de poder enviar o recibir datos al SitePlayer desde la
página web de varias formas. Por ejemplo podemos utilizar el método GET desde un
formulario y también podemos como en este caso enviar o recibir datos a través de un
enlace. Para establecer un enlace en HTML necesitamos un destino en este caso el
destino es el archivo Ejemplo1.SPI que tendremos que crear y guardar en el directorio
raíz que hayamos elegido en la creación del proyecto. El contenido de este archivo es
el siguiente:
HTTP/1.0 302 Found
Location: /index.htm
<cr><lf>
Y para lo único que sirve es para hacer un re direccionamiento a la página index.htm
con la información actualizada. Es muy importante no olvidarse de dejar una línea en
blanco al final del fichero, si no lo hacemos no funcionará.
¿Cómo accedo a los Objetos desde html? Pues debemos de poner el símbolo (“^”)
seguido del nombre del Objeto, en el ejemplo:
Pulsador 2 = ^pulsador2
^pulsador2 será sustituido por el valor que tenga en memoria el Objeto pulsador2.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 19
Y la parte del código html que modifica el valor de un Objeto es esta:
<a href="Ejemplo1.SPI?led1=led1~1">Toggle Led 1</a>
En este caso led1=led~1 le asigna al objeto led1 su valor negado, con lo que se
consigue el efecto Toggle en el led.
¿Y ahora Que..?
Pues ya tenemos todos los archivos que componen nuestro proyecto creados, nos
queda unificarlos en un único archivo binario, para ello abrimos la aplicación SiteLinker
hacemos clic sobre File-> Open y seleccionamos el archivo de definiciones que
habíamos creado anteriormente (Ejemplo1.SPD). Una vez abierto hacemos clic sobre
Download -> Make Download File. Si todo ha ido bien en el cuadro de texto de la
aplicación nos mostrará el tamaño en bytes que ocupará el archivo en la memoria
Flash del dispositivo y un mensaje de que el archivo binario (Ejemplo1.SPB) se ha
creado correctamente.
Probando nuestro proyecto
En teoría ya tenemos nuestro proyecto listo para cargarlo en el SitePlayer, pero no
sabemos si funciona correctamente, para depurar nuestro programa de posibles
errores disponemos del programa SitePlayerPCDemo que ya habíamos visto
anteriormente. Para ello abrimos la aplicación y hacemos clic en File->Open y
seleccionamos el archivo Ejemplo1.SPB, después hacemos clic sobre Browser para que
se nos habrá el navegador y podamos probar nuestra aplicación.
Nota: si intentamos abrir directamente las páginas WEB creadas con el navegador, no
se mostrarán correctamente, ya que el navegador no sabrá interpretar los símbolos
que son específicos y necesarios para el funcionamiento del servidor WEB del
SitePlayer.
Cargando nuestra aplicación en el SitePlayer
Una vez probada nuestra aplicación en local solo nos queda transferir el archivo
binario al SitePlayer, para ello abrimos de nuevo la aplicación SiteLinker pulsamos
sobre Download->Download SitePlayer y descargamos el archivo Ejemplo1.SPB a la
memoria Flash del Site player. Si todo ha ido bien podremos abrir el navegador y
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 20
acceder a la página WEB a través de la IP que hayamos definido previamente en el
archivo de definiciones.
Aquí tenéis un vídeo de la aplicación funcionando.
http://www.youtube.com/watch?v=617ngsnmBeg
Ejemplo Nº2
En este segundo ejemplo utilizaremos la interfaz serie para conectar un
Microcontrolador (PIC18F4550) a una red Ethernet a través del SitePlayer. El ejemplo
consistirá en un controlador de la temperatura ambiente. El Microcontrolador recibirá
los datos de la temperatura a través de un sensor de temperatura (DS1631) conectado
al PIC a través de un bus I2C. El PIC enviará los datos al SitePlayer a través de la interfaz
serie y visualizaremos el resultado en una página web a la cual accederemos desde un
Navegador instalado en un PC externo a nuestra red local (LAN).
El montaje del circuito se muestra en la figura de abajo:
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 21
Y la forma en la que quedaría conectado el circuito a una red Ethernet sería la
siguiente:
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 22
Con respecto al ejemplo 1 este presenta dos novedades:
1) En el primer ejemplo accedíamos a la página WEB a través de la misma red
Local en la que teníamos conectado el SitePlayer. Como se ve en la figura de
arriba en esta ocasión se accede a través de un nombre de dominio propio y
por tanto podremos comandar el Microcontrolador desde cualquier lugar en
donde tengamos un dispositivo capaz de conectarse a Internet y disponga de
un navegador WEB y digo cualquier dispositivo porque no solo podremos
hacerlo a través de un PC sino también a través de una PDA, un teléfono móvil,
una consola de videojuegos etc. que en definitiva era lo que se pretendía.
2) En el primer ejemplo controlábamos el puerto de I/O del SitePlayer. En este
ejemplo se establece un protocolo de comunicación entre el SitePlayer y el
Microcontrolador a través de la interfaz serie.
En todo lo demás el procedimiento a seguir es el mismo que lo realizado para el
ejemplo anterior.
Consideraciones a tener en cuenta
Para conectarnos al servidor web del SitePlayer desde Internet a través de una red
externa a nuestra red local (LAN) es necesario hacerlo por medio de nuestra IP
pública. Esta IP es la que nos asigna nuestro proveedor de servicios de internet (ISP).
Puedes averiguar cuál es tú IP pública a través de diferentes páginas como esta:
http://www.adslayuda.com/ip.html
Otro problema que tendremos que resolver es que esa IP a no ser que la paguemos
no es fija sino dinámica, es decir cada vez que nuestra puerta de enlace
(normalmente un rooter) se reinicie, nuestro ISP nos asignará una IP pública
diferente. Afortunadamente la mayoría de los rooters que nos “regalan” las
empresas ISP cuando contratamos sus servicios nos dan la posibilidad de
conectarnos a un servidor DNS dinámico gratuito como dyndns, No-IP, ect. Esto lo
que hace es que una vez configurado el rooter cada cierto tiempo envía nuestra IP
pública al servidor DNS y este actualizará la IP asociada al nombre de dominio. A
partir de ahora nosotros accederemos a la página a través del nombre de dominio y
no tendremos que preocuparnos de que nuestra IP pública haya cambiado.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 23
A la hora de implementar el protocolo de comunicación entre el Microcontrolador y
el SitePlayer a través de la interfaz serie, tenemos dos opciones:
o Utilizar el objeto COM: es la forma más sencilla, la función de este objeto es
el envío de cadenas de caracteres a través del puerto serie. Cuando desde la
página WEB queremos enviar algún dato al Microcontrolador a través del
puerto serie llamamos al objeto COM y este enviará los datos directamente
al Microcontrolador a través del pin Tx de la interfaz serie sin guardar nada
en la memoria RAM del SitePlayer.
Ejemplo:
<a href="Ejemplo2.SPI?com=ON">Marcha</a>
<a href="Ejemplo2.SPI?com=OFF">Parada</a>
Estos dos enlaces colocados en la página WEB enviaran por el puerto serie las
cadenas “ON” y “OFF” cuando pulsemos sobre los enlaces Marcha y Parada.
Si queremos enviar caracteres no imprimibles utilizaremos el siguiente
formato:
<a href="Ejemplo2.SPI?com=%01%03">envía Ctrl-A Ctrl-C</a>
Si hay dos dígitos después del símbolo (%) serán interpretados como
caracteres Hexadecimales.
También podemos configurar el Baud Rate del puerto serie desde la
página WEB:
<a href="Ejemplo2.SPI?baud=65406">Haz clic para baud Rate =
9600 baudios</a>
Esto configurará la velocidad a 9600 baudios, la fórmula a emplear es:
65536- (1250000/baudrate)
En el manual de referencia hay una tabla con los valores comúnmente
utilizados.
El inconveniente que tiene este método es que la comunicación es
unidireccional, desde la página WEB hacía el PIC y no a la inversa ya que
el objeto COM no modifica ni guarda ningún dato en la memoria RAM
del SitePlayer.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 24
o Para evitar el inconveniente anterior, podemos controlar la comunicación
serie a través de los siguientes comandos:
De esta forma podemos leer el valor de un Objeto en memoria o modificar su valor; al
almacenar los datos en memoria ya no hay ningún problema en establecer una comunicación
bidireccional entre la página WEB y el Microcontrolador al igual que hicimos con el Ejemplo1.
La forma de utilizar estos comandos utilizando el lenguaje C y el compilador de CCS es la
siguiente:
Primeramente hay que inicializar el SitePlayer para ello se envía 20 veces el
comando NOP:
////////Función de inicialización SitePlayer ///////////
void inicio(){
int i;
for(i=0;i<20;i++){
putc(0);
}
delay_ms(50);
}
Para enviar un dato al SitePlayer se envía el comando de escritura (80h) seguido de
la dirección del objeto y el valor que queremos asignarle:
putc(0x80);
putc(0x00);
putc(0x01);
Esto escribirá el valor 1 en la dirección 0x00
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 25
Una petición de lectura al SitePlayer será similar salvo que el comando a enviar será el de lectura (C0h).
Un vídeo del ejemplo 2 funcionando lo tenéis aquí:
http://www.youtube.com/watch?v=5Tz3a68AK94
Puedes comentar o seguir los avances sobre estos ejemplos en este hilo del foro de
AquiHayApuntes.com
Fuentes de Información
http://www.netmedia.com/siteplayer/webserver/sp1.html
http://www.superrobotica.com/S310265.htm
CCS Custom Computer Services
Marcas registradas
Las marcas citadas en este artículo así como las imágenes procedentes de capturas de
pantallas pertenecen a sus respectivos propietarios su utilización en este artículo es con fines
divulgativos y sin ánimo de lucro.
Comandar un PIC a través de Internet
Biblioman http://www.aquihayapuntes.com Página 26
Licencia
Autor de este artículo: Biblioman
Versión: 1.0.0
Página Web: http:\\www.aquihayapuntes.com
Email: [email protected]
Este artículo esta bajo una licencia Creative Commons: Reconocimiento-No Comercial-
Compartir bajo la misma licencia.