¿Por qué las personas crean un servidor web en un microcontrolador?

13

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

    
pregunta quantum231

6 respuestas

14

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 por la razón de 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 ningún 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 explicar 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 tiene que suministrar un cable o esperar que el cliente tenga uno, y que alguien tenga que ir a la unidad y conectarse físicamente a ella. USB no tiene el mismo problema de configuración, pero en general significaría un micro completamente separado en el producto y allí necesita un programa personalizado para ejecutarse en cualquier plataforma que tenga el cliente.

En cuanto a la RAM, eso no es un gran problema para un servidor HTTP. Una pila de protocolos TCP necesita algo de RAM, pero el servidor HTTP no lo es realmente, excepto por los recursos adicionales que puede requerir de la pila de red. Un servidor web en su mayoría necesita espacio en ROM, ya que la mayoría de las páginas son constantes, generalmente con unos pocos valores convertidos en texto e insertados al vuelo. Los servidores web para micros pequeños trabajan con sistemas de archivos ROM y secuencias de escape en aquellos archivos que hacen que se llame a su código de 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. Si bien la limitación de menos de 4 kbytes de RAM es una limitación, todavía hay mucho que puede hacer. El espacio de ROM ni siquiera ha estado cerca de un problema. Mi pila de red para el PIC 18 (disponible en la versión de mi PIC Development Tools en www.embedinc.com/pic/dload.htm ) toma solo una pequeña fracción del espacio ROM de un 18F67J60, que es una buena parte para esas cosas, ya que tiene un completo ethernet MAC / PHY incorporado. En un caso tengo que el PIC es un servidor para 6 simultáneos Conexiones TCP. Realmente no es tan pesado como la gente parece pensar.

    
respondido por el Olin Lathrop
14

Un contribuidor clave al reciente aumento en 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 manera remota, así como hacer que las cosas sucedan en el físico mundo (encienda 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 el acceso remoto genérico, consistente, independiente del dispositivo, independiente del diseñador que el omnipresente protocolo HTTP, a través de la red IP aún más ubicua? La capa física de la comunicación podría ser WiFi, Ethernet por cable o cualquier otra opción conveniente que admita redes IP. Es por eso que se están realizando servidores web en dispositivos integrados.

Para obtener más información, se puede buscar el " Internet of Things " y ver la amplia gama de procesos de pensamiento que trae hasta.

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 capacidad de procesamiento. Además, los microcontroladores de hoy en día son comparables a, o en algunos casos, más potentes que los procesadores de las primeras computadoras personales en las que las personas han implementado no solo la web, sino que también han realizado una variedad de tareas interactivas, incluso juegos. >     

respondido por el Anindo Ghosh
4

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

    
respondido por el Pete Becker
3
  1. Porque pueden.

  2. Porque pueden ser de muy baja potencia. Al igual que en 1W con algunos sorteos de picos. Menos de la mitad de un amplificador. 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 unidad de disco USB.

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

  5. Desechable. Puedes ponerlos en proyectos únicos y, si mueren, no es tan malo como lo hace una computadora cara.

  6. Causa justa.

Con el advenimiento de las computadoras en toda regla por decenas de dólares (gratis a $ 100) (shrevaplugs, frambuesa pi, smartphones, linux thumb drives, Android Sticks, ROUTERS), probablemente verá menos servidores web con microcontroladores en el futuro, Porque ya no hay COSTO y tamaño como factor de conducción. Una Raspberry Pi de 35 dólares o un Beaglebone de 45 dólares puede superar a un Arduino + Ethernet o un escudo Wifi en costo, rendimiento y facilidad de configuración. Es apenas más grande que el arduino. Lo único que puede hacer el arduino sobre esto es la eficiencia de potencia 0.1W (0.5mA a 50 mA en espera a la potencia de cómputo completa [5v, 16mhz, 100% cpu] solo por ATMEGA) vs 4W para el RPI sin Ethernet / hdmi / usb uso en modo inactivo.

Por lo tanto, los servidores web de microcontroladores pueden funcionar con baterías 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.

    
respondido por el Passerby
2

La respuesta de Olin casi llega a todas las razones por las 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 altamente deseable poder configurarlo y / o controlarlo a través de un navegador web en lugar de instalar docenas de programas personalizados.

Incluso si utilizan 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 de PROFINET IO) para controlar docenas de máquinas. En mi experiencia, esta configuración es bastante estándar en muchas industrias.

En lo que respecta a los recursos (capacidad de procesamiento, RAM, ROM), cuando se recortan 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 para el servidor web más pequeño. Es una pena que ya no puedas visitar la página que alojó.

  

El Software

     

Algunas estadísticas de código para el software original. Tuve originalmente   olvidado de incluir el "data eeprom" 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 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 vincularse y usarse para cada arquitectura concebible. Conocer algún código HTML básico es útil para diseñar y escribir la página real.

Además de poder leer y comprender un registro de Wireshark o Fiddler (analizadores de red) probablemente sea la habilidad más útil, ya que ayudará enormemente 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 indicará dónde buscar en el paquete la información que necesite. Incluso puedes activar uno de esos analizadores ahora mismo y observar el tráfico que entra y sale de tu computadora para sentirlo.

    
respondido por el embedded.kyle
2

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

    
respondido por el Brian Carlton

Lea otras preguntas en las etiquetas