Comandar un PIC a través de Internet

Sistema embebido dedicado para conectar un micro-controlador a Internet

MICROCONTROLADORES

Biblioman

4/7/201119 min read

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:

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.

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.

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

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

1) Make DownLoad: solamente hará el linkado de los archivos y generará el archivo binario con extensión (.spb).

2) Download SitePlayer: enviará al SitePlayer vía Ethernet el archivo binario que seleccionemos.

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

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

  • Modulo principal:

PCB:

Montaje terminado:

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

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.

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.

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.

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

Las siguientes líneas:

org 0FF14h

led1 ds 1

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

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>

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

<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

^pulsador2será sustituido por el valor que tenga en memoria el Objeto pulsador2.

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

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:

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

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.

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:

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

  • A través de comandos: 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

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

La versión en .pdf del artículo para su descarga la tienes aquí.

Un saludo