1
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Introduccin
El Micro Core ETH es una herramienta de desarrollo que se puede accesar a travs
de Internet. Nos facilita el acceso a informacin de estado de variables digitales,
analgicas, puertos de comunicacin etc.
Tambin nos permite cambiar el estado es decir controlar dispositivos del entorno
como ser lmparas, motores, vlvulas etc. Y como limite nuestra imaginacin.
El usuario accede a un servidor web alojado en el mdulo a travs de una direccin
web, como ser http://mchpboard desde una veloz interface grfica.
La programacin se puede llevar a cabo con diversos lenguajes de programacin.
De fabrica viene con una modificacin del ejemplo proporcionado por Microchip con
su stack TCP/IP y las pginas 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 seales de dos interfaces SPI, la USART, los pines
de programacin para Pickit 2 y Pickit 3.
3
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Esquemtico
La fuente de alimentacin consiste en un regulador TC1262-3.3 de Microchip. La
tensin mxima 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 tambin estn
disponibles en el header ya que se puede multiplexar el BUS SPI a travs 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 tensin, con lo cual no son necesarios componentes externos
mas all de los que se ven en el diagrama:
5
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Configuracin
Vamos a realizar las conexiones de hardware y la configuracin del software
necesaria para conectar el mdulo 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.
Alimentacin
Power
La placa viene programada de fbrica como cliente DHCP con lo cual podemos
conectarla a un ROUTER con DHCP habilitado para que le asigne una direccin 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)
Conexin a PC: conectar un cable UTP/STP cruzado al terminar RJ45.
Conexin 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 conexin
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 estn 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
8
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
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. Adems soporte para el mdulo WI-FI de Microchip o ZeroG.
En esta instancia vamos a agregar Servidor Web, que permite acceder a un pgina
por medio de una direccin IP y Cliente de email mediante el cual podremos enviar
un email automticamente 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 aplicacin sumamente til es hacer un conversor RS232 Ethernet:
as todos los paquetes que ingresen por el conector de red sern retransmitidos por
la UART del PIC y viceversa. De esta forma podemos darle conectividad Ethernet a
sistemas que originalmente solo tenan comunicacin RS232.
Otra funcin interesante es medir el tiempo de viaje de un paquete entre el cliente y
el host, lo que comnmente 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
12
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
13
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Podemos establecer diferentes ubicaciones para almacenar la pgina 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 ms representativas ya que determinan si la pgina 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
cdigo y alojar el StackTCP/IP.
14
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Una vez configurados los parmetros bsicos de nuestra aplicacin a travs 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
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 caractersticas de nuestra
aplicacin 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 pgina 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.
Tambin se puede definir la direccin MAC a travs 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 configuracin de los
registros de la USART, los ADC y la inicializacin de la placa. Por ejemplo
ADCON0=0x0D; // Lnea 1471-Para seleccionar AN3 como entrada analgica.
CustomHTTPApp.c
Por ltimo, el tercer archivo que necesitamos para una aplicacin bsica es
CustomHTTPApp.c, en el cual se encuentran las funciones callback, es decir aquellas
que interactan con la pagina web.
17
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
Funciones
En esta seccin 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 funcin callback. (CustomHTTPApp.c)
Insertar una variable dinmica 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 fcil 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 inicializacin de los otros puertos.
}
19
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
CustomHTTPApp.c
La funcin callback contiene el nombre y el valor de la variable dinmica ( led) que
va a ser mostrada en la web.
Un error muy comn 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 dinmica led, para esto vamos a modificar
status.xml e index.html:
status.xml contiene todas las variables dinmicas que se actualizan (leds,
temperatura y pulsadores).
Agregamos la lnea correspondiente a la nueva variable dinmica:
<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
posicin 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 segn el valor de LED_IO.
<span id=led">?</span>
Es importante detacar que este ejemplo utiliza AJAX para actualizar la informacin
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.
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.
23
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
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 enva el estado de
todas las variables a la direccin que se especifique.
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[] = "joe@picsaregood.com";
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\" <mchpboard@picsaregood.com>";
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 algn cambio propio de ustedes
deben utilizar el TCP/IP Cconfiguration Wizard del stack de Microchip, que bsicamente lo que hace es
modificarnos los cdigos .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 travs
del MPFS.exe o utilizaremos la funcin de file upload que ya tiene nuestro mdulo.
1.
2.
3.
4.
5.
6.
26
MICRO CORE ETH Hardware y Microchip TCP/IP Stack
www.ytdcontrol.com.ar
27
MICRO CORE ETH Hardware y Microchip TCP/IP Stack