SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
Comandar un PIC a través de
                   Internet




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



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:




Biblioman                http://www.aquihayapuntes.com                         Página 2
Comandar un PIC a través de Internet


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.



Biblioman                http://www.aquihayapuntes.com                            Página 3
Comandar un PIC a través de Internet


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.




Biblioman                http://www.aquihayapuntes.com                         Página 4
Comandar un PIC a través de Internet




      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.




Biblioman                http://www.aquihayapuntes.com                         Página 5
Comandar un PIC a través de Internet


      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.




Biblioman                http://www.aquihayapuntes.com                        Página 6
Comandar un PIC a través de Internet


      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.




Biblioman                http://www.aquihayapuntes.com                         Página 7
Comandar un PIC a través de Internet


       Modulo principal:




Biblioman              http://www.aquihayapuntes.com   Página 8
Comandar un PIC a través de Internet


       PCB:




       Montaje terminado:




Biblioman             http://www.aquihayapuntes.com   Página 9
Comandar un PIC a través de Internet


Módulo para la conexión serie a un PC:




Biblioman               http://www.aquihayapuntes.com   Página 10
Comandar un PIC a través de Internet


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.




Biblioman               http://www.aquihayapuntes.com                       Página 11
Comandar un PIC a través de Internet




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.




Biblioman                http://www.aquihayapuntes.com                        Página 12
Comandar un PIC a través de Internet


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 FilesSitePlayerEjemplo1.spb"

;$Sitepath Directorio raíz donde está alojada la página WEB
$Sitepath "C:Program FilesSitePlayerEjemplo1"


;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.




Biblioman                 http://www.aquihayapuntes.com                   Página 13
Comandar un PIC a través de Internet


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

Biblioman                http://www.aquihayapuntes.com                        Página 14
Comandar un PIC a través de Internet


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 FilesSitePlayerEjemplo1.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 FilesSitePlayerEjemplo1"

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.




Biblioman                 http://www.aquihayapuntes.com                          Página 15
Comandar un PIC a través de Internet


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>




Biblioman                 http://www.aquihayapuntes.com                          Página 16
Comandar un PIC a través de Internet


<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>


Biblioman            http://www.aquihayapuntes.com             Página 17
Comandar un PIC a través de Internet


     <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.

Biblioman                 http://www.aquihayapuntes.com                         Página 18
Comandar un PIC a través de Internet


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



Biblioman                http://www.aquihayapuntes.com                         Página 19
Comandar un PIC a través de Internet


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:




Biblioman                  http://www.aquihayapuntes.com                           Página 20
Comandar un PIC a través de Internet




Y la forma en la que quedaría conectado el circuito a una red Ethernet sería la
siguiente:




Biblioman                http://www.aquihayapuntes.com                            Página 21
Comandar un PIC a través de Internet


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.




Biblioman                  http://www.aquihayapuntes.com                              Página 22
Comandar un PIC a través de Internet


       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.




Biblioman                   http://www.aquihayapuntes.com                            Página 23
Comandar un PIC a través de Internet


             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



Biblioman                   http://www.aquihayapuntes.com                            Página 24
Comandar un PIC a través de Internet


         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.




Biblioman                   http://www.aquihayapuntes.com                              Página 25
Comandar un PIC a través de Internet


Licencia

Autor de este artículo: Biblioman

Versión: 1.0.0

Página Web: http:www.aquihayapuntes.com

Email: email.Biblioman@gmail.com

Este artículo esta bajo una licencia Creative Commons: Reconocimiento-No Comercial-
Compartir bajo la misma licencia.




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

Más contenido relacionado

Similar a Comandar un pic a través de internet

Redes Cap1
Redes Cap1Redes Cap1
Redes Cap1CJAO
 
Práctica 2 (5) (1)
Práctica 2 (5) (1)Práctica 2 (5) (1)
Práctica 2 (5) (1)ManixGames
 
Profibus TIA Portal EMERSON EDUARDO RODRIGUES
Profibus TIA Portal EMERSON EDUARDO RODRIGUESProfibus TIA Portal EMERSON EDUARDO RODRIGUES
Profibus TIA Portal EMERSON EDUARDO RODRIGUESEMERSON EDUARDO RODRIGUES
 
Empezando con las librerías gráficas de microchip
Empezando  con las librerías gráficas de  microchipEmpezando  con las librerías gráficas de  microchip
Empezando con las librerías gráficas de microchipBiblioman Aquihayapuntes
 
Publicación de un Servidor Web a través de un Módem Doméstico.
Publicación de un Servidor Web a través de un Módem Doméstico.Publicación de un Servidor Web a través de un Módem Doméstico.
Publicación de un Servidor Web a través de un Módem Doméstico.Gerardo Martínez
 
Modems y tarjetas red
Modems y tarjetas redModems y tarjetas red
Modems y tarjetas redcompuiti2012
 
Mikrotik RouterOs basics v0.3 español
Mikrotik RouterOs basics v0.3 españolMikrotik RouterOs basics v0.3 español
Mikrotik RouterOs basics v0.3 españolRod Hinojosa
 
Mikrotik RouterOs basics v0.3
Mikrotik RouterOs basics v0.3Mikrotik RouterOs basics v0.3
Mikrotik RouterOs basics v0.3Rod Hinojosa
 
Tutorial de cambio ip al plc festo rev b
Tutorial de cambio ip al plc festo rev bTutorial de cambio ip al plc festo rev b
Tutorial de cambio ip al plc festo rev bChristian Vera Graciano
 
Creación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con VagrantCreación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con VagrantCarlos Gimeno Yáñez
 
Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550Biblioman Aquihayapuntes
 
Temario java web_j2_ee_02
Temario java web_j2_ee_02Temario java web_j2_ee_02
Temario java web_j2_ee_02anyeni
 
TEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOTEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOAnyeni Garay
 
Temario java web_j2_ee_02
Temario java web_j2_ee_02Temario java web_j2_ee_02
Temario java web_j2_ee_02anyeni
 

Similar a Comandar un pic a través de internet (20)

Anexo 6 paper swe
Anexo 6 paper sweAnexo 6 paper swe
Anexo 6 paper swe
 
Redes Cap1
Redes Cap1Redes Cap1
Redes Cap1
 
Práctica 2 (5) (1)
Práctica 2 (5) (1)Práctica 2 (5) (1)
Práctica 2 (5) (1)
 
Profibus TIA Portal EMERSON EDUARDO RODRIGUES
Profibus TIA Portal EMERSON EDUARDO RODRIGUESProfibus TIA Portal EMERSON EDUARDO RODRIGUES
Profibus TIA Portal EMERSON EDUARDO RODRIGUES
 
Servidor
ServidorServidor
Servidor
 
Empezando con las librerías gráficas de microchip
Empezando  con las librerías gráficas de  microchipEmpezando  con las librerías gráficas de  microchip
Empezando con las librerías gráficas de microchip
 
Ejercicios de redes
Ejercicios de redesEjercicios de redes
Ejercicios de redes
 
Publicación de un Servidor Web a través de un Módem Doméstico.
Publicación de un Servidor Web a través de un Módem Doméstico.Publicación de un Servidor Web a través de un Módem Doméstico.
Publicación de un Servidor Web a través de un Módem Doméstico.
 
raspeberry para domotica.pdf
raspeberry para domotica.pdfraspeberry para domotica.pdf
raspeberry para domotica.pdf
 
Modems y tarjetas red
Modems y tarjetas redModems y tarjetas red
Modems y tarjetas red
 
Mikrotik RouterOs basics v0.3 español
Mikrotik RouterOs basics v0.3 españolMikrotik RouterOs basics v0.3 español
Mikrotik RouterOs basics v0.3 español
 
Mikrotik RouterOs basics v0.3
Mikrotik RouterOs basics v0.3Mikrotik RouterOs basics v0.3
Mikrotik RouterOs basics v0.3
 
Tutorial de cambio ip al plc festo rev b
Tutorial de cambio ip al plc festo rev bTutorial de cambio ip al plc festo rev b
Tutorial de cambio ip al plc festo rev b
 
E1 lab 3_4_2
E1 lab 3_4_2E1 lab 3_4_2
E1 lab 3_4_2
 
Creación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con VagrantCreación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con Vagrant
 
Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550
 
IIS y APACHE
IIS y APACHEIIS y APACHE
IIS y APACHE
 
Temario java web_j2_ee_02
Temario java web_j2_ee_02Temario java web_j2_ee_02
Temario java web_j2_ee_02
 
TEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOTEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLO
 
Temario java web_j2_ee_02
Temario java web_j2_ee_02Temario java web_j2_ee_02
Temario java web_j2_ee_02
 

Comandar un pic a través de internet

  • 1. Comandar un PIC a través de Internet Biblioman Abril-2011
  • 2. Comandar un PIC a través de Internet 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: Biblioman http://www.aquihayapuntes.com Página 2
  • 3. Comandar un PIC a través de Internet 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. Biblioman http://www.aquihayapuntes.com Página 3
  • 4. Comandar un PIC a través de Internet 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. Biblioman http://www.aquihayapuntes.com Página 4
  • 5. Comandar un PIC a través de Internet  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. Biblioman http://www.aquihayapuntes.com Página 5
  • 6. Comandar un PIC a través de Internet  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. Biblioman http://www.aquihayapuntes.com Página 6
  • 7. Comandar un PIC a través de Internet  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. Biblioman http://www.aquihayapuntes.com Página 7
  • 8. Comandar un PIC a través de Internet  Modulo principal: Biblioman http://www.aquihayapuntes.com Página 8
  • 9. Comandar un PIC a través de Internet  PCB:  Montaje terminado: Biblioman http://www.aquihayapuntes.com Página 9
  • 10. Comandar un PIC a través de Internet Módulo para la conexión serie a un PC: Biblioman http://www.aquihayapuntes.com Página 10
  • 11. Comandar un PIC a través de Internet 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. Biblioman http://www.aquihayapuntes.com Página 11
  • 12. Comandar un PIC a través de Internet 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. Biblioman http://www.aquihayapuntes.com Página 12
  • 13. Comandar un PIC a través de Internet 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 FilesSitePlayerEjemplo1.spb" ;$Sitepath Directorio raíz donde está alojada la página WEB $Sitepath "C:Program FilesSitePlayerEjemplo1" ;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. Biblioman http://www.aquihayapuntes.com Página 13
  • 14. Comandar un PIC a través de Internet 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 Biblioman http://www.aquihayapuntes.com Página 14
  • 15. Comandar un PIC a través de Internet 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 FilesSitePlayerEjemplo1.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 FilesSitePlayerEjemplo1" 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. Biblioman http://www.aquihayapuntes.com Página 15
  • 16. Comandar un PIC a través de Internet 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> Biblioman http://www.aquihayapuntes.com Página 16
  • 17. Comandar un PIC a través de Internet <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> Biblioman http://www.aquihayapuntes.com Página 17
  • 18. Comandar un PIC a través de Internet <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. Biblioman http://www.aquihayapuntes.com Página 18
  • 19. Comandar un PIC a través de Internet 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 Biblioman http://www.aquihayapuntes.com Página 19
  • 20. Comandar un PIC a través de Internet 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: Biblioman http://www.aquihayapuntes.com Página 20
  • 21. Comandar un PIC a través de Internet Y la forma en la que quedaría conectado el circuito a una red Ethernet sería la siguiente: Biblioman http://www.aquihayapuntes.com Página 21
  • 22. Comandar un PIC a través de Internet 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. Biblioman http://www.aquihayapuntes.com Página 22
  • 23. Comandar un PIC a través de Internet  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. Biblioman http://www.aquihayapuntes.com Página 23
  • 24. Comandar un PIC a través de Internet 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 Biblioman http://www.aquihayapuntes.com Página 24
  • 25. Comandar un PIC a través de Internet  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. Biblioman http://www.aquihayapuntes.com Página 25
  • 26. Comandar un PIC a través de Internet Licencia Autor de este artículo: Biblioman Versión: 1.0.0 Página Web: http:www.aquihayapuntes.com Email: email.Biblioman@gmail.com Este artículo esta bajo una licencia Creative Commons: Reconocimiento-No Comercial- Compartir bajo la misma licencia. Biblioman http://www.aquihayapuntes.com Página 26