Hola a todos!! En esta entrada vengo a hablaros de un proyecto en el que llevo ya varios meses (teniendo en cuenta que hago otras cosas a parte de esto, y solo le dedico un par de horas a la semana). Es un proyecto bastante vistoso y para el cual no hace falta ser un experto en la programación de microcontroladores, aunque si es necesario tener una buena base y algo de experiencia. Como pone en el titulo de la entrada, el proyecto consiste en dotar de comunicación ethernet a un microcontrolador. Esto es, que podemos conectar el micro a una red ethernet, bien con acceso a internet, o bien sin el, y desde una aplicación web monitorear o cambiar el valor de las entradas y salidas del micro. La ventaja de tener una red con acceso a internet es que desde cualquier parte del mundo, podemos saber por ejemplo, que temperatura hay en nuestra habitación y activar o desactivar el aire acondicionado para que cuando lleguemos este a una temperatura prefijada, o encender y apagar las luces de nuestra casa para que parezca que haya alguien y disuadir de esta forma a los posibles amigos de lo ajeno en verano, y así un sin fin de aplicaciones que podemos crear.
Ahora que os he contado todo lo que podemos hacer, ha llegado el momento de contaros el como. En el mercado hay muchos bastantes dispositivos que nos permiten dotar de comunicación ethernet a controladores que, en principio, no disponen de ella, también existen microcontroladores que en su interior ya disponen de el hardware (capa física), necesario para comunicarnos por ethernet. Entre los dispositivos que permiten que controladores se comuniquen por ethernet tenemos del fabriante Microchip el ENC28J60, que mediante un interfaz SPI, permite que un microcontrolador envíe y reciba datos por ethernet a una velocidad de 10Mbps. Microchip tambien nos ofrece microcontroladores que ya disponen de la capa física de la comunicación ethernet, como con la serie 18F94j60, algunos micros de 32 bits de las series PIC32MX6 y 7. En la imagen tenéis uno de los Starter Kit para la serie PIC32 el cual lleva un PIC32MX795 con comunicación ethernet ambebida. Evidentemente no solo microchip fabrica este tipo de microcontroladores, existen muchos ARM que tienen esta posibilidad, como los de NXP, aunque en micros de 8 bits, no se si hay otro fabricante que los haga.
Una vez ya tenemos el hardware que nos va a permitir la comunicación necesitamos un firmware que maneje nuestra comunicación. Para ello, microchip nos da de forma gratuita su TCPIP STACK, el cual podéis descargar desde junto a las demás librerias de microchip aquí. Una vez descargado e instalado, os creará una carpeta en el directorio raiz de vuestro PC. Dentro de esta carpeta tenéis bastantes librerías entre las que podéis encontrar librerías gráficas, librerías para el manejo de pantallas capacitivas, y la que nos interesa, los archivos de la pila TCPIP. El proyecto que os recomiendo escoger, ya que hay varios, es el que llama Demo App.
Como esta librería vale para todas las gamas de microcontroladores de microchip, dentro de la carpeta tenéis muchos proyectos para diferentes series de microcontroladores. En mi casa he cogido el proyecto para PIC18, que utiliza el ENC28J60 (C18-PIC18EX_ENC28.mcp). Una vez abierto el proyecto, lo mejor es empaquetarlo en un zip, y sacarlo de la carpeta de las librerías, ya que de esta forma tendremos todo lo que necesitamos, y no modificamos el archivo original. Una vez empaquetado, lo descomprimimos en cualquier otra carpeta y ya tenemos todo lo necesario para poder hacer nuestro programa de ejemplo.
buenas, tienes un ejemplo para el pic18f4550 con el stack de tcpip
ResponderEliminarHola! pues con el 18f4550 no, pero puedes utilizar el ejemplo con el 18f4685 ya que son microcontroladores muy parecidos. No recuerdo ahora mismo si los pines del módulo SPI son los mismos, de no serlos deberías cambiarlos en el hardwareprofile.h. El no hacerlo con el 4550 es simplemente por espacio, ya que el stack necesita bastante memoria de programa, y el 4550 va justo. De todas formas estoy casi seguro que si que cabrá ya que he visto ejemplos en la web que lo utilizan, aunque te recomiendo que utilices el que he utilizado yo, ya que dobla la memoria del 4550 y es prácticamente igual.
ResponderEliminarUn saludo
buenas noches,,
ResponderEliminaramigo P.trujillo
que es lo que cambio exactamente en el hardware proflie para el pic18f4550
que no lo entiendo de un todo
Hola! pues a ver, lo que tienes que cambiar sobre todo es la disposición de los pines de la comunicación, esto es:
ResponderEliminar#define ENC_SCK_TRIS (TRISCbits.TRISC3)
#define ENC_SDI_TRIS (TRISCbits.TRISC4)
#define ENC_SDO_TRIS (TRISCbits.TRISC5)
que en el 4550 es diferente que en el que utilizo yo, y luego otra de las cosas que has de cambiar son las configuraciones pragma, ya que el PLL del 4550 no funciona igual que el del 4685, y no puedes conseguir de ninguna manera 40MHz sino que debes cambiarlo a 48MHz, es decir, 48000000L. En el datasheet del 4550 tienes como funciona el PLL, por basicamente tienes un divisor (PLLDIV) de frecuencia a la entrada para obtener los 4MHz a los que funciona, y luego obtienes 96MHz que los divides por 2, 3, 4 o 6 (CPUDIV).
Un saludo
AMIGO 2 PREGUNTAS
Eliminar1.¿LA CONFIGURACION DEL 4550 ES SOLO LA QUE ESCRIBISTE?
Y A QUE FRECUENCIA DEBE ESTAR EL PIC , YO EN LO EXTERNO TENGO UN CRISTAL DE 20MHZ PEROINTERNAMENTE A COMO DEBO PORNER ESA FRECUENCIA?
TE AGRADEZCO TU COLABORACION
La configuración es la que pongo, no hay que cambiar nada más en principio, el resto de código solo hace referencia a leds, pulsadores y comunicación serie. La configuración d ela frecuencia es como la exlico arriba y en otro post, si quieres hacer funcionar el PLL del 4550 la frecuencia más cercana a 40MHz es 48 ya que este PLL le metes 4MHz y salen siempre 96, y luego esto lo divides entre 2, 3, 4 o 6 mediante la configuración, por ejemplo, para tu caso, los pragma quedarían así:
Eliminar#pragma config FOSC = HSPLL, PLLDIV = 5, CPUDIV = 2
de esa forma tienes el micro funcionando a 48MHz (48000000L).
hola estoy iniciando en esto de controlar a través de ethernet y me gustaría conocer mas de tu proyecto y ver en que me puedes ayudar
ResponderEliminarHola Macoictk, pues toda la información que pueda darte te la daré. Quiero colgar esta semana o la que viene todos los códigos y archivos del servidor web (tengo que prepararlos ya que hay cosas que no valen), con los códigos y algo de bibliografía que he utilizado yo, así que en el blog habrá bastante información. Si tienes alguna duda escribela en los comentarios de cualquiera de las entradas del servidor.
ResponderEliminarUn saludo.
Exelente blog, muy interesante.
ResponderEliminarFelicitaciones por tus logros, sigue asi!!
Saludos
muchas gracias!!
Eliminaramigo trujillo muy interesante tu información la verdad felicitaciones, si puedes postear el código sería genial.
ResponderEliminarSaludos.
Emanuel
El codigo lo tienes colgado en esta entrada del blog.
Eliminarhttp://mipsandchips.blogspot.com.es/2012/11/servidor-web-desde-cero-archivos.html
un saludo,