Perché le persone creano un server Web su un microcontrollore?


13

Mi sono imbattuto in persone che creano server Web usando microcontrollori, perché qualcuno dovrebbe farlo? Quali sono le sue applicazioni? Quali competenze oltre al linguaggio C sono necessarie per creare tali server? Sono abbastanza curioso che questi minuscoli server abbiano una RAM così piccola.


Questa domanda è molto ampia, prova a concentrarti su una specifica domanda tecnica.
Kortuk,

10
Votazione per riaprire. Questa domanda è abbastanza buona.
Nick Alexeev

"Ci aspettiamo che le risposte siano supportate da fatti, riferimenti o competenze specifiche, ma questa domanda probabilmente solleciterà dibattiti, argomenti, sondaggi o discussioni estese".
The Photon,

Sono lieto che finalmente riesca a vedere come questo concetto viene utilizzato nel settore. Ma da questo viene generata una nuova domanda, visto che l'implementazione di un server su un uC e la creazione di un'interfaccia utente che gira in un browser Internet rende le cose così facili, perché molte persone ricorrono ancora a modi più difficili come l'USB?
quantum231,

@ quantum231 Fai una nuova domanda se hai una nuova domanda. :-)
Anindo Ghosh,

Risposte:


15

L'ho fatto in alcuni prodotti. Finora il motivo è stato quello di consentire una semplice configurazione sul campo. Ogni volta che il prodotto doveva già essere collegato a Ethernet a causa della sua operazione principale. Il web server è stato quindi semplicemente aggiunto codice nel microcontrollore.

Il grande vantaggio di un server HTTP è che non è richiesto alcun hardware o software speciale per presentare un'interfaccia utente ragionevole all'utente finale. Tutti hanno già un browser web, quindi questo non è un problema per il cliente. Pensa ad altre alternative. Potresti fornire una porta RS-232, ma poi devi fornire un'app personalizzata o spiegare a qualcuno come impostare un programma terminale con la giusta velocità di trasmissione, bit di avvio, bit di stop e parità. Devi anche fornire un cavo o sperare che il cliente ne abbia uno e qualcuno deve andare all'unità e collegarsi fisicamente ad esso. USB non ha lo stesso problema di configurazione, ma in genere significherebbe un micro tutto separato nel prodotto e lì è necessario un programma personalizzato per funzionare su qualsiasi piattaforma il cliente potrebbe avere.

Per quanto riguarda la RAM, non è un grosso problema per un server HTTP. Uno stack di protocollo TCP ha bisogno di un po 'di RAM, ma il server HTTP non è proprio, fatta eccezione per le risorse extra che potrebbe richiedere dallo stack di rete. Un server web ha principalmente bisogno di spazio ROM, poiché la maggior parte di ogni pagina è costante, di solito con pochi valori convertiti in testo e inseriti al volo. I server Web per i micro di piccole dimensioni funzionano con i file system ROM e sfuggono alle sequenze in quei file che causano il richiamo del codice dell'applicazione per produrre stringhe personalizzabili da inserire in alcuni punti predefiniti.

Finora ho usato un PIC 18 in tutti questi casi. Mentre meno di 4 kbyte di RAM sono una limitazione, c'è ancora molto che puoi fare. Lo spazio ROM non è nemmeno stato vicino a un problema. Il mio stack di rete per PIC 18 (disponibile nella mia versione degli strumenti di sviluppo PIC su www.embedinc.com/pic/dload.htm ) occupa solo una piccola parte dello spazio ROM di un 18F67J60, che è una buona parte di queste cose poiché ha un completo ethernet MAC / PHY integrato. In un caso ho quel PIC che è un server per 6 connessioni TCP simultanee. In realtà non è così pesante come la gente sembra pensare.


Vale la pena notare che molti semplici server Web, quando ricevono una richiesta, invieranno immediatamente tutto ciò che invieranno in risposta alla richiesta, chiudendo la connessione e dimenticarsene. Ciò riduce i requisiti di RAM TCP, ma pone alcuni limiti severi alla complessità della pagina Web. È possibile progettare un server TCP senza stato in grado di mantenere aperto un numero illimitato di connessioni (l'ho fatto), ma una cosa del genere richiederebbe un front-end sul lato client personalizzato. È più semplice mantenere le cose abbastanza piccole da consentire il funzionamento HTTP senza stato.
supercat

AVVISO: ho provato a scaricare "install_picdev.exe" ma Firefox (o Windows Security Essentials) ha detto che si tratta di malware. Non lo aprirò.
Ahogen,

14

Un contributo chiave al recente aumento della popolarità dei server Web sui microcontrollori è il desiderio di accedere alle informazioni dei sensori fisici (temperatura, umidità, livello di luce, presenza di monossido di carbonio ecc.) In remoto, oltre a far accadere le cose nel mondo fisico (switch su un LED, attivare un allarme, accendere un ventilatore di scarico di emergenza, accendere una pompa del refrigerante) anche in remoto. Quelle sono le applicazioni.

Quale modo migliore per ottenere un accesso remoto generico, coerente, indipendente dal dispositivo e indipendente dal progettista rispetto al protocollo HTTP onnipresente, tramite la rete IP ancora più onnipresente? Il livello fisico di comunicazione potrebbe essere WiFi, Ethernet cablata o qualsiasi altra opzione conveniente che supporti la rete IP. Questo è il motivo per cui vengono eseguiti server Web su dispositivi incorporati.

Per ulteriori approfondimenti, si potrebbe cercare " Internet of Things " e vedere l'ampia gamma di processi di pensiero che si presentano.

Per quanto riguarda i " piccoli server con una RAM così piccola ", vale la pena notare che il protocollo HTTP è abbastanza semplice da essere implementabile su pochissima RAM, con una potenza di elaborazione molto ridotta. Inoltre, i microcontrollori di oggi sono paragonabili o, in alcuni casi, più potenti dei processori sui primi personal computer su cui le persone hanno implementato non solo il Web, ma hanno anche svolto una varietà di attività interattive, persino giocando.


Buona risposta. Per quanto riguarda le applicazioni, mi manca la menzione di alcuni comuni dispositivi elettronici di consumo a cui è spesso possibile accedere e configurare tramite un browser. Stampanti, televisori, ricevitori audio home cinema, router ... Scommetto che ci sono anche macchine da caffè accessibili a distanza :) EDIT: Certo, alcuni di questi hanno la potenza di elaborazione di un PC moderno e non sono basati su micro controller.
Rev1.0

Vorrei aggiungere che la scelta tra avere qualcosa come un'appliance che comunica via HTTP rispetto a qualcos'altro è generalmente una scelta tra rendere l'appliance stessa leggermente più complicata, piuttosto che richiedere all'utente di acquistare o installare hardware o software dedicati per comunicare con esso. Può essere più economico ed efficiente dal punto di vista energetico costruire un sensore di temperatura che utilizza uno schema RF proprietario per comunicare in modalità wireless con un dongle USB piuttosto che includere un adattatore WiFi nel sensore di temperatura, ma quest'ultimo approccio evita la necessità del dongle.
supercat

4

Molti dispositivi in ​​rete forniscono un server Web per l'esame e l'impostazione dei parametri di configurazione, il controllo dello stato del dispositivo, ecc. Ad esempio, posso configurare il router nel mio sistema puntando il browser verso http:///192.168.0.254(se ricordo correttamente ...).


3
  1. Perché possono.

  2. Perché possono avere una potenza molto bassa. Come sotto 1W con alcuni disegni di picco. Meno di mezzo amplificatore. La batteria e l'energia solare sono pratiche, a differenza dei computer più grandi.

  3. Dimensioni fisiche. Un microcontrollore + wifi o chip Ethernet può avere le dimensioni di una chiavetta USB.

  4. Costo. Un microcontrollore adatto a questo potrebbe trovarsi nella gamma del singolo dollaro. Le parti di rete sono quasi altrettanto economiche.

  5. Monouso. Puoi metterli in progetti una tantum e se muoiono, non è così male come se un computer costoso lo fa.

  6. Solo perché.

Con l'avvento di computer in piena regola per decine di dollari (gratis fino a $ 100) (shrevaplugs, raspberry pi, smartphone, chiavette linux, chiavette Android, ROUTER), probabilmente vedrai meno server web di microcontrollori in futuro, perché c'è non più COSTO e dimensione come fattore trainante. Un Raspberry Pi da 35 dollari o un Beaglebone da 45 dollari possono superare gli scudi Arduino + Ethernet o Wifi in termini di costi, prestazioni, facilità di installazione. È appena più grande dell'arduino. L'unica cosa che l'arduino può fare su di esso è l'efficienza energetica 0,1 W (da 0,5 mA a 50 mA in sospensione alla piena potenza di calcolo [5v, 16mhz, 100% cpu] solo da ATMEGA) vs 4W per l'RPI senza ethernet / hdmi / usb utilizzo al minimo.

Pertanto i server Web di microcontrollori possono essere alimentati a batteria a causa del basso consumo di corrente. Anche allora, alcuni dei SoC Linux più recenti come un router tascabile con un server web possono essere vicini a loro.


Considera anche la famiglia di microcontrollori MSP430 di Texas Instruments: consumo di energia incredibilmente basso e ampia capacità di servire il web. Elaborazione a 16 bit. Alcune opzioni includono la rete wireless pronta all'uso. Dimensioni: una scheda completa con connettività wireless può essere inserita in una chiavetta USB.
Anindo Ghosh,

Queste risposte rispondono solo a una parte della domanda. Perché lo facciamo? Che dire della prossima parte; Come lo facciamo? Quali set di abilità sono richiesti?
Anshul,

1
@Anshul È necessario codificare secondo le specifiche del server http e è necessario uno stack di rete (ip / tcp / udp) o simile, a seconda dell'IC di rete scelto.
Passante dal

2

La risposta di Olin colpisce praticamente tutti i motivi per cui ho usato un web server incorporato. Lavoro nello sviluppo di controlli industriali e quasi tutti i prodotti che produciamo hanno un web server incorporato.

La maggior parte dei clienti avrà già tutte le proprie apparecchiature sulla propria rete per vari motivi. Pertanto è altamente auspicabile poterlo configurare e / o controllare tramite un browser Web anziché installare decine di programmi personalizzati.

Anche se usano un protocollo industriale come PROFINET , il livello fisico è uguale al resto della loro Ethernet e quindi hanno bisogno di un solo software (un supervisore PROFINET IO) per controllare dozzine di macchine. Nella mia esperienza, questa configurazione è abbastanza standard in molti settori.

Per quanto riguarda le risorse (potenza di elaborazione, RAM, ROM), una volta ridotto all'essenziale, è necessario un hardware incredibilmente minimale per servire con successo una pagina web. webACE Penso che detenga il record per il più piccolo web server. È un peccato non poter più visitare la pagina che ha ospitato.

chip webACE cavo webACE

Il software

Alcune statistiche di codice per il software originale. Inizialmente avevo dimenticato di includere "eeprom" di 64 byte su chip nei totali, che ha portato alla cifra di 1010 byte quotata su 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

Per quanto riguarda le altre competenze necessarie, non è davvero necessaria una profonda conoscenza della rete. Non ho mai scritto uno stack per nessun protocollo perché ci sono molte librerie disponibili per essere collegate e utilizzate per ogni architettura immaginabile. Conoscere alcuni HTML di base non elaborati è utile per progettare e scrivere la pagina attuale.

A parte il fatto che essere in grado di leggere e comprendere un registro di Wireshark o Fiddler (analizzatori di rete) sarà probabilmente l'abilità più utile in quanto aiuterà notevolmente nel debug di eventuali problemi. Una piccola lettura sulla struttura del pacchetto di qualunque protocollo tu stia utilizzando (TCP, IP, HTTP, UDP, PROFINET, ecc.) Ti dirà dove cercare nel pacchetto tutte le informazioni di cui hai bisogno. Puoi persino accendere uno di quegli analizzatori in questo momento e guardare il traffico che va e viene sul tuo computer per averne un'idea.


2

Uno dei motivi è per la sfida. Ancora di più se sviluppi la scheda microcontrollore e / o scrivi il tuo software.


3
Non è certo una sfida. Puoi scaricare demo con un server web integrato.
Olin Lathrop,

1
Sarebbe una sfida se tu scrivessi il tuo stack TCP / IP da zero ..
m.Alin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.