manual de usuario

Transcripción

manual de usuario
MANUAL DE USUARIO
Medición y control a través de
Internet.
Ver 1.3
1
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Introducción
El Micro Core ETH es una herramienta de desarrollo que se puede accesar a través
de Internet. Nos facilita el acceso a información de estado de variables digitales,
analógicas, puertos de comunicación etc.
También nos permite cambiar el estado es decir controlar dispositivos del entorno
como ser lámparas, motores, válvulas etc. Y como limite nuestra imaginación.
El usuario accede a un servidor web alojado en el módulo a través de una dirección
web, como ser http://mchpboard desde una veloz interface gráfica.
La programación se puede llevar a cabo con diversos lenguajes de programación.
De fabrica viene con una modificación del ejemplo proporcionado por Microchip con
su stack TCP/IP y las páginas web programadas en “AJAX” (HTML, CSS, Java
Script y XML).
2
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Pin-Out
El Micro Core ETH incorpora un regulador de 3.3V, lo que permite alimentarlo con
5V o 3.3V. Se proporcionan las señales de dos interfaces SPI, la USART, los pines
de programación para Pickit 2 y Pickit 3.
3
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Esquemático
La fuente de alimentación consiste en un regulador TC1262-3.3 de Microchip. La
tensión máxima de entrada admisible es de 5.5v. Tanto el micro controlador como la
memoria se alimentan a 3.3v.
La memoria 25LC1024 está conectada al SPI1 del PIC. Estos pines también están
disponibles en el header ya que se puede multiplexar el BUS SPI a través del CS.
4
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
El conector RJ45 que utilizamos (MagJack) contiene los inductores necesarios para
adaptar los niveles de tensión, con lo cual no son necesarios componentes externos
mas allá de los que se ven en el diagrama:
Esta placa cuenta con un Cristal de 25 MHz para funcionar correctamente.
5
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Configuración
Vamos a realizar las conexiones de hardware y la configuración del software
necesaria para conectar el módulo a la red. En primer lugar alimentaremos el MCE
Micro Core ETH con 5 o 3.3v, de este modo se debe encender el LED de Power.
Alimentación
Power
La placa viene programada de fábrica como cliente DHCP con lo cual podemos
conectarla a un ROUTER con DHCP habilitado para que le asigne una dirección IP.
El nombre de la placa por NETBIOS es mchpboard.
Para acceder a la interface de usuario, basta con escribir http://mchpboard en el
navegador web (la PC debe estar conectada en la misma red que la placa)
Conexión a PC: conectar un cable UTP/STP cruzado al terminar RJ45.
Conexión a Router: conectar un cable UTP/STP recto al terminar RJ45.
En el explorador Web ingresar a http://mchpboard o la IP: 169.254.1.1 en el caso de conexión
directa a la PC.
6
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Lo que vemos en el explorador web es la pagina que viene cargada por defecto en la
memora 25LC1024. Los LEDs están mapeados en el puerto RBX con lo cual
podemos conectar 4 LEDs en los pines RJ0, RJ1, RJ2 y RC0 para controlarlos
desde Ethernet.
7
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
TCP/IP Stack – Introducción
Esta versión modificada está basada en la distribución original: Microchip TCP/IP
stack v5.42.06. La idea era hacerla compatible con el Micro Core ETH para que
acepte memorias de 1 Mbit como la 25LC1024.
Hay que tener en cuenta que se puede compilar el stack para ser usado en micros
que no tienen controlador Ethernet incorporado como el 18F4550 (en este caso hay
que agregarle un ENC28J60 de Microchip) y para aquellos que si traen un
controlador integrado como el 18F97J60.
Para comenzar a trabajar con el stack necesitaremos los siguientes programas:
Microchip MPLAB X
Microchip C18 Student Edition
Librerías de Microchip para Ethernet
El programa de ejemplo que está incorporado fue compilado con MPLAB X 2.05 y
C18.
Dentro del Microchip TCP/IP Stack abrir la carpeta TCPIP / Demo App que
contiene el proyecto TCPIP Demo App-C18
Este es el proyecto general que contiene los encabezados y todos los archivos del
Stack.
8
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
TCP/IP Stack – Configuration Wizard
Podemos tener una buena idea de las posibilidades del Stack estudiando en detalle
el Microchip TCP/IP Configuration Wizard. Si bien esta aplicación nos permite
modificar parámetros de la red como la dirección IP y MAC; seleccionar entre
protocolos como HTTP y FTP, no permite que el usuario agregue su propio código.
Al momento de implementar un sistema necesariamente debemos programar las
funciones en C con el MPLAB.
Lo primero que debemos hacer es seleccionar la carpeta desde la cual vamos a
trabajar, es decir, donde está instalado el Stack. El proyecto básico se encuentra en:
C:\Microchip Solutions\TCPIP \Demo App.
El TCP/IP Configuration Wizardes una aplicación gráfica que permite modificar los
parámetros del stack, se instala junto con las librerías de Microchip y la ruta por
defecto es: Inicio –Programas –Microchip –Microchip TCPIP Stack-TCP/IP
Configuration Wizard.
9
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Podemos agregar soporte para distintos servicios: Servidor Web, Cliente de email,
Telnet, FTP y SSL. Además soporte para el módulo WI-FI de Microchip o ZeroG.
En esta instancia vamos a agregar Servidor Web, que permite acceder a un página
por medio de una dirección IP y Cliente de email mediante el cual podremos enviar
un email automáticamente ante un determinado evento, por ejemplo, si sube la
temperatura por encima de un umbral.
Como mencionamos anteriormente, cada servicio que deshabilitamos por medio del
asistente es comentado en el Stackpara que el C18 no lo compile.En esta instancia
cabe mencionar que el Stackde Microchip está organizado en varios archivos, los
encabezados que habilitan los servicios se encuentran en el archivo: TCPIPConfig.h
10
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Por medio del TCP/IP Configuration Wizard podemos agregar funciones especiales.
Por ejemplo, una aplicación sumamente útil es hacer un conversor RS232 –Ethernet:
así todos los paquetes que ingresen por el conector de red serán retransmitidos por
la UART del PIC y viceversa. De esta forma podemos darle conectividad Ethernet a
sistemas que originalmente solo tenían comunicación RS232.
Otra función interesante es medir el tiempo de viaje de un paquete entre el cliente y
el host, lo que comúnmente denominamos PING. El stack nos devuelve el tiempo de
viaje en milisegundos.
11
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Vamos ahora a definir el nombre de Host, es decir un nombre con el cual
identificaremos a nuestra placa en la red. Si tenemos habilitado el servicio de DNS
podemos asociar un nombre a la placa que será más fácil de recordar que la
dirección IP. Por otra parte, como la IP puede ser asignada por el servidor en forma
dinámica, resulta conveniente definir un nombre de Host.
Vinculado estrechamente al nombre de Host se encuentra la dirección MAC.
Recordemos que por norma la MAC debe ser unívoca, por lo tanto, al momento de
comercializar nuestro desarrollo es necesario adquirir un bloque de direcciones MAC
a la IEEE. Existen memorias de Microchip que tienen pregrabada una MAC y que
podemos vincular el microcontrolador a través de la interface SPI o I2C. Claro que
para hacer pruebas podemos utilizar la MAC por defecto que trae el Stack.
12
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Vamos a definir el nombre de la página principal, es decir aquella que se va a
mostrar por defecto, en este caso: index.htm
Un parámetro importante es la cantidad de conexiones que vamos a permitir. Esto
hace referencia a la cantidad de usuarios que pueden monitorear el sistema
simultáneamente. Cómo máximo pueden ser 32, pero debemos considerar
parámetros como ancho de banda y estabilidad de la red antes de establecerlo, ya
que una excesiva demanda puede deteriorar el rendimiento del sistema.
13
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Podemos establecer diferentes ubicaciones para almacenar la página web que verá
el usuario final de nuestro web server. La misma puede estar en la memoria de
programa del microcontrolador o en una memoria externa del tipo EEPROM.
Si bien vemos otras opciones como memoria Flash y sistema FAT, las mencionadas
anteriormente son las más representativas ya que determinan si la página está
alojada en la memoria del micro o en una memoria externa.
La placa Micro Core ETH utiliza la memoria 25LC1024. Esta memoria es del tipo
EEPROM , tiene una capacidad de 1Mbit y se conecta al PIC por SPI. Eligiendo una
memoria externa disponemos de toda la memoria de programa para escribir nuestro
código y alojar el StackTCP/IP.
14
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Una vez configurados los parámetros básicos de nuestra aplicación a través del
Microchip TCP/IP Configuraton Wizard, estamos en condiciones de compilar el Stack
y cargarlo en el PIC.
15
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Necesitamos, entonces, compilar el Stack, para lo cual abrimos el proyecto
TCPIP/Demo App/C18-PICDN2_ETH97.X desde el MPLAB y ejecutamos la
compilación haciendo click en Buil dall.
Dentro de la carpeta TCPIP Demo App encontramos varios proyectos preparados
para utilizar con micros de 8 a 32 bits. Es interesante destacar que los parámetros
configurados con el asistente sirven para cualquier proyecto, esto se debe a que sólo
se está modificando el archivo de cabecera TCPIPConfig.h. Nótese que
seleccionamos el proyecto TCPIP/Demo App/C18-PICDN2_ETH97.X ya que vamos
a trabajar con un micro de la familia PIC18 (8bits).
16
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
TCPIPConfig.h
El archivo TCPIPConfig.h se utiliza para habilitar o deshabilitar funciones del stack
como DNS, FTP, SNTP, SSL y UART dependiendo de las características de nuestra
aplicación y la memoria disponible en el micro. Por ejemplo, para habilitar el cliente
NTP, debemos incluir la sentencia: #define STACK_USE_SNTP_CLIENT
Dentro de TCPIPConfig.h es posible especificar si la página web va a estar en la
memoria de programa o en la memoria EEPROM externa.
Si el website va a estar alojado en la memoria de programa debemos comentar la
sentencia: #define MPFS_USE_EEPROM e incluir el archivo MPFSImg2.c en el
proyecto.
También se puede definir la dirección MAC a través de MY_DEFAULT_MAC_BYTE5
y el nombre de la placa mediante MY_DEFAULT_HOST_NAME (ej:
http://mchpboard).
MainDemo.c
En el archivo MainDemo.c encontramos el mapeo de puertos, la configuración de los
registros de la USART, los ADC y la inicialización de la placa. Por ejemplo
ADCON0=0x0D; // Línea 1471-Para seleccionar AN3 como entrada analógica.
CustomHTTPApp.c
Por último, el tercer archivo que necesitamos para una aplicación básica es
CustomHTTPApp.c, en el cual se encuentran las funciones callback, es decir aquellas
que interactúan con la pagina web.
17
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Funciones
En esta sección vamos a ver como interactuar con el microcontrolador desde la
pagina web. Vamos a desarrollar un ejemplo para monitorear el estado de un puerto y
luego le vamos a agregar control remoto, es decir, cambiar el estado del puerto desde
la interface web.
Monitoreo a distancia:
Para monitorear el estado de un puerto desde la web necesitamos hacer tres cosas:
Mapear e inicializar el puerto en el micro. (HardwareProfile.h, MainDemo.c)
Crear una función callback. (CustomHTTPApp.c)
Insertar una variable dinámica en la pagina web. (status.xml, index.html)
Luego compilamos el sitio web con MPFS2.exe, compilamos el proyecto con C18
desde el MPLAB y por último grabamos el firmware y la web en la memoria externa.
18
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
HardwareProfile.h
En este archivo simplemente asociamos un puerto con un nombre fácil de recordar,
por ejemplo si colocamos un LED en RF3 (pin 22 del PIC18F97J60):
#define LED_TRIS
#define LED_IO
(TRISFbits.TRISF3)
(PORTFbits.RF3)
MainDemo.c
Vamos a definir RF3 como salida e inicializarlo en cero. Este proceso está fuera del
loop principal, por lo que solo se va a ejecutar al reiniciar el micro:
static void InitializeBoard(void)
{
LED_TRIS = 0;
LED_IO = 0;
//Continua la inicialización de los otros puertos.
}
19
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
CustomHTTPApp.c
La función callback contiene el nombre y el valor de la variable dinámica ( led) que
va a ser mostrada en la web.
Un error muy común es enviar directamente al buffer Ethernet el estado del led
mediante la variable int LED_IO.
Hay que tener en cuenta que SOLO SE PUEDEN ENVIAR STRINGS POR
ETHERNET, por lo que en numerosas ocasiones usamos itoa o ftoa para convertir
los tipos de dato.
ROM BYTE ESTADO_LED_UP[] = “ON";
ROM BYTE ESTADO_LED_DOWN[] = “OFF";
void HTTPPrint_led(void)
{
TCPPutROMString(sktHTTP, (LED_IO?ESTADO_LED_UP:ESTADO_LED_DOWN));
}
En este caso, en lugar de usar los conversores de tipo, creamos dos variables
auxiliares ESTADO_LED_UP y ESTADO_LED_DOWN para mostrar el estado del
led mediante ON, OFF.
status, index.html
Hay que incluir en el sitio web la variable dinámica led, para esto vamos a modificar
status.xml e index.html:
status.xml contiene todas las variables dinámicas que se actualizan (leds,
temperatura y pulsadores).
Agregamos la línea correspondiente a la nueva variable dinámica:
<led>~led~</led>
20
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Entre <> se indica el nombre del divisor que se va a utilizar en el index para definir la
posición de la variable.
Index.html finalmente es el archivo que ve el usuario final. Donde aparezca <“led”>
el webserver lo va a reemplazar con ON, OFF según el valor de LED_IO.
<span id=”led">?</span> &nbsp;
Es importante detacar que este ejemplo utiliza AJAX para actualizar la información
sin tener que apretar F5 en el explorador. Por lo tanto debemos agregar la siguiente
sentencia al final del index:
document.getElementById(’led').innerHTML = getXMLValue(xmlData, ’led');
21
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
MPFS
Microchip PIC File System es el sistema de archivos que utiliza el micro para leer la
pagina web. Una vez que tenemos nuestro site terminado con los archivos html, jpg
o gif debemos convertirlos al sistema MPFS para luego, poder cargarlos en la
memoria.
La aplicación MPFS.exe convierte el conjunto de archivos que componen la pagina
web a dos formatos posibles:
.bin (para cargar el website en la memoria EEPROM externa)
.c (para cargar el website en la memoria de programa)
Es importante tener en cuenta que al agregar o quitar variables de nuestra web, se
modifica el archivo HTTPPrint.h por lo que hay que volver a compilar el proyecto
antes de cargar la aplicación en el micro controlador.
22
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
MPFSUPLOAD
El MPFS.exe es el programa que convertirá los archivos de nuestra web en el
archivo binario final que es el que utilizará el Micro Core ETH.
Ajustamos los parámetros de seguridad:
23
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Cuando pulsamos OK. El programa nos muestra el resultado:
Hay dos formas de almacenar la pagina web:
1 -En la EEPROM, mediante mpfsupload. Para esto ejecutamos en el explorador de
internet: http://mchpboard/mpfsupload o bien http://169.254.1.1/mpfsupload y
cargamos el archivo MPFSImg2.bin generado previamente con MPFS.exe
2 -En la memoria de programa, para esto necesitamos compilar todo el proyecto
nuevamente (a menos que tengamos un bootloader).
Debemos incluir en el proyecto el archivo MPFSImg2.c generado con MPFS.exe y
comentar la sentencia #define MPFS_USE_EEPROM en el archivo TCPIPConfig.h.
De esta forma estaríamos prescindiendo de la memoria EEPROM externa con el
consecuente ahorro de dinero y espacio físico en la placa. Sin embargo sólo es
posible con paginas web pequeñas ya que la memoria de programa del 18F97J60
queda prácticamente completa con todas las funciones del stack habilitadas.
24
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
SMTP
Para poder enviar emails desde el MCE WebServer debemos habilitar el cliente
SMTP, dejando de comentar la sentencia STACK_USE_SMTP_CLIENT en el
archivo TCPIPConfig.h.
El proceso se puede invocar en cualquier momento, por ejemplo si sube la
temperatura, si se presiona un pulsador, etc. El mail del ejemplo envía el estado de
todas las variables a la dirección que se especifique.
Antes de intentar enviar un mail con la función SMTPSendMail() debemos verificar si
no hay otro mail en proceso, para eso utilizamos en primer término
SMTPBeginUsage() como indica el diagrama.
Si nuestro servidor de correo saliente requiere autorización, utilizamos
SMTPClient.Server, SMTPClient.Username y SMTPClient.Password para setear los
parámetros.
Por último incluimos los campos “De”, “Para”, “Asunto” y “Mensaje” antes de llamar a
SMTPSendMail().
25
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
if(SMTPBeginUsage())
{
// Note that these strings must stay allocated in
// memory until SMTPIsBusy() returns FALSE. To
// guarantee that the C compiler does not reuse this
// memory, you must allocate the strings as static.
static BYTE RAMStringTo[] = "[email protected]";
static BYTE RAMStringBody[] = "Message generated by stack " TCPIP_STACK_VERSION " \r\n\r\nButtons:
3210";
RAMStringBody[sizeof(RAMStringBody)-2] = '0' + BUTTON0_IO;
RAMStringBody[sizeof(RAMStringBody)-3] = '0' + BUTTON1_IO;
RAMStringBody[sizeof(RAMStringBody)-4] = '0' + BUTTON2_IO;
RAMStringBody[sizeof(RAMStringBody)-5] = '0' + BUTTON3_IO;
SMTPClient.Server.szROM = (ROM BYTE*)"mail";
// SMTP server address
SMTPClient.ROMPointers.Server = 1;
SMTPClient.Username.szROM = (ROM BYTE*)"mchpboard";
SMTPClient.ROMPointers.Username = 1;
SMTPClient.Password.szROM = (ROM BYTE*)"secretpassword";
SMTPClient.ROMPointers.Password = 1;
SMTPClient.To.szRAM = RAMStringTo;
SMTPClient.From.szROM = (ROM BYTE*)"\"SMTP Service\" <[email protected]>";
SMTPClient.ROMPointers.From = 1;
SMTPClient.Subject.szROM = (ROM BYTE*)"Hello world! SMTP Test.";
SMTPClient.ROMPointers.Subject = 1;
SMTPClient.Body.szRAM = RAMStringBody;
SMTPSendMail();
MailState++;
}
RESUMEN
Para compilar exitosamente en principio el proyecto ejemplo y luego introducir algún cambio propio de ustedes
deben utilizar el TCP/IP Cconfiguration Wizard del stack de Microchip, que básicamente lo que hace es
modificarnos los códigos .C y .H de forma grafica e intuitiva, Luego de utilizarlo compilamos y descargarmos el
HEX a nuestra placa.
Ahora toca el turno de modificar nuestra Web que cargaremos al Micro Core RTH y que descargaremos a través
del MPFS.exe o utilizaremos la función de file upload que ya tiene nuestro módulo.
1.
2.
3.
4.
5.
6.
TCP/IP Configuration Wizard
Compilacion con MPLABX
Grabacion del Microcontrolador
Conectamos el Micro Core ETH a Ethernet
Convertimos nuestra Web con el MPFS.exe
Descargamos el archivo binario a la memoria del Micro Core ETH
26
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Manuel Obarrio 524
Sarandí (1872)
Bs.As. Argentina
(011) 3971-2126
www.ytdcontrol.com.ar
[email protected]
27
MICRO CORE ETH – Hardware y Microchip TCP/IP Stack

Documentos relacionados