Me he encontrado con gente que crea servidores web usando microcontroladores, ¿por qué alguien haría eso? ¿Cuáles son sus aplicaciones? ¿Qué habilidades, además del lenguaje C, se necesitan para crear tales servidores? Tengo mucha curiosidad por estos pequeños servidores que tienen una RAM tan pequeña.
Respuestas
¿Demasiados anuncios?Uno de los factores clave del reciente aumento de la popularidad de los servidores web en los microcontroladores es el deseo de acceder a la información de los sensores físicos (temperatura, humedad, nivel de luz, presencia de monóxido de carbono, etc.) a distancia, así como de hacer que ocurran cosas en el mundo físico (encender un LED, activar una alarma, encender un extractor de emergencia, encender una bomba de refrigerante) también a distancia. Estas son las aplicaciones.
¿Qué mejor manera de conseguir un acceso remoto genérico, coherente, independiente del dispositivo y del diseñador que el omnipresente protocolo HTTP, a través de la aún más omnipresente red IP? La capa física de comunicación puede ser WiFi, Ethernet por cable o cualquier otra opción conveniente que admita la red IP. Por eso se están haciendo servidores web en dispositivos integrados.
Para más información, se puede buscar el " Internet de los objetos " y ver el amplio abanico de procesos de pensamiento que suscita.
En cuanto a la " servidores diminutos que tienen una memoria RAM tan pequeña ", cabe destacar que el protocolo HTTP es lo suficientemente sencillo como para poder implementarlo en muy poca RAM, con muy poca potencia de procesamiento. Además, los microcontroladores actuales son comparables, o en algunos casos más potentes, a los procesadores de los primeros ordenadores personales en los que se ha implementado no sólo la web, sino que también se han llevado a cabo diversas tareas interactivas, incluso se ha jugado.
La respuesta de Olin da prácticamente con todas las razones por las que he utilizado un servidor web integrado. Trabajo desarrollando controles industriales y casi todos los productos que producimos tienen un servidor web integrado.
La mayoría de los clientes ya tienen todos sus equipos en su red por diversas razones. Así que poder configurarlo y/o controlarlo a través de un navegador web en lugar de instalar docenas de programas personalizados es muy deseable.
Incluso si utilizan un protocolo industrial como PROFINET La capa física es la misma que el resto de su Ethernet y entonces sólo necesitan una pieza de software (un supervisor PROFINET IO) para controlar docenas de máquinas. En mi experiencia, esta configuración es bastante estándar en muchas industrias.
En cuanto a los recursos (potencia de procesamiento, RAM, ROM), cuando se reduce a lo esencial, se necesita un hardware increíblemente mínimo para servir una página web con éxito. webACE Creo que tiene el récord de servidor web más pequeño. Es una pena que ya no se pueda visitar la página que albergaba.
El software
Algunas estadísticas del código del software original. Originalmente había olvidado incluir la "eeprom de datos" de 64 bytes en el chip en los totales, lo que llevó a la cifra de 1010 bytes citada en TBTF.
Startup 36 bytes Serial 179 SLIP 91 IP 144 ICMP 47 TCP 188 Checksum 132 Application 257 Total 1074 bytes Comprising: 454 instructions 912 instruction bytes 162 data bytes 2.01 bytes/instruction average
En cuanto a otros conocimientos necesarios, no es necesario tener un conocimiento profundo de las redes. Nunca he escrito una pila para ningún protocolo porque hay una plétora de bibliotecas disponibles para ser enlazadas y utilizadas para cada arquitectura concebible. Saber algo de HTML básico es útil para diseñar y escribir la página real.
Aparte de eso ser capaz de leer y entender un registro de Wireshark o Fiddler (analizadores de red) será probablemente la habilidad más útil, ya que le ayudará en gran medida a depurar cualquier problema que tenga. Un poco de lectura sobre la estructura de paquetes de cualquier protocolo que estés utilizando (TCP, IP, HTTP, UDP, PROFINET, etc.) te dirá dónde buscar en el paquete cualquier información que necesites. Incluso puedes encender uno de esos analizadores ahora mismo y ver el tráfico que entra y sale de tu ordenador para hacerte una idea.
Primero observa
$f(x,y,\theta ) = \frac{1 - y/x}{\tan \theta + y/x} $ .
Entonces $ 1 - y/x = f * (\tan \theta + y/x)$ , $\tan \theta = (1 - (1+f) y/x) / f$ y
$ \theta = \tan^{-1} \left( \frac{1 - (1+f) \frac{y}{x}}{f} \right) $ .
Por supuesto, todo esto supone $x\neq 0$ y $\cos \theta \neq 0$ . Te dejo que descubras cómo tratar esos casos.