miércoles, 27 de junio de 2012

Servidor WEB desde cero. (I)

Hola! en entradas anteriores ya os hablé de la comunicación ethernet y los microcontroladores PIC, y de lo fácil que es crear nuestro propio servidor web sencillo con un par de circuitos integrados. En la prueba que hice, utilicé el microcontrolador PIC18f6723, el cual es de la misma familia que los PICs para los que está preparado el STACK TCPIP de Microchip. Como ya os dije, mi idea es adaptar el stack para un PIC18F4685, el cual tiene 96k de memoria, más que suficiente para alojar el stack, y una página web, y principalmente por esa característica por la que lo he elegido.
Durante una serie de entradas, voy a contaros como voy construyendo un servidor WEB completamente desde cero. Ahora mismo tengo una mini placa (Breakout Board), con un ENC28J60, que es el que veis en el video donde hice la primera prueba del stack, pero si utilizo esta placa, mi servidor será un conjunto de placas que es poco práctico, mi idea es montarlo todo sobre una sola placa diseñada completamente por mi. Hace varias semanas que pedí todo el material por internet y hoy me han llegado los últimos elementos que me faltaban. Os pongo aquí la lista de los componentes principales.
  1. PIC18LF4685: Como ya he comentado he elegido este micro por su cantidad de memoria (96k). Además es de la serie LF para que funcione a 3,3 voltios, y de esa forma no tener que adaptar los niveles al ENC28J60. Su precio es de 0 euros, ya que lo podemos pedir como muestra en microchip.
  2. ENC28J60: Será nuestro interfaz entre el microcontrolador, y la red ethernet, es el mismo que utilicé e´n la prueba solo que esta vez, como he comentado, tendré que montarlo yo con todos los componentes. Su precio, al igual que el microcontrolador es de 0 euros, ya que también lo podemos pedir de muestra en microchip.
  3. Conector Ethernet con transformadores: Con este conector he tenido un problema, y es que en un primer pedido, compre 10 conectores Ethernet por 2 euros, una ganga pensé yo, pero el problema es que estos conectores venían sin transformadores de aislamiento, por lo que no valían, a menos que comprara  aparte los transformadores, así que busqué de nuestro y vi uno por 0,5 dolares, un precio muuuy bajo, ya que suelen estar por 3 o 4 dolares, y este es el que me ha llegado y el que voy a utilizar. Es de la marca HANRUN, y es el modelo HR911102A. Su precio, 0,4 euros.
  4. Oscilador de 25MHz: Para hacer funcionar el ENC, hace falta un oscilador de 25MHz, como no es un oscilador muy corriente, no tenia ninguno y tuve que comprarlos también. 10 osciladores me costaron 2 dolares. Su precio en euros 1,4 euros.
  5. Zócalos 40 y 28 pines: Es importante utilizar zócalos ya que si nos cargamos el integrado, no tenemos más que sustituirlo, sin desoldar nada, a parte evitaremos recalentamientos al soldarlos a la placa. Su precio 5 x 40 pines 0,7 euros, 10 x 28 pines, 1.7 euros.
  6. Placa PCB: La placa no la he comprado porque tenia por casa, aunque no son fotosensibles. Cuando tenga diseñada la placa, pensaré si utilizo estas, o compro unas fotosensibles, todo depende de la complejidad con la que me salga.
Los demás elementos como pines de conexión, oscilador para el pic y demás no superarán 1 euros, así que a falta del PCB, el precio aproximado es de 4,5 euros, teniendo en cuenta que con este material podemos montar más de uno.
2012-06-27-237
Bién lo próximo será diseñar la placa. La placa quiero que se alimente bien con pilas, o bien mediante un adaptador, por lo que tendrá 2 conectores de alimentación, y cada uno con el regulador apropiado. Espero hacer el diseño para que las dos fuentes puedan funcionar con el mismo regulador. En principio, la placa no tendrá casi ningún periférico, a excepción de un par de leds que nos indiquen el estado del servidor. La placa no va a disponer de un LCD alfanumérico, aunque si que me gustaría que se comunicara con un PC que haga de terminal, en el cual nos indique la dirección IP del servidor, y su estado. Esta comunicación podría ser mediante bluetooth, de forma que si alimentamos con pilas, y nos comunicamos inalámbricamente, tan solo haga falta un cable que vaya al router.
Como he dicho, la placa no va a tener periféricos embebidos, aunque si que tendrá acceso a un puerto completo del microcontrolador, todavía no se cual, pero de esta forma podremos pinchar la placa en otra y controlar por ejemplo unos relés.
Bién pues esta es mi idea inicial, supongo que luego, conforme vaya avanzando el proyecto, irán cambiando cosas, como por ejemplo el micro a utilizar ya que, si este me da muchos problemas, mucha gente ha hecho funcionar el stack con otro microcontrolador de 40 pines, aunque con menos memoria.
Espero que dentro de un tiempo os pueda mostrar este servidor terminado.

12 comentarios:

  1. Tambien podrias alimentarla por PoE:
    http://litox9.wordpress.com/2010/04/02/il-estandares-de-almentacion-i-poe/
    Los inyectores de PoE están baratos y te ahorrarías el conector de alimentación. Lo que no se si en ese conector con transformadores están también con transformador las patillas de PoE, es cosa de mirarlo.
    Saludos

    ResponderEliminar
  2. es una idea interesante, he visto que puede utilizar pines sin conectar del conector RJ45, pero como tu dices, no encuentro nada referente a los transformadores de aislamiento, quizás utilizando transformadores externos se pueda utilizar de forma más sencilla. Me parece una idea muy buena para por ejemplo alimentar una red de sensores ethernet. Gracias!

    Un saludo.

    ResponderEliminar
  3. Quiero decir que si el conector de ethernet tiene transformadores de aislamiento al ser corriente continua no va a circular, otra cosa es que si el conector es lo mas sencillo posible y solo aisla los pines que transmiten datos esa suerte que tienes.
    He estado mirando como están esos conectores: http://datasheet.seekic.com/datasheet/HR911102A.html
    los unicos que no lo tienen todo con transformadores son un tipo 7 u 8 pero aún así no creo que puedas acceder a los pines que están sin conectar.

    ResponderEliminar
  4. Muy bueno el material te voy siguiendo porque me interesa este tipo de proyectos.
    Gracias por compartir tus conocimientos.

    ResponderEliminar
  5. Me encanta que te interese lo que escribo. Bienvenido ;)

    ResponderEliminar
  6. Gracias, estoy investigando el tema me gustaría comenzar con solo encender un led desde una pagina web pero no se por donde comenzar. Compre la placa pic web de Olimex basada en el pic 18F67J60, y trae un ejemplo de un servidor web, enciende un led, monitorea un sensor de temperaratura, el estado de un pulsador y de un potenciometro. Encuentro que es mucha info como para comenzar. Si tienes un ejemplo mas sencillo para arrancar como el de encender un led te agradezco que me lo envíes a amatute@adinet.com.uy. Saludos.

    ResponderEliminar
  7. Ya tengo el stack funcionando en el PIC que queria, me queda perfilar algunos detalles, como lo de manejar bien una salida desde internet. En la próxima entrada que hable de la comunicación ethernet mostraré los pasos para hacerlo funcionar en un PIC que no es de la familia 8722, y como monitorear entradas y manejar salidas :)

    ResponderEliminar
  8. Olvide mencionarte que tengo hecho un especie de control remoto usando un modulo gsm y mensaje de textos. El corazon del proyecto es un pic 16f886 programado en ccs, si te interesa lo puedo compartir.

    ResponderEliminar
  9. Excelente quisiera saber si este proyecto lo puedo implementar simplemente con pic 18f4550 o 18f2550 y el enc 28j60 encapculado de esta pagina https://www.google.com.pe/search?q=enc28j60&espv=210&es_sm=93&biw=1280&bih=638&tbm=isch&tbo=u&source=univ&sa=X&ei=JpfiUvrKD6evsASO-IGgBw&ved=0CCkQsAQ#facrc=_&imgdii=_&imgrc=FDmR2JtgUARPhM%253A%3BC0sJOg_xVWBZ4M%3Bhttp%253A%252F%252Fwww.openhacks.com%252Fuploadsproductos%252Fenc28j60_ethernet_interface_module1.jpg%3Bhttp%253A%252F%252Fwww.openhacks.com%252Fpage%252Fproductos%252Fid%252F56%252Ftitle%252FModulo-Ethernet-ENC28J60%3B500%3B375

    ResponderEliminar
    Respuestas
    1. Hola Felix David, en esta entrada http://www.mipsandchips.com.es/2013/02/servidor-web-en-18f4550.html intenté hacer caber el stack de microchip en un PIC18F4550 y despues de deshabilitar todos los módulos, aun así no cabia en el PIC, lo siento, quizás con otro Stack si que puedas.Gracias por pasarte
      Un saludo.

      Eliminar
  10. Me encanta el tema aunque es de hace mucho tiempo como te fue el montaje?
    Me encantaría poder diseñar una página web y controlar mi sistema de riego
    Gracias por tu buen trabsjo

    ResponderEliminar