mce microstick ethernet - manual de usuario

28
MCE MicroStick Ethernet Manual de Usuario HARD - TCP/IP STACK MCE MicroStick ETH - Hardware y TCP/IP Stack. Telemetría y Control remoto a través de Ethernet. electronics mc

Upload: mcelectronics

Post on 28-Mar-2016

268 views

Category:

Documents


12 download

DESCRIPTION

Ethernet embebido con PIC de 8 bits utilizando el Microchip TCP/IP Stack. Diseñado y fabricado en Argentina por mcelectronics.

TRANSCRIPT

Page 1: MCE MicroStick Ethernet - Manual de usuario

MCE MicroStick Ethernet

Manual de UsuarioHARD - TCP/IP STACK

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Telemetría y Control remoto a través de Ethernet.

electronicsmc

Page 2: MCE MicroStick Ethernet - Manual de usuario

2

Somos un equipo de profesionales que trabaja con pasión para asegurar que Ud. tenga siempre un producto innovador. Cuidamos los detalles para fabricar herramientas de calidad. Todas nuestros productos son diseñados y fabricados en Argentina.

Este producto cuenta con 1 año de garantía por defectos de fabricación o falla de sus componentes.

Garantía de calidad

Información actualizada on-line:http://www.mcelectronics.com.ar/desarrollos

Suyai AlberstenResponsable del Control de Calidad

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 3: MCE MicroStick Ethernet - Manual de usuario

3

El MCE MicroStick ETH es una herramienta de desarrollo que se puede controlar a través de Internet. Permite monitorear parámetros a distancia (como la temperatura y humedad de una sala, la apertura de una puerta, la velocidad de un motor, etc.)

Además cuenta con salidas digitales para controlar dispositivos externos. Por ejemplo se puede encender un motor, activar una alarma, cerrar una compuerta, apagar una luz, etc.

El usuario final accede a una dirección web donde puede controlar la placa desde una interface gráfica.

Introducción

Información actualizada on-line:http://www.mcelectronics.com.ar/desarrollos

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 4: MCE MicroStick Ethernet - Manual de usuario

4

Layout de componentes

Conector RJ-45

LED Power

Regulador TC1262-3.3

Memoria EEPROM 25LC1024

PIC18F97J60 Stack TCP/IP

Filtro EMI 60 ohm @ 100 MHz

33.0

2 m

m

48.26 mm

MicroStick

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 5: MCE MicroStick Ethernet - Manual de usuario

5

Pin-out versión MicroStick

RF3

RF4

RH0

RH1

RH2

SDO

2SD

I2SC

K2RC

0RC

1RC

2SD

O1

SDI1

SCK1

RJ0

RJ1

RJ2

5V 3.3V

GND

SPI 2

SPI 1

PINES DE

ALIMENTACI

ÓN

RB0

RB1

RB2

RB3 TX RX RE0

RE1

RE2

RE3

RE4

RE5

RE6

RE7

MCL

R3.

3VGN

DRB

7RB

6N

C

USART

PINES DE PROGRAMACIÓN

Se alimenta con 5 o 3.3V de continua a través de los PINES DE ALIMENTACIÓN. No es necesario conectar las dos fuentes, solo requiere una para funcionar, por ejemplo 5V. Si el usuario prefiere alimentar el sistema con 3.3V recomendamos colocar capacitores a la entrada de la placa MicroStick Ethernet.

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 6: MCE MicroStick Ethernet - Manual de usuario

6

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.

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 7: MCE MicroStick Ethernet - Manual de usuario

7

Esquemático

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:

El PIC necesita un XTAL externo de 25 MHz para funcionar correctamente. Si no es posible encontrar esta frecuencia en el mercado local se pueden utilizar los cristales de las placas de red que por lo general son de 25 MHz

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 8: MCE MicroStick Ethernet - Manual de usuario

8

Configuración básica

PINES DE ALIMENTACIÓN

Vamos a realizar las conexiones de hardware y la configuración del software necesaria para conectar la placa a la red. En primer lugar alimentamos el MCE MicroStick con 5 o 3.3v, de este modo se debe encender el LED de 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 mcewebserver.

Para acceder a la interface de usuario, basta con escribir http://mcewebserver 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://mcewebserver o la IP: 169.254.1.1 en el caso de conexión directa a la PC.

MCE MicroStick ETH - Hardware y TCP/IP Stack.

MicroStick

Page 9: MCE MicroStick Ethernet - Manual de usuario

9

Configuración básica

PINES DEL PUERTO RJ

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 RJX con lo cual podemos conectar 3 LEDs en los pines RJ0, RJ1 y RJ2 para controlarlos desde Ethernet.

MCE MicroStick ETH - Hardware y TCP/IP Stack.

MicroStick

Page 10: MCE MicroStick Ethernet - Manual de usuario

10

Esta versión modificada está basada en la distribución original: Microchip TCP/IP stackv4.18. La idea era hacerla compatible con el MCE MicroStick 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 como el 18F4620 (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 necesitamos instalar estos programas :

Microchip MPLAB 8.7XMicrochip C18 Student Edition.Librerías de Microchip para Ethernet.

Todos los ejemplos están compilados con el C18 para el PIC18F9J60 que utiliza el MCE MicroStick.

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.

TCP/IP Stack - Introducción

Descargar librerías de Microchip para Ethernet:http://www.microchip.com/mal

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 11: MCE MicroStick Ethernet - Manual de usuario

11

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

TCP/IP Configuration Wizard

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 12: MCE MicroStick Ethernet - Manual de usuario

12

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 Stack para que el C18 no lo compile. En esta instancia cabe mencionar que el Stack de Microchip está organizado en varios archivos, los encabezados que habilitan los servicios se encuentran en el archivo: TCPIPConfig.h

TCP/IP Configuration Wizard

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 13: MCE MicroStick Ethernet - Manual de usuario

13

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.

TCP/IP Configuration Wizard

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 14: MCE MicroStick Ethernet - Manual de usuario

14

Vamos ahora a definir el nombre de Host, es decir un nombre con el cual identificar 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.

TCP/IP Configuration Wizard

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 15: MCE MicroStick Ethernet - Manual de usuario

15

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.

TCP/IP Configuration Wizard

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 16: MCE MicroStick Ethernet - Manual de usuario

16

Podemos establecer diferentes ubicaciones para almacenar la página web que verá el usuario final de nuestro webserver. 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 MCE MicroStick 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 Stack TCP/IP.

TCP/IP Configuration Wizard

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 17: MCE MicroStick Ethernet - Manual de usuario

17

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.

Compilando el Stack

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 18: MCE MicroStick Ethernet - Manual de usuario

18

Necesitamos, entonces, compilar el Stack, para lo cual abrimos el proyecto TCPIP Demo App-C18.mcp desde el MPLAB y ejecutamos la compilación haciendo click en Build all.

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.mcp ya que vamos a trabajar con un micro de la familia PIC18 (8bits).

Compilando el Stack

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 19: MCE MicroStick Ethernet - Manual de usuario

19

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 pagina 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://mcewebserver).

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

TCPIPConfig.h

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 20: MCE MicroStick Ethernet - Manual de usuario

20

electronicsmc

Funciones

En esta sección vamos a ver como interactuar con el micro desde la pagina web. Voy 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.

Funciones

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 21: MCE MicroStick Ethernet - Manual de usuario

21

electronicsmc

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 (TRISFbits.TRISF3)#define LES_IO (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.

}

HardwareProfile.h

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 22: MCE MicroStick Ethernet - Manual de usuario

22

electronicsmc

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>

CustomHTTPApp.c

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 23: MCE MicroStick Ethernet - Manual de usuario

23

electronicsmc

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');

status, index.html (cont.)

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 24: MCE MicroStick Ethernet - Manual de usuario

24

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 gifdebemos convertirlos al sistema MPFS para luego, poder cargarlos en el micro.

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.

MPFS

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 25: MCE MicroStick Ethernet - Manual de usuario

25

Hay dos formas de almacenar la pagina web:

1 - En la EEPROM, mediante mpfsupload. Para esto ejecutamos en el explorador de internet: http://mcewebserver/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 presidiendo 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.

MPFSUPLOAD

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 26: MCE MicroStick Ethernet - Manual de usuario

26

electronicsmc

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.

SMTP

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 27: MCE MicroStick Ethernet - Manual de usuario

27

electronicsmc

SMTP (cont.)

Por ultimo incluimos los campos “De”, “Para”, “Asunto” y “Mensaje” antes de llamar a SMTPSendMail().

Ejemplo completo:

if(SMTPBeginUsage()){static BYTE RAMStringTo[] = "[email protected]";static BYTE RAMStringBody[] = "Mensaje generado por el MCE WebServer" VERSION " \r\n\r\nBotones: ";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.mcelectronics.com.ar";SMTPClient.ROMPointers.Server = 1;SMTPClient.Username.szROM = (ROM BYTE*)"[email protected]";SMTPClient.ROMPointers.Username = 1;SMTPClient.Password.szROM = (ROM BYTE*)"123456";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*)"Mensaje de prueba";SMTPClient.ROMPointers.Subject = 1;SMTPClient.Body.szRAM = RAMStringBody;SMTPSendMail();MailState++;}

SMTP

MCE MicroStick ETH - Hardware y TCP/IP Stack.

Page 28: MCE MicroStick Ethernet - Manual de usuario

© mcelectronicsBuenos Aires - Argentina

Febrero 2012

MCE MicroStick EthernetManual REV: 21022012

Austria 1760 - OF 8Ciudad de Buenos Aires (1425).BA. Argentina.

(011) [email protected]

www.mcelectronics.com.ar

MCE MicroStick ETH - Hardware y TCP/IP Stack.