comanda pic a traves de internet

26
Biblioman Abril-2011 Comandar un PIC a través de Internet

Upload: oscar-diaz

Post on 06-Aug-2015

224 views

Category:

Documents


2 download

DESCRIPTION

comando de pic a traves de internet sistema

TRANSCRIPT

Page 1: comanda pic a traves de internet

Biblioman

Abril-2011

Comandar un PIC a través de Internet

Page 2: comanda pic a traves de internet

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:

Page 3: comanda pic a traves de internet

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.

Page 4: comanda pic a traves de internet

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.

Page 5: comanda pic a traves de internet

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.

Page 6: comanda pic a traves de internet

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.

Page 7: comanda pic a traves de internet

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.

Page 8: comanda pic a traves de internet

Comandar un PIC a través de Internet

Biblioman http://www.aquihayapuntes.com Página 8

Modulo principal:

Page 9: comanda pic a traves de internet

Comandar un PIC a través de Internet

Biblioman http://www.aquihayapuntes.com Página 9

PCB:

Montaje terminado:

Page 10: comanda pic a traves de internet

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:

Page 11: comanda pic a traves de internet

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.

Page 12: comanda pic a traves de internet

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.

Page 13: comanda pic a traves de internet

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.

Page 14: comanda pic a traves de internet

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

Page 15: comanda pic a traves de internet

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.

Page 16: comanda pic a traves de internet

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&iacute;tulo</title></head>

Page 17: comanda pic a traves de internet

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>&nbsp;&nbsp;<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>&nbsp;&nbsp;<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> &nbsp;&nbsp;<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>

Page 18: comanda pic a traves de internet

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>&nbsp;</p>

<p>&nbsp;</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>&nbsp;&nbsp;<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.

Page 19: comanda pic a traves de internet

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

Page 20: comanda pic a traves de internet

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:

Page 21: comanda pic a traves de internet

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:

Page 22: comanda pic a traves de internet

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.

Page 23: comanda pic a traves de internet

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.

Page 24: comanda pic a traves de internet

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

Page 25: comanda pic a traves de internet

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.

Page 26: comanda pic a traves de internet

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.