¿Por qué la gente crea un servidor web en un microcontrolador?

13

Me he encontrado con personas que crean servidores web utilizando microcontroladores, ¿por qué alguien haría eso? ¿Cuáles son sus aplicaciones? ¿Qué conjunto de habilidades además del lenguaje C se necesita para crear dichos servidores? Tengo mucha curiosidad acerca de estos pequeños servidores que tienen RAM tan pequeña.

quantum231
fuente
Esta pregunta es muy amplia, por favor trate de enfocarse en una pregunta técnica específica.
Kortuk
10
Votación para reabrir. Esta pregunta es lo suficientemente buena.
Nick Alexeev
"Esperamos que las respuestas estén respaldadas por hechos, referencias o experiencia específica, pero esta pregunta probablemente requerirá debate, argumentos, encuestas o discusión extendida".
El fotón
Me alegra que finalmente pueda ver cómo se usa este concepto en la industria. Pero a partir de esto, se genera una nueva pregunta, al ver que implementar un servidor en un uC y luego crear una interfaz de usuario que se ejecute en un navegador de Internet hace las cosas tan fáciles, ¿por qué muchas personas aún recurren a formas más difíciles como USB?
quantum231
@ quantum231 Haga una nueva pregunta si tiene una nueva pregunta. :-)
Anindo Ghosh

Respuestas:

15

He hecho esto en algunos productos. Hasta ahora, la razón ha sido permitir una configuración de campo simple. Cada vez que el producto ya necesitaba estar conectado a ethernet debido a su operación principal. Por lo tanto, el servidor web simplemente se agregó código en el microcontrolador.

La gran ventaja de un servidor HTTP es que no se requiere hardware o software especial para presentar una interfaz de usuario razonable al usuario final. Todos ya tienen un navegador web, por lo que esto no es una molestia para el cliente. Piensa en otras alternativas. Puede proporcionar un puerto RS-232, pero luego debe proporcionar una aplicación personalizada o explicarle a alguien cómo configurar un programa de terminal con la velocidad de transmisión correcta, bits de inicio, bits de parada y paridad. También debe suministrar un cable o esperar que el cliente tenga uno, y alguien tiene que ir a la unidad y conectarse físicamente a ella. USB no tiene el mismo problema de configuración, pero generalmente significaría un micro completamente separado en el producto y allí necesita un programa personalizado para ejecutarse en cualquier plataforma que el cliente pueda tener.

En cuanto a la RAM, eso no es un gran problema para un servidor HTTP. Una pila de protocolo TCP necesita algo de RAM, pero el servidor HTTP no realmente, excepto por los recursos adicionales que puede requerir de la pila de red. Un servidor web necesita principalmente espacio en la ROM, ya que la mayoría de cada página es constante, generalmente con unos pocos valores convertidos en texto e insertados sobre la marcha. Los servidores web para micros pequeños funcionan con sistemas de archivos ROM y secuencias de escape en esos archivos que hacen que se invoque el código de su aplicación para producir cadenas personalizables para su inserción en algunos lugares predefinidos.

Hasta ahora he usado un PIC 18 en todos estos casos. Mientras que menos de 4 kbytes de RAM es una limitación, todavía hay mucho que puedes hacer. El espacio ROM ni siquiera ha estado cerca de un problema. Mi pila de red para el PIC 18 (disponible en mi versión de Herramientas de desarrollo de PIC en www.embedinc.com/pic/dload.htm ) ocupa solo una pequeña fracción del espacio ROM de un 18F67J60, lo cual es una buena parte para tales cosas desde tiene un completo ethernet MAC / PHY incorporado. En un caso, tengo ese PIC como un servidor para 6 conexiones TCP simultáneas. Realmente no es tan pesado como parece pensar la gente.

Olin Lathrop
fuente
Vale la pena señalar que muchos servidores web simples, cuando reciben una solicitud, enviarán inmediatamente todo lo que enviarán en respuesta a la solicitud, cerrarán la conexión y se olvidarán de ella. Esto reduce los requisitos de RAM de TCP, pero pone algunos límites severos a la complejidad de la página web. Es posible diseñar un servidor TCP sin estado que pueda mantener un número ilimitado de conexiones abiertas (lo he hecho), pero tal cosa requeriría un front-end personalizado del lado del cliente. Es más sencillo mantener las cosas lo suficientemente pequeñas como para permitir la operación HTTP sin estado.
supercat
AVISO: Intenté descargar "install_picdev.exe" pero Firefox (o Windows Security Essentials) dijo que era malware. No lo voy a abrir.
ahogen
14

Un contribuyente clave al reciente aumento de la popularidad de los servidores web en microcontroladores es el deseo de acceder a la información del sensor físico (temperatura, humedad, nivel de luz, presencia de monóxido de carbono, etc.) de forma remota, así como hacer que las cosas sucedan en el mundo físico (cambiar en un LED, active una alarma, encienda un extractor de emergencia, encienda una bomba de refrigerante) también de forma remota. Esas son las aplicaciones.

¿Qué mejor manera de lograr un acceso remoto genérico, consistente, independiente del dispositivo e independiente del diseñador que el omnipresente protocolo HTTP, a través de una red IP aún más ubicua? La capa física de comunicación podría ser WiFi, Ethernet cableada o cualquier otra opción conveniente que admita redes IP. Es por eso que se están haciendo servidores web en dispositivos integrados.

Para obtener más información, uno podría buscar el " Internet de las cosas " y ver la amplia gama de procesos de pensamiento que se presenta.

Con respecto a los " pequeños servidores que tienen una RAM tan pequeña ", vale la pena señalar que el protocolo HTTP es lo suficientemente simple como para ser implementado en muy poca RAM, con muy poca potencia de procesamiento. Además, los microcontroladores de hoy en día son comparables o, en algunos casos, más potentes que los procesadores en las primeras computadoras personales en las que las personas implementaron no solo la web, sino que también llevaron a cabo una variedad de tareas interactivas, incluso jugaron juegos.

Anindo Ghosh
fuente
Buena respuesta. Con respecto a las aplicaciones, echo de menos mencionar algunos productos electrónicos de consumo comunes a los que a menudo también se puede acceder y configurar mediante un navegador. Impresoras, televisores, receptores de audio de cine en casa, enrutadores ... Apuesto a que incluso hay máquinas de café accesibles de forma remota :) EDITAR: De acuerdo, algunos de ellos tienen el poder de procesamiento de una PC moderna y no están basados ​​en microcontroladores.
Rev1.0
Agregaría que la elección entre hacer que un dispositivo se comunique a través de HTTP en lugar de otra cosa generalmente es una opción entre hacer que el dispositivo en sí sea un poco más complicado, o requerir que el usuario compre o instale algún hardware o software dedicado para comunicarse con él. Puede ser más barato y más eficiente desde el punto de vista energético construir un sensor de temperatura que utilice un esquema de RF patentado para comunicarse de forma inalámbrica con un dispositivo USB que incluir un adaptador WiFi en el sensor de temperatura, pero este último enfoque evita la necesidad del dispositivo.
supercat
4

Muchos dispositivos en red proporcionan un servidor web para examinar y establecer parámetros de configuración, verificar el estado del dispositivo, etc. Por ejemplo, puedo configurar el enrutador en mi sistema apuntando mi navegador a http:///192.168.0.254(si no recuerdo mal ...).

Pete Becker
fuente
3
  1. Porque ellos pueden.

  2. Porque pueden ser de muy baja potencia. Como debajo de 1W con algunos sorteos pico. Menos de medio amperio. La batería y la energía solar son prácticas, a diferencia de las computadoras más grandes.

  3. Tamaño físico. Un microcontrolador + wifi o chip de ethernet puede ser del tamaño de una memoria USB.

  4. Costo. Un microcontrolador adecuado para esto podría estar en el rango de un solo dólar. Las partes de redes casi tan baratas.

  5. Desechable. Puede ponerlos en proyectos únicos y si mueren, no es tan malo como si una computadora costosa lo hiciera.

  6. Causa justa.

Con el advenimiento de las computadoras en toda regla por decenas de dólares (gratis a $ 100) (shrevaplugs, raspberry pi, teléfonos inteligentes, unidades de memoria linux, dispositivos Android, ROUTERS), probablemente verá menos servidores web de microcontroladores en el futuro, porque hay ya no COST y el tamaño como factor de conducción. Un Raspberry Pi de 35 dólares o un Beaglebone de 45 dólares pueden superar a un escudo Arduino + Ethernet o Wifi en cuanto a costo, rendimiento y facilidad de configuración. Es apenas más grande que el arduino. Lo único que puede hacer el Arduino es una eficiencia de energía de 0.1W (0.5mA a 50 mA de reposo a potencia de computación completa [5v, 16mhz, 100% cpu] solo por ATMEGA) vs 4W para el RPI sin ethernet / hdmi / usb uso en inactivo.

Por lo tanto, los servidores web de microcontroladores pueden funcionar con batería debido al bajo consumo de corriente. Incluso entonces, algunos de los SoC de Linux más nuevos, como un enrutador de bolsillo con un servidor web, pueden estar cerca de ellos.

Transeúnte
fuente
Considere también la familia de microcontroladores MSP430 de Texas Instruments: consumo de energía increíblemente bajo y amplia capacidad para servicio web. Procesamiento de 16 bits. Algunas opciones incluyen redes inalámbricas listas para usar. Tamaño: una placa completa con conectividad inalámbrica puede caber en una memoria USB.
Anindo Ghosh
Estas respuestas solo responden una parte de la pregunta. ¿Por qué lo hacemos? ¿Qué pasa con la siguiente parte; ¿Cómo lo hacemos? ¿Qué habilidades se requieren?
Anshul
1
@Anshul Necesita codificar según la especificación del servidor http, y necesita una pila de red (ip / tcp / udp) o similar, dependiendo de qué IC de red elija.
Passerby
2

La respuesta de Olin es bastante acertada en cada razón por la que he usado un servidor web incorporado. Trabajo desarrollando controles industriales y casi todos los productos que producimos tienen un servidor web incorporado.

La mayoría de los clientes ya tendrán todos sus equipos en su red por varias razones. Por lo tanto, es muy conveniente poder configurarlo y / o controlarlo a través de un navegador web en lugar de instalar docenas de programas personalizados.

Incluso si están utilizando un protocolo industrial como PROFINET , la capa física es la misma que el resto de su Ethernet y luego solo 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.

Con respecto a los recursos (potencia de procesamiento, RAM, ROM), cuando se reduce a lo esencial del oso, se necesita un hardware increíblemente mínimo para servir con éxito una página web. webACE Creo que tiene el récord del servidor web más pequeño. Es una pena que ya no puedas visitar la página que alojó.

chip webACE cable webACE

El software

Algunas estadísticas de código para el software original. Originalmente había olvidado incluir el "eeprom de datos" de 64 bytes en el chip en los totales, lo que condujo 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 otras habilidades necesarias, una comprensión profunda de las redes no es realmente necesaria. Nunca he escrito una pila para ningún protocolo porque hay una gran cantidad de bibliotecas disponibles para vincular y usar para cada arquitectura concebible. Conocer algunos HTML básicos sin formato es útil para diseñar y escribir la página real.

Aparte de eso, ser capaz de leer y comprender un registro de Wireshark o Fiddler (analizadores de red) probablemente será la habilidad más útil, ya que ayudará mucho a depurar cualquier problema que tenga. Una pequeña lectura sobre la estructura de paquetes de cualquier protocolo que esté utilizando (TCP, IP, HTTP, UDP, PROFINET, etc.) le dirá dónde buscar en el paquete cualquier información que necesite. Incluso puede encender uno de esos analizadores en este momento y observar el tráfico que viene y va a su computadora para tener una idea.

Embedded.kyle
fuente
2

Una de las razones es el desafío. Más aún si desarrolla la placa del microcontrolador y / o escribe su propio software.

Brian Carlton
fuente
3
No es un gran desafío. Puede descargar demostraciones que tienen un servidor web incorporado.
Olin Lathrop
1
Sería un desafío si escribiera su propia pila TCP / IP desde cero ...
m.Alin