Por que as pessoas criam servidor web em um microcontrolador?


13

Encontrei pessoas criando servidores da Web usando microcontroladores, por que alguém faria isso? Quais são suas aplicações? Qual conjunto de habilidades, além da linguagem C, é necessário para criar esses servidores? Estou bastante curioso sobre esses pequenos servidores terem uma RAM tão pequena.


Essas perguntas são muito amplas. Tente se concentrar em uma pergunta técnica específica.
Kortuk

10
Votação para reabrir. Esta pergunta é boa o suficiente.
Nick Alexeev

"Esperamos que as respostas sejam apoiadas por fatos, referências ou conhecimentos específicos, mas essa pergunta provavelmente solicitará debate, argumentos, pesquisas ou discussões prolongadas".
O Photon

Fico feliz por finalmente poder ver como esse conceito é usado na indústria. Mas a partir disso, uma nova pergunta é gerada, visto que implementar um servidor em um uC e criar uma interface de usuário executada em um navegador da Internet facilita as coisas, por que muitas pessoas ainda recorrem a maneiras mais difíceis, como USB?
quantum231

@ quantum231 Por favor, faça uma nova pergunta se você tiver uma nova pergunta. :-)
Anindo Ghosh

Respostas:


15

Eu fiz isso em alguns produtos. Até agora, o motivo foi permitir uma configuração simples de campo. Cada vez que o produto já precisava estar conectado à Ethernet, em razão de sua operação principal. O servidor web foi, portanto, meramente adicionado código no microcontrolador.

A grande vantagem de um servidor HTTP é que nenhum hardware ou software especial é necessário para apresentar uma interface de usuário razoável ao usuário final. Todo mundo já tem um navegador da web, então isso não é um problema para o cliente. Pense em outras alternativas. Você pode fornecer uma porta RS-232, mas precisa fornecer um aplicativo personalizado ou explicar a alguém como configurar um programa de terminal com a taxa de transmissão correta, iniciar bits, parar bits e paridade. Você também precisa fornecer um cabo ou espera que o cliente tenha um, e alguém precise ir à unidade e conectar-se fisicamente a ela. O USB não tem o mesmo problema de configuração, mas geralmente significa um micro separado no produto e é necessário um programa personalizado para executar em qualquer plataforma que o cliente possa ter.

Quanto à RAM, isso não é um problema para um servidor HTTP. Uma pilha de protocolo TCP precisa de alguma RAM, mas o servidor HTTP não é realmente, exceto pelos recursos extras que podem exigir da pilha de rede. Um servidor da Web precisa principalmente de espaço ROM, pois a maioria das páginas é constante, geralmente com alguns valores convertidos em texto e inseridos em tempo real. Os servidores Web para micros pequenos trabalham com sistemas de arquivos ROM e sequências de escape nesses arquivos que fazem com que o código do aplicativo seja chamado para produzir seqüências de caracteres personalizáveis ​​para inserção em alguns locais predefinidos.

Até agora, usei um PIC 18 em todos esses casos. Embora os menos de 4 kbytes de RAM sejam uma limitação, ainda há muito que você pode fazer. O espaço da ROM nem sequer esteve perto de um problema. Minha pilha de rede para o PIC 18 (disponível na versão PIC Development Tools em www.embedinc.com/pic/dload.htm ) ocupa apenas uma pequena fração do espaço de ROM de um 18F67J60, o que é uma parte interessante dessas coisas, pois ele possui um MAC / PHY Ethernet completo. Em um caso, tenho esse PIC como servidor para 6 conexões TCP simultâneas. Realmente não é tão pesado quanto as pessoas parecem pensar.


Vale a pena notar que muitos servidores Web simples, quando recebem uma solicitação, enviam imediatamente tudo o que enviarão em resposta à solicitação, fecham a conexão e esquecem. Isso reduz os requisitos de RAM do TCP, mas coloca alguns limites severos na complexidade da página da web. É possível projetar um servidor TCP sem estado que possa manter um número ilimitado de conexões abertas (eu fiz isso), mas isso exigiria um front-end personalizado do lado do cliente. É mais simples manter as coisas pequenas o suficiente para permitir a operação HTTP sem estado.
Supercat

AVISO: Tentei fazer o download do "install_picdev.exe", mas o Firefox (ou o Windows Security Essentials) disse que é um malware. Não vou abri-lo.
ahogen

14

Um dos principais contribuintes para o recente aumento da popularidade dos servidores da Web nos microcontroladores é o desejo de acessar informações físicas dos sensores (temperatura, umidade, nível de luz, presença de monóxido de carbono etc.) remotamente, além de fazer as coisas acontecerem no mundo físico (alterne em um LED, acionar um alarme, ligar um exaustor de emergência, ligar uma bomba de refrigerante) também remotamente. Essas são as aplicações.

Qual a melhor maneira de obter acesso remoto genérico, consistente, independente de dispositivo e independente de designer do que o onipresente protocolo HTTP, através da rede IP ainda mais onipresente? A camada física de comunicação pode ser WiFi, Ethernet com fio ou qualquer outra opção conveniente que suporte rede IP. É por isso que servidores da web em dispositivos incorporados estão sendo feitos.

Para uma visão mais aprofundada, pode-se procurar a " Internet das Coisas " e ver a ampla gama de processos de pensamento que surgem.

Em relação aos " servidores minúsculos com RAM tão pequena ", é importante notar que o protocolo HTTP é simples o suficiente para ser implementado em muito pouca RAM, com muito pouco poder de processamento. Além disso, os microcontroladores de hoje são comparáveis ​​ou, em alguns casos, mais poderosos que os processadores nos primeiros computadores pessoais nos quais as pessoas implementaram não apenas a Web, mas também realizaram uma variedade de tarefas interativas, até mesmo jogos.


Boa resposta. Em relação às aplicações, sinto falta de mencionar alguns eletrônicos de consumo comuns que geralmente também podem ser acessados ​​e configurados usando um navegador. Impressoras, aparelhos de TV, receptores de áudio para home theater, roteadores ... Aposto que existem máquinas de café acessíveis remotamente :) EDIT: É verdade que alguns deles têm o poder de processamento de um PC moderno e não são baseados em microcontroladores.
Rev1.0

Eu acrescentaria que a escolha entre ter algo como um dispositivo se comunicar via HTTP em vez de outra coisa é geralmente uma opção entre tornar o dispositivo um pouco mais complicado, ao invés de exigir que o usuário compre ou instale algum hardware ou software dedicado para se comunicar com ele. Pode ser mais barato e mais eficiente em termos de energia construir um sensor de temperatura que use um esquema de RF proprietário para se comunicar sem fio com um dongle USB do que incluir um adaptador WiFi no sensor de temperatura, mas a última abordagem evita a necessidade do dongle.
Supercat 13/06

4

Muitos dispositivos em rede fornecem um servidor da web para examinar e definir parâmetros de configuração, verificar o status do dispositivo etc. Por exemplo, eu posso configurar o roteador no meu sistema apontando o navegador em http:///192.168.0.254(se bem me lembro ...).


3
  1. Porque eles podem.

  2. Porque eles podem ser de muito baixa potência. Como abaixo de 1W com alguns picos de empate. Menos de meio amplificador. Bateria e energia solar são práticas, diferentemente dos computadores maiores.

  3. Tamanho físico. Um microcontrolador + chip wifi ou ethernet pode ser do tamanho de um pen drive.

  4. Custo. Um microcontrolador adequado para isso pode estar na faixa de um dólar. As peças de rede quase tão baratas.

  5. Descartável. Você pode colocá-los em projetos únicos e, se eles morrerem, não é tão ruim quanto se um computador caro o fizesse.

  6. Justa causa.

Com o advento de computadores completos por dezenas de dólares (de graça a US $ 100) (plugues, framboesa pi, smartphones, pen drives Linux, pendrives Android, ROUTERS), você provavelmente verá menos servidores Web de microcontroladores no futuro, porque há não mais CUSTO e Tamanho como fator determinante. Um Raspberry Pi de 35 dólares ou um Beaglebone de 45 dólares pode superar o desempenho de um escudo Arduino + Ethernet ou Wifi em custo, desempenho e facilidade de configuração. É um pouco maior que o arduino. A única coisa que o arduino pode fazer com isso é a eficiência de energia de 0,1 W (0,5 mA a 50 mA de sono até a potência de computação total [5v, 16mhz, 100% cpu] somente pelo ATMEGA) vs 4W para o RPI sem Ethernet / HDMI / USB uso em modo inativo.

Portanto, os servidores da web de microcontroladores podem ser alimentados por bateria devido ao baixo consumo de corrente. Mesmo assim, alguns dos SoC linux mais recentes, como um roteador de bolso com um servidor web, podem estar próximos deles.


Considere também a família de microcontroladores MSP430 da Texas Instruments: consumo de energia incrivelmente baixo e ampla capacidade de veiculação na web. Processamento de 16 bits. Algumas opções incluem redes sem fio prontas para uso. Tamanho: uma placa completa com conectividade sem fio pode caber em um pen drive.
Anindo Ghosh

Essas respostas apenas respondem a uma parte da pergunta. por que fazemos isso? E a próxima parte; Como fazemos isso? Quais conjuntos de habilidades são necessários?
Anshul

1
@Anshul Você precisa codificar com a especificação do servidor http e precisa de uma pilha de rede (ip / tcp / udp) ou similar, dependendo do IC da rede que escolher.
quer

2

A resposta de Olin praticamente se aplica a todos os motivos pelos quais usei um servidor da Web incorporado. Trabalho desenvolvendo controles industriais e quase todos os produtos que produzimos têm um servidor da Web incorporado.

A maioria dos clientes já terá todos os seus equipamentos em sua rede por vários motivos. Portanto, é altamente recomendável configurá-lo e / ou controlá-lo através de um navegador da Web, em vez de instalar dezenas de programas personalizados.

Mesmo se eles estiverem usando um protocolo industrial como o PROFINET , a camada física é a mesma que o restante da Ethernet e eles precisam apenas de um software (um supervisor do PROFINET IO) para controlar dezenas de máquinas. Na minha experiência, essa configuração é bastante padrão em muitos setores.

No que diz respeito aos recursos (poder de processamento, RAM, ROM), quando detalhados, é necessário um hardware incrivelmente mínimo para servir com êxito uma página da web. webACE Acho que detém o recorde de menor servidor web. É uma pena que você não possa mais visitar a página que hospedava.

chip webACE cabo webACE

O software

Algumas estatísticas de código para o software original. Eu originalmente tinha esquecido de incluir o "data eeprom" de 64 bytes no chip nos totais, o que levou ao número de 1010 bytes citado no 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

Quanto a outras habilidades necessárias, não é realmente necessário um profundo entendimento da rede. Eu nunca escrevi uma pilha para nenhum protocolo, porque há uma infinidade de bibliotecas disponíveis para serem vinculadas e usadas em todas as arquiteturas concebíveis. Conhecer algum HTML básico bruto é útil para projetar e escrever a página real.

Além de poder ler e entender um registro do Wireshark ou do Fiddler (analisadores de rede), provavelmente será a habilidade mais útil, pois ajudará bastante na depuração de qualquer problema que você tenha. Uma pequena leitura na estrutura de pacotes de qualquer protocolo que você esteja usando (TCP, IP, HTTP, UDP, PROFINET etc.) dirá onde procurar no pacote as informações necessárias. Você pode até mesmo acionar um desses analisadores agora e ver o tráfego indo e vindo para o seu computador para ter uma ideia.


2

Uma das razões é o desafio. Mais ainda, se você desenvolver a placa do microcontrolador e / ou escrever seu próprio software.


3
Não é um grande desafio. Você pode baixar demos que têm um servidor web embutido.
Olin Lathrop

1
Seria um desafio se você escrever a sua própria pilha TCP / IP a partir do zero ..
m.Alin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.