TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Manofwar en 27 de Marzo de 2006, 13:42:00
-
Os dejo los archivos aquí (http://www.ual.es/personal/salguero/servidorweb/servidorweb.htm) de un micro servidor web que he montado con un 16f84 y el em100 de Tibbo (se puede sustituir por el em202), por si le sirve a alguien como punto de partida para realizar algo más serio.
Debido al poco espacio del 16f84 sólo he podido albergar una página en flash (plano.swf) donde he dibujado algo parecido al plano de una vivienda y unos símbolos de bombillas o focos con el estado de 4 registros del PIC. Al pulsar sobre alguno de estos símbolos cambia el valor correspondiente en uno de los registros del pic y actualiza los estados de las bombillas en el navegador.
En el archivo para Proteus veréis el pic y el puerto serie solamente, esto es así porque el EM100 una vez configurado se comporta como un puerto serie.
Saludos desde Almería
-
Olé Manofwar.
Me lanzo a tu código como un chihuahua a una rodaja de mortadela .... ja ja ja

Estuve viendo las cabeceras HTML para ponerselas a mi invento ... pero como soy un
RAM-ROM Depredator no me cabían .... ja ja ja

Bién por lo amigos de este foro ....

Ya te pediré ampliación de información ....
-
Me alegro que te haya servido de algo el código. Si tienes alguna duda con el protocolo HTTP sólo tienes que pedirlo.
Por curiosidad, ¿qué le estas metiendo al 628 para que no te entre en las memorias que tiene?
Saludos desde Almería
-
Todo un sistema estilo Telnet (que usa un monton de manejo de string y eso es
capaz de comerse toda la memoria disponible, y algo más)
-
Ahora entiendo lo comilón que estas con la memoria, ya he visto la especie de telnet en el foro de C.
Saludos desde Almería.
-
Amigo Manofwar:
Ya tengo en mi poder un par de 16F88 que tienen mas espacio ROM que el escaso 16F628A. Así que ... solicito, pido, ruego, anhelo ....
¿Puedes pasarme las cabeceras de petición HTML para montar el Serv.Web? Intenté hacer una prueba ... atacando mi sistema con un IExplorer y monitorizando lo que recibia el PIC mandandolo al RS232 ... pero los resultados eran un poco confusos. Si tienes lo que envia el IExplorer y lo que debe responder el PIC pues ... mi alegría no tendrá límites. (De HTML si se un poco)
-
Hola RedPic, hoy recibo un par de 16f88, también para mi servidor web.
Bien, pasamos a las peticiones HTTP que es lo que interesa.
La cabecera de petición de una página web comienza con la siguiente cadena ascii:
"GET / HTTP/1.1" + carácter ascii CR (0xD) + carácter ascii LF (0xA)
Esta petición el servidor web la asume como una petición de la página index.htm
Para una petición de un archivo en concreto sería así:
"GET /mi_pagina.htm HTTP/1.1" + carácter ascii CR (0xD) + carácter ascii LF (0xA)
Después de esta línea vienen otras sobre el tipo de archivos que soporta el navegador, navegador y su versión, tipo de conexión, etc. No recuerdo ahora mismo si el final de la petición era CR+LF+CR+LF, esta tarde cuando llegue a casa te lo digo.
De todos modos, en mi código sólo tengo en cuenta la mitad de la primera línea de la petición, que le dice al servidor que es lo que quiere el navegador, al resto ni caso.
Para la cabecera de respuesta del servidor al navegador, lo mínimo que hay que poner para que todo vaya bien con el IExplorer y Mozilla (Netscape),es lo siguiente:
1. Esto le dice al navegador que todo va bien y aceptamos la petición
"HTTP/1.0 200" + CR + LF
2. Aquí le decimos que tipo de archivo vamos a enviar, es en mi caso un flash.
"Content-Type: application/x-shockwave-flash" + CR + LR
pero pueden ser ciento y la madre dependiendo de lo que envíes, ejemplos:
"Content-Type: text/html" + CR + LF
o
"Content-Type: image/gif" + CR + LF
o
"Content-Type: image/jpeg" + CR + LF
3. El tipo de conexión que aceptamos establecer. Esto es importante, de hecho mis problemas con el IExplorer venían por aquí.
"Connection: keep-alive" + CR + LF
Esta respuesta le dice al navegador que mantendremos la conexión abierta. Esta es la forma que por defecto los navegadores solicitan.
"Connection: close" + CR + LF
Esta respuesta le dice al navegador que después de enviarle lo solicitado cerraremos la conexión. Aquí venían mis problemas con el IExplorer. Te explico con un ejemplo:
<html>
Bienvenido a mi web
<img src="mi_imagen_1.GIF">
<img src="mi_imagen_2.jpg">
</html>
En este caso, el navegador al cargar la página html realiza una petición por cada una de las imágenes.
Si después de enviar el html desde el servidor, cerramos la conexión, el IExplorer cierra la conexión también y no realiza las peticiones de las imágenes, quedando incompleto el visionado de la página. Esto no es así en el caso de Mozilla, que sí realiza todas las peticiones correctamente aunque el servidor cierre la conexión cada vez que atiende una petición.
La solución es la conexión keep-alive, así mantenemos la conexión abierta hasta que el navegador cierra la conexión al haber descargado todo lo necesario del servidor.
4. Ahora debemos decirle el largo de los datos, en bytes, que vamos a enviar
"Content-Length: 495" + CR + LF
5. Finalizamos la cabecera con CR + LF y a continuación el archivo o lo que le deseemos enviar al navegador.
No se si te he aclarado algo, cualquier duda ya sabes.
Saludos desde Almería, España
-
Amigo Manofwar:
¡Perfecto! Creo que lo tengo claro ... montaré el 16F88 en la RRBOARD1 e intentaré implementar las cabeceras tal como me has enseñado. Con una página en HTML con un Form con accept's y unos images de Leds para pulsar y encenderlos y apagarlos ... a ver cómo se me da la cosa.
Si me atasco ya te pediré más ayuda ... Vamos a ver si podemos darle nueva vida y bríos al EM202 ...
-
Te he enviado un privado RedPic, pero como no se si funcionan aún, te lo digo aquí tambien. Revisa mi post anterior sobre las cabeceras http se me pasó incluir la línea que envía el servidor con el tamaño de los datos a enviar.
Saludos desde Almería, España
-
Manofwar:
Lo siento pero me he perdido .... :?
¿Me podrías hacer un favor? ¿Te importaría volver a recompilar la info y postear otro mensaje con el asunto completo?
Soy mas bruto que un saco'martillos ... y lo del size ma'desencajao :P
-
Comenzamos con la petición del navegador a nuestro servidor. Esta puede ser de dos formas:
1. "GET / HTTP/1.1" + carácter ascii CR (0xD) + carácter ascii LF (0xA)
Que el servidor debe asumir como la petición de la página index.htm
o
2. "GET /XXXXX.XXX HTTP/1.1" + carácter ascii CR (0xD) + carácter ascii LF (0xA)
Donde XXXXX.XXX es el nombre del archivo que pide el navegador.
Hay más líneas en la petición pero podemos obviarlas.
Ahora la respuesta mínima de nuestro servidor para que todo vaya bien en el IExplorer y en Mozilla-Netscape
1. Esto le dice al navegador que aceptamos la petición
"HTTP/1.0 200" + CR + LF
2. Aquí le decimos que tipo de archivo vamos a enviar, en mi caso un flash.
"Content-Type: application/x-shockwave-flash" + CR + LF
pero pueden ser ciento y la madre dependiendo de lo que envíes, ejemplos:
"Content-Type: text/html" + CR + LF
o
"Content-Type: image/gif" + CR + LF
o
"Content-Type: image/jpeg" + CR + LF
3. El tipo de conexión que aceptamos establecer.
"Connection: keep-alive" + CR + LF
4. Ahora debemos decirle el largo del archivo que vamos a enviar, donde X es el número de bytes.
"Content-Length: X" + CR + LF
5. Finalizamos la cabecera con CR + LF y a continuación el archivo o lo que le deseemos enviar al navegador.
Saludos desde Almería, España
-
Hola como estan, pues que tristeza pero en colombia no se venden los em100, y bueno de todas formas no podria comprarlos porque son muy caros pero me gustaria saber algo:
¿Cómo hacen para meter una web dentro de un pic, porque yo normalmente hag un programa en assembler y luego lo llevo de .asm a .hex y con ese formato lo pongo dentro del pic, pero la verdad no tengo ni idea de como seria con una web
gracias
-
Hola splanishingles, que tal.
Te respondo por aquí también al privado, ya que las preguntas vienes a ser las mismas
1- como haces para poner una web dentro del pic.
Lo primero que debes saber es que la comunicación entre un servidor web y un cliente web (IExplores, Netscape,Mozilla, etc) se realiza en comandos codificados en ASCII. Si lees el post anterior al tuyo donde explico los comandos de petición de un archivo del cliente al servidor web y la respuesta de este, verás que todo es texto perfectamente legible.
Lo segundo es que los módulos de Tibbo son un convertidor de ethernet a rs232, por lo que la comunicación para el pic es como la que realizarías para comunicar tu pic con el rs232 de un pc, sin preocuparte del TCP/IP.
Teniendo esto en cuenta, la cosa es fácil.
Si has comunicado tus pic con el pc, imagino que habrás enviado mensajes de texto codificados en ASCII, del tipo "HOLA", donde se enviarían los siguientes bytes desde el pic al pc:
H=0x38
O=0x4F
L=0x4C
A=0x41
2- como logras que el pic se comunique con la web, de donde salieron esas instrucciones porque en microchip no las encuentro y ademas dime algo mas, yo podria comunicar el pic con una web que este en el pc con este metodo.
Imagino que las instrucciones que no encuentras en Microchip son "GET", "Content-Type", etc, ya que son comandos HTTP.En el link donde tengo los archivos del servidor web, he subido el protocolo de comunicación HTTP donde vienen estas y otras muchas.
Cuando hablas de comunicar un pic con una web en el pc, imagino que te refieres a una página web que está abierta en el cliente web (IExplorer, Netscape,etc). Si es esto lo que preguntas, la respuesta es sí. Es lo que hace mi servidor através de un flash que envía una petición GET con unos parámetros al servidor. Con dichos parametros el servidor cambia el bit correspondiente, que representa el estado de una bombilla/foco y responde enviando una cadena de texto, que el flash interpreta cambiando de color los simbolos de las bombillas/focos en función de si están apagadas o encendidas.
Espero haber aclarado tus dudas.
-
Hola amigo, bueno antes que nada gracias por tu pronta respuesta, debo reconocer que aunque estos foros son para eso, no todo el mundo esta tan dispuesto como tu a brindar tan desinteresada y abiertamente el fruto de su trabajo.
Bueno pues te cuento que sigo sin entender, no se si es que me falte bastante conocimiento o es que debas ser un poco mas explicito.
Cuando yo he comunicado el pic con el pc, lo he echo enviando un caracter ascii al visual basic, cosa que es realmente facil en dicho programa, de hecho hice una estacion meteorologica, pero bueno esto seria mil veces mejor si lograra ponerlo en una web.
Lo del modulo tibbo lo entiendo perfectamente, cuanto no deseariamos todos que el pic tuviera una interface a ethernet.
Pero bueno si no es que no lo capte, la verdad aun no me dices como metiste la web dentro del pic.
y sobre esto:
Imagino que las instrucciones que no encuentras en Microchip son "GET", "Content-Type", etc, ya que son comandos HTTP.En el link donde tengo los archivos del servidor web, he subido el protocolo de comunicación HTTP donde vienen estas y otras muchas.
Como es posible usar comandos http en programacion assembler.
Otra cosita: Cuando uno tiene una pagina en el computador, y quiere que esta sea vista por usuarios de la red WAN tiene que instalar y configurar un servidor web como el apache, como es que logras que el pic sin mas sea servidor web.
Mill gracias
-
Hola spanishingles, perdona por responder tan tarde pero he estado enfermo y no tenía muchas ganas de acercarme al pc. He leido mi post anterior y la verdad es que debo ser más claro. Veamos si esta vez lo consigo.
Los comandos HTTP no es que se usen dentro del ensamblador, sólo se interpretan o se envían como cadena de caracteres ASCII.
Cuando llega una petición "GET /" leo uno a uno los caracteres de la cadena ASCII e interpreto que es una petición de mi página web.
Ahora hay que enviar lo solicitado, que enlaza con tus otras dudas.
Debemos decirle al navegador (IExplorer,Mozilla,etc) que hemos recibido la petición y que le enviamos lo pedido. Esto se hace enviando los comandos HTTP específicos, que tambien son una cadena de caracteres ASCII y están guardados al principio de una tabla en el pic. La tabla continúa con los datos a enviar, en mi caso se envia un archivo flash por lo que he guardado en la tabla todos los bytes que forman dicho flash. Si fuera un jpeg, pues igual guardas en una tabla los bytes del jpeg y los envías cuando sea solicitado el archivo.
Cuando tu estación envía datos al pc será porque el pc le realiza una petición atraves de unos comandos, creados por ti imagino. Pues esto es igual, solo que los comandos de comunicación son HTTP y los datos a enviar están en una tabla.
Espero haberme expresado claramente, pero si en caso contrario no dudes en volver a consultarme.
-
Hola Manofwar te felicito por tu trabajo, es muy bueno en verdad.
Mira te escribo para pedirte tu opinion acerca del circuito de microchip ENC28J60
Segun he leido es una interfaz ethernet controlada por SPI
Mi pregunta es la siguiente:
Si despues de haber leido las caracteristicas de este circuito, ¿¿ crees q sea posible hacer lo mismo q tu hiciste pero usando este circuito en lugar del EM100 ??
Lo q pasa es q no logro conseguir los modulos EM100 aqui en mexico :?, si embargo si consegui el ENC28J60 de microchip :P.
Bueno espero q me puedas ayudar y espero ansioso tu respuesta... :-)
Saludos y suerte :-/ :-/
-
Hola kuauhtemok, siento no poder comentarte nada acera del ENC28J60, ya que aún no lo he podido mirar, aunque está en la lista de cosas por hacer, ya que es una alternativa más barata que los módulos de Tibbo.
El amigo Pacalaconcurso sí que ha trabajado con él y tiene en su web www.sasian.es (http://www.sasian.es) un cliente tpc con Dspic, pero es una modificación del publicado de microchip para C18, así que puede servirte de referencia.
Así que poderse se puede hacer y a un coste menor.
-
gracias le echare un vistaso a pacalaconcurso...
Saludos !! :-/
-
Manofwar,
Tu projecto me parece muy interesante, ademas de ser una forma muy original de evitar el uso de la pila de protocolos TCP - IP, desearia poder acceder a la informacion, pero en el link inicial no estan los archivos, ...estan disponibles ? gracias por tu colaboracion
-
Hola Dulag, ya está arreglado el problema del link.
-
an tenido una novedad del enc28j60 porfavor comenteme como se puede implementar un servidor web con este integrado ya que yo lo estoy investigando para un estacion metereologiaca donde los datos se visualizan a distancia por una intranet o una internet via una pc
-
Siento decirte que por mi parte aún no he mirado el enc28j60 pero hay gente que sí lo está haciendo. Mira estos post http://www.todopic.com.ar/foros/index.php?topic=12451.msg70437#msg70437 (http://www.todopic.com.ar/foros/index.php?topic=12451.msg70437#msg70437)
-
Hola!
El servidor hecho con este pic ¿admite varias conexiones simultaneas?¿cuantas?
Gracias por las respuestas
-
Hola, el módulo em100 sólo admite 1 conexión simultanes, pero otros superiores como el em202p tienen una especie de sistemas operativo llamado TIOS que es configurable por el usuario y acepta hasta 16 conexiones simultaneas en varios protocolos. Aquí (http://docs.tibbo.com/index.html?module_comparison.htm) tienes una comparativa de los diferentes módulos en donde habla de las conexiones simultaneas.
-
buenas soy de venezuela estudiante del iut y quisiera saber donde puedo obtener los em 202 para realizar mis pruebas y ademas tengo entendido por lo que e leido en este foro y distintos hilos que microchip vende enc28j60 pero en venezuela no se consiguen es triste pero sierto. de anticipado gracias por su respuesta.
-
buenas soy de venezuela estudiante del iut y quisiera saber donde puedo obtener los em 202 para realizar mis pruebas y ademas tengo entendido por lo que e leido en este foro y distintos hilos que microchip vende enc28j60 pero en venezuela no se consiguen es triste pero sierto. de anticipado gracias por su respuesta.
tal vez se lo puedas encargar a la persona de www.electronica.com.ve o preguntar en mercadolibre
-
en mercado libre no lo e conseguido y en la tienda de margarita que me dices tampoco lo tienen. ademas lo consegui en colombia y cuesta 250000 pesos colombianos :shock: :shock: :shock: :shock:
-
Os dejo los archivos <a href="http://www.ual.es/personal/salguero/servidorweb/" target="_blank">aquí[/url] de un micro
El enlace no sirve.
-
el enc28j60 lo encarge por electronica.com.ve me costo 60mil Bs me tardo dos semanas puedes pedir cualquier micro, me compre 2 enc28j60 y 3 ATmega128 TQFP, loas atmet son muy baratos saludos
-
hola Manofwar,
a mi tambien me guataría poder mirar los archivos pero el enlace esta roto,
como los puedo conseguir
muchas gracias
-
Arreglados los enlaces.
Saludos
-
A mi no me funcionan... :? :? :( :(
Dispongo de un EM202 y quiero probarlo a ver como va el servidor, pero el enlace a tu proyecto no me funciona...
Podras pasarmelo por privado, si no es molestia?? :mrgreen:
-
A mi tampoco me van los enlaces...
Los podrias arreglar por favor
Gracias de antemano
-
Ahora sí funcionan.
Saludos
-
OK, que mas necesita la simulacion para funcionar??
Alli en el dsn esta declarado un programa llamado picback.asm, que no esta en donde nos dejaste el link...
Que diferencia tiene con el original?? :mrgreen:
-
Hola, me llamo Carlos y soy nuevo en este foro. Algunas cosas no las entiendo en cuanto al funcionamiento del mismo. Por ejemplo cuando quiero descargar un código o un manual tcp que han puesto a disposición, me dice algo que no me permite descargarlo.
Si bien hace bastante que no se publica en este tema, intento, solicitar los códigos y el manual para descargarlo.
Quisiera saber si en Argentina han conseguido el em100 y donde.
Si obtengo respuesta les realizare otras preguntas que seguramente ustedes tendrán respuesta.