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.
microcontroller
embedded
quantum231
fonte
fonte
Respostas:
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.
fonte
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.
fonte
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 ...).fonte
Porque eles podem.
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.
Tamanho físico. Um microcontrolador + chip wifi ou ethernet pode ser do tamanho de um pen drive.
Custo. Um microcontrolador adequado para isso pode estar na faixa de um dólar. As peças de rede quase tão baratas.
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.
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.
fonte
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.
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.
fonte
Uma das razões é o desafio. Mais ainda, se você desenvolver a placa do microcontrolador e / ou escrever seu próprio software.
fonte