Hola a todos!! por fin después de bastante tiempo, puedo decir que mi pequeño servidor web esta listo, y comienza una nueva fase que es la fase de experimentar con el. Si habéis seguido el blog, desde hace tiempo, en una serie de entradas que podéis encontrar con la etiqueta Servidor Web, he estado contando como he diseñado un servidor web desde cero, el cual, lleva un PIC18LF4685 como núcleo central. Este microcontrolador, es un micro de gama media-alta de 8 bits, el cual he elegido porque dispone de 96k de memoria de programa. En la primera de las entradas fijamos unos objetivos, de los cuales unos se han conseguido, pero otros no, y en las siguientes entradas os expliqué como diseñar la parte del firmware que llevará dentro nuestro microcontrolador. Todos estos avances, aunque no os lo he mostrado, los estaba verificando sobre una placa de board de prototipos, en la cual estaba montado el micro, y una break-board que contenía toda la circuitería del controlador Ethernet ENC28j60. Este tipo de montaje está muy bien para probar, pero no para experimentar a fondo, así que, si ya teníamos los materiales, y habíamos preparado el firmware del circuito lo único que nos faltaba es llevar nuestro proyecto a una PCB.
Evidentemente, ya que vamos a fabricar una placa, lo ideal sería que tanto la parte del microcontrolador, como la parte del controlador Ethernet estuvieran montados ahí. La parte del microcontrolador no entraña ninguna dificultad, es simplemente el micro, y algunas entradas y salidas, todo esto corriendo con un oscilador de 10MHz, la parte más complicada del diseño, y que tenia dudas de que funcionara es la parte del ENC. En la siguiente figura os muestro el esquema de conexión que podemos encontrar en su datasheet.

Como ya os dije, un elemento fundamental de nuestra placa es el conector Ethernet, y este , tal y como vemos en el esquema, necesitamos que disponga de transformadores de aislamiento, y así ha sido, por lo que nuestro trabajo d diseño, comienza desde los transformadores hacia la izquierda. lo primero que vemos es una bonina que viene nombrada como Ferrite Bread, que tal y como nos dice en la nota 3 sirve para eliminar interferencias. Como no encontré un valor claro por ningún sitio, y había leído que era un elemento prescindible, así he hecho, por lo que no la encontrareis en mi diseño. Si seguimos mirando hacia la izquierda, el otro elemento que llama la atención, son las resistencias de 49,9 con una tolerancia del 1%. Estas resistencias, aunque las encontré por internet, y puesto que no son más que resistencias de pull-up y pull-down, decidí sustituirlas por dos resistencias en serie, una de 10 y otra de 39, con lo que tengo unas resistencias de 49 ohms, eso si, con una tolerancia del 1%. Y si bajamos la vista un poco, vemos una resistencia de 2,32k, que al igual que las otras he sustituido por dos resistencias de 2k2 y 120 ohms, lo que hacen 2k32, que es lo que nos pide. Los leds, en mi caso, van incluidos en el conector, y las resistencias son de 220 ohms. Por último, como estoy utilizando un PIC de la serie LF, y lo alimento con 3,3 voltios, el Level Shift Logic no es necesario.
Cualquiera podría pensar que, tomando todas esas suposiciones, es muy difícil que el proyecto funcione, y así pensaba yo también, aunque no siempre las cosas son como esperamos!! y para no haceros esperar más, a continuación teneis unas fotos de mi SERVIDOR WEB. En primer lugar teneis una foto de como quedó el PCB recién pasado por el ácido.
Y a continuación, tenéis una foto del servidor completamente montado.
Como veis, tenemos el PIC arriba, y perpendicular a este tenéis el ENC, ambos con encapsulado PDIP. Y por último un video de funcionamiento.
Bien, por último os quiero contar una serie de problemas que he tenido y como los he solucionado, en primer lugar, había un pequeño error en el esquema inicial, por lo que la fuente de alimentación de 3,3 voltios integrada no funciona bien, de hecho en el video veis una mini placa que hay con un regulador, ese problema en los archivos que os adjunto está solucionado, otra cosa que pasaba es que el servidor no funcionaba siempre, es decir, lo conectaba una vez y funcionaba, y a los 2 minutos los volvía a conectar y no funcionaba, esto, en principio, lo he achacado a que en un primer momento estaba habilitado el AUTO_IP, de forma que es mi PC es que le da la IP, al quitarlo, y dejar preasignada la IP, el problema se ha solucionado y ahora funciona siempre. Como veis, la página web que utilizo en el video es la que había programado ya antes, por lo que solo manejo un led, además que la lectura de la temperatura es completamente errónea, ya que no hay nada conectado a esta, más adelante crearé una página web exclusiva para esta placa, y os dejaré el firmware completo para que lo podáis descargar, por ahora os voy a dejar el esquema utilizado y el PCB para que, si queréis, podáis fabricaros uno vosotros.
Por último deciros que aquí acaba la primera fase, y ahora que tengo una herramienta sólida con la que trabajar podré realizar diseños más complejos. También quiero dar las Gracias a mi novia Elena que me ha estado aguantando estos últimos días dejándome que le mostrara cada avance que conseguía.
Felicidades!!!me parece un gran trabajo,yo estoy con algo parecido con 18f67j60 y me "pierdo" en los ejemplos de michochip con tantas opciones de hardware y ucontroladores.Gracias por toda la información que nos das!!!.Un saludo
ResponderEliminarGracias!! si crees que te puedo ayudar en algo no dudes en preguntar! Un saludo
Eliminar¡¡¡Felicidades!!!
ResponderEliminarPor fin hecho realidad y funcionando. Supuestamente ya se queda con la V del Servidor.
Buen trabajo.
Muchas gracias Meta!!! ha costadoi pero al final ahi está jajaja!!
EliminarUn saludo.
AMIGO BUENAS NOCHES
ResponderEliminarME PODRIAS DAR UNA AYUDA ES QUE NO ENTIENDO E HARDWARE PROFILE PARA EL PIC18F4550 QUE ES UNICO QUE TENGO
TE AGRADESCO
...muy buen trabajo "P. Trujillo"...eres un maestro, te felicito!!!... lamento molestarte después de este largo trabajo, pero tengo una consulta con respecto al servidor:
ResponderEliminarEs posible conectarse al servidor desde cualquier parte, o debe ser desde la red local?. Si es desde cualquier lugar, como haces con el tema de la ip dinámica?...yo vivo en chile y acá los proveedores de internet solo dan ip's dinámicas a los domicilios...no sé cómo se hace para encontrar el servidor si se está conectado a un moden/router que cambia su ip.
De antemano agradezco mucho tu respuesta.
Atte.
Sergio
Hola Sergio! Muchas gracias y por supuesto no es ninguna molestia. Las compañías para ahorrarse IPs dan a todos IPs dinámicas, en Chile y aquí en España también. Para tener un IP estática (o al menos que lo parezca) tienes que redirigir tu IP mediante un servidor DNS, el cual redirige tu ip dinámica, a un host que es siempre el mismo. Estos servidores DNS los puedes encontrar en internet de forma gratuita, por ejemplo en http://www.noip.com/. La verdad es que nunca lo he utilizado, pero encontrarás bastantes manuales de como utilizarlo en la red. De todas formas, los proveedores cambian la IP si tu desconectas el router, así que podrías hacer pruebas mirando tu ip global e intentando acceder a esta desde fuera de tu red, esto, como he dicho solo valdría para hacer pruebas ya que en el momento desconectes el router tu ip cambiará. Gracias por pasarte por aquí!!
EliminarUn saludo.
Pablo.
Hola disculpa trate de compilar el demo con maplab 8.85 y c 3.38 lite, y me salen errore diciendo que no estan actualizados varios archivos. Despues compile el demo pero para el pic 8722, y lo compila bien la pila que utilize fue la 2013-02-15.
ResponderEliminarEl primer demo fue el del rar que pusiste
EliminarHola! pues no se lo que quiere decir que no están actualizados varios archivos. Por el segundo comentario entiendo que el demo que si que compila es el las Microchip application libraries... ¿no?. El pic que yo utilizo en mi ejemplo no es ese, sino el 18f4685, no se si mi ejemplo lo compilaste para ese pic o para otro. De todas formas si consigues que funcione con uno de los ejemplos de microchip, una vez tengas uno funcionando no es difícil personalizarlo siguiendo las entradas que escribí sobre monitorización web y control web. Gracias por pasarte.
EliminarUn saludo!
ya amigo muchas gracias!!!! lo que paso fue que algunos archivos se quedaron con la ruta que tenian en tu compudara, y las redireccione todas excepto una. Despues de corregirla bam pude compilarla.
EliminarMuchas gracias
Un muy buen trabajo
Disculpa una ultima pregunta donde puedo investigar " para recuperar los datos, que se enviaron desde la página por medio del metodo post".
Saludos
Hola!, pues no he utilizado ese método, pero te dejo un enlace donde lo explican.
Eliminarhttp://www.microchip.com/webinars.microchip.com/WebinarDetails.aspx?dDocName=en543038
Un saludo.
Gracias estuvo bueno xD.. Disculpa ya pude hacer funcionar todo con el mismo pic18f4685, pero solo que en las variable dinamica no cambia el estado. Estuve checando la pagina que creo microchip para sus kits y utiliza Ajax Y java script para cambiarlo estoy trantando de hacer eso pero crees que necesite cambiar algo del codigo donde se llama la funcion temperatura???. Por que igual cheque y tienen la funcion de la misma forma, pero con "pot".
Eliminarjiji pon un foro xD
La diferencia entre utilizar ajax y no es que la página no actualiza el valor de las variables si no actualizas toda la página, es decir, si no lo utilizas, el valor de la variable se escribe en el código html de la página, mientras que si utilizas ajax, es el mismo navegador el que ejecuta la rutina de actualización de las variables, sin necesidad de que el usuario actualice la página web. También puedes hacer que la página se actualice cada, por ejemplo, 5 segundos, de esa forma el valor de la variable si que se actualizará.
EliminarUn saludo.
Ah! y el codigo si que cambia bastante. Para hacerlo como yo, puedes seguir esta entrada:
Eliminarhttp://www.mipsandchips.com.es/2012/07/servidor-web-desde-cero.html
respecto a lo del foro estaria bien, pero no tengo servicio de hosting... quizás me lo plantee más adelante ;)
Hola P. Trujillo la verdad me gustaria aprender como hacer una interfaz grafica web o poder monitorear algo desde la web, yo compre el modulo ethernet ENC28J60 y tengo un pic 16F877a y un rs232 usando esos materiales que podria hacer la verdad soy principiante en esto he leido muchos foros pero no entiendo me es complicado porque ya todo lo dan hecho me gustaria aprender desde el principio lo unico bueno es que tengo el modulo ya hecho y el pic y el rs232.
ResponderEliminarGracias por tu atencion