Warum erstellen Leute einen Webserver auf einem Mikrocontroller?

13

Ich bin auf Leute gestoßen, die Webserver mit Mikrocontrollern erstellt haben. Warum sollte das jemand tun? Was sind ihre Anwendungen? Welche Fähigkeiten braucht man neben der C-Sprache, um solche Server zu erstellen? Ich bin ziemlich neugierig auf diese winzigen Server mit so kleinem RAM.

quantum231
quelle
Diese Frage ist sehr weit gefasst. Versuchen Sie, sich auf eine bestimmte technische Frage zu konzentrieren.
Kortuk
10
Abstimmung zur Wiedereröffnung. Diese Frage ist gut genug.
Nick Alexeev
"Wir erwarten, dass die Antworten durch Fakten, Referenzen oder spezifisches Fachwissen untermauert werden, aber diese Frage wird wahrscheinlich zu Debatten, Argumenten, Abstimmungen oder längeren Diskussionen führen."
Das Photon
Ich bin froh, dass ich endlich sehen kann, wie dieses Konzept in der Industrie angewendet wird. Daraus ergibt sich jedoch die neue Frage, ob die Implementierung eines Servers auf einem UC und die Erstellung einer Benutzeroberfläche, die in einem Internetbrowser ausgeführt wird, die Dinge so einfach macht. Warum greifen viele Menschen immer noch auf härtere Methoden wie USB zurück?
quantum231
@ quantum231 Bitte stellen Sie eine neue Frage, wenn Sie eine neue Frage haben. :-)
Anindo Ghosh

Antworten:

15

Ich habe das in ein paar Produkten gemacht. Bisher bestand der Grund darin, eine einfache Feldkonfiguration zu ermöglichen. Jedes Mal, wenn das Produkt aufgrund seiner Hauptfunktion bereits mit dem Ethernet verbunden werden musste. Dem Webserver wurde daher lediglich Code im Mikrocontroller hinzugefügt.

Der große Vorteil eines HTTP-Servers besteht darin, dass keine spezielle Hardware oder Software erforderlich ist, um dem Endbenutzer eine angemessene Benutzeroberfläche bereitzustellen. Jeder hat bereits einen Webbrowser, daher ist dies für den Kunden kein Problem. Denken Sie über andere Alternativen nach. Sie könnten einen RS-232-Port bereitstellen, müssen dann aber entweder eine benutzerdefinierte App bereitstellen oder jemandem erklären, wie ein Terminalprogramm mit der richtigen Baudrate, Startbits, Stoppbits und Parität eingerichtet wird. Sie müssen entweder ein Kabel bereitstellen oder hoffen, dass der Kunde eines hat, und jemand muss zum Gerät gehen und eine physische Verbindung herstellen. USB hat nicht das gleiche Konfigurationsproblem, würde aber im Allgemeinen ein ganz separates Mikro im Produkt bedeuten, und Sie benötigen ein benutzerdefiniertes Programm, um auf jeder Plattform des Kunden ausgeführt zu werden.

RAM ist für einen HTTP-Server kein großes Problem. Ein TCP-Protokollstapel benötigt etwas RAM, der HTTP-Server jedoch nicht wirklich, abgesehen von den zusätzlichen Ressourcen, die er möglicherweise vom Netzwerkstapel benötigt. Ein Webserver benötigt meistens ROM-Speicherplatz, da der Großteil jeder Seite konstant ist. In der Regel werden einige Werte in Text umgewandelt und sofort eingefügt. Webserver für kleine Mikros arbeiten mit ROM-Dateisystemen und Escape-Sequenzen in den Dateien, die dazu führen, dass der Anwendungscode aufgerufen wird, um an einigen vordefinierten Stellen anpassbare Zeichenfolgen zum Einfügen zu erstellen.

Bisher habe ich in all diesen Fällen einen PIC 18 verwendet. Obwohl weniger als 4 KB RAM eine Einschränkung darstellen, können Sie noch viel tun. Der ROM-Speicherplatz war noch nicht einmal in der Nähe eines Problems. Mein Netzwerkstack für den PIC 18 (verfügbar in meinem Release der PIC Development Tools unter www.embedinc.com/pic/dload.htm ) belegt nur einen kleinen Bruchteil des ROM-Speicherplatzes eines 18F67J60, was seitdem ein netter Teil für solche Dinge ist es hat ein komplettes eingebautes Ethernet MAC / PHY. In einem Fall habe ich, dass PIC ein Server für 6 gleichzeitige TCP-Verbindungen ist. Es ist wirklich nicht so schwer, wie die Leute zu denken scheinen.

Olin Lathrop
quelle
Es ist erwähnenswert, dass viele einfache Webserver, wenn sie eine Anfrage erhalten, sofort alles senden, was sie jemals als Antwort auf die Anfrage senden werden, die Verbindung schließen und diese vergessen. Dies reduziert die TCP-RAM-Anforderungen, schränkt jedoch die Komplexität der Webseiten stark ein. Es ist möglich, einen zustandslosen TCP-Server zu entwerfen, der eine unbegrenzte Anzahl von Verbindungen offen hält (ich habe es getan), aber so etwas würde ein benutzerdefiniertes clientseitiges Front-End erfordern. Es ist am einfachsten, die Dinge klein genug zu halten, um einen zustandslosen HTTP-Betrieb zu ermöglichen.
Supercat
HINWEIS: Ich habe versucht, "install_picdev.exe" herunterzuladen, aber Firefox (oder Windows Security Essentials) hat gemeldet, dass es sich um Malware handelt. Ich werde es nicht öffnen.
Ahogen
14

Ein Hauptgrund für die in letzter Zeit zunehmende Beliebtheit von Webservern auf Mikrocontrollern ist der Wunsch, über Fernzugriff auf physikalische Sensorinformationen (Temperatur, Luftfeuchtigkeit, Lichtstärke, Vorhandensein von Kohlenmonoxid usw.) zuzugreifen und Dinge in der physikalischen Welt geschehen zu lassen (Switch) Alarm auslösen, Notabluftventilator einschalten, Kühlmittelpumpe einschalten) auch aus der Ferne. Das sind die Anwendungen.

Welchen besseren Weg gibt es, um einen generischen, konsistenten, geräteunabhängigen und designerunabhängigen Remotezugriff zu erzielen als das allgegenwärtige HTTP-Protokoll über das noch allgegenwärtigere IP-Netzwerk? Die physikalische Kommunikationsschicht kann WiFi, kabelgebundenes Ethernet oder eine andere geeignete Option sein, die IP-Netzwerke unterstützt. Aus diesem Grund werden Webserver auf eingebetteten Geräten ausgeführt.

Für weitere Einsichten könnte man nach dem " Internet der Dinge " suchen und die breite Palette von Denkprozessen sehen, die auftauchen.

In Bezug auf die " winzigen Server mit so kleinem RAM " ist anzumerken, dass das HTTP-Protokoll einfach genug ist, um auf sehr wenig RAM mit sehr wenig Rechenleistung implementiert werden zu können. Außerdem sind die heutigen Mikrocontroller mit den Prozessoren der frühen Personal Computer vergleichbar oder in einigen Fällen leistungsstärker als diese, auf denen nicht nur das Web implementiert, sondern auch eine Vielzahl interaktiver Aufgaben ausgeführt und sogar Spiele gespielt wurden.

Anindo Ghosh
quelle
Gute Antwort. In Bezug auf Anwendungen vermisse ich die Erwähnung einiger gängiger Unterhaltungselektronik, die häufig auch über einen Browser aufgerufen und konfiguriert werden kann. Drucker, Fernseher, Heimkino-Audioempfänger, Router ... Ich wette, es gibt sogar Kaffeemaschinen mit Fernzugriff :) EDIT: Zugegeben, einige davon haben die Rechenleistung eines modernen PCs und basieren nicht auf Mikrocontrollern.
Rev1.0
Ich möchte hinzufügen, dass die Wahl zwischen der Kommunikation einer Appliance über HTTP und einer anderen im Allgemeinen die Wahl zwischen einer etwas komplizierteren Kommunikation der Appliance selbst und dem Erfordernis des Kaufs oder Installierens von dedizierter Hardware oder Software für die Kommunikation mit der Appliance ist. Es kann billiger und energieeffizienter sein, einen Temperatursensor zu bauen, der ein proprietäres HF-Schema für die drahtlose Kommunikation mit einem USB-Dongle verwendet, als einen WiFi-Adapter in den Temperatursensor einzubauen. Letzterer Ansatz macht den Dongle jedoch überflüssig.
Supercat
4

Viele vernetzte Geräte bieten einen Webserver zum Überprüfen und Einstellen von Konfigurationsparametern, zum Überprüfen des Gerätestatus usw. Ich kann den Router in meinem System beispielsweise konfigurieren, indem ich mit dem Browser auf http:///192.168.0.254(wenn ich mich richtig erinnere ...) zeige.

Pete Becker
quelle
3
  1. Weil sie es können.

  2. Weil sie sehr leistungsarm sein können. Wie unter 1W mit einigen Spitzenwerten. Unter einem halben Ampere. Batterie- und Solarenergie ist im Gegensatz zu größeren Computern praktisch.

  3. Physische Größe. Ein Mikrocontroller + WLAN- oder Ethernet-Chip kann die Größe eines USB-Sticks haben.

  4. Kosten. Ein hierfür geeigneter Mikrocontroller könnte im Single-Dollar-Bereich liegen. Die Vernetzungsteile fast genauso günstig.

  5. Einweg. Sie können sie in einmalige Projekte einbinden, und wenn sie sterben, ist das nicht so schlimm wie bei einem teuren Computer.

  6. Gerechte Sache.

Mit dem Aufkommen ausgewachsener Computer für Dutzende von Dollar (kostenlos bis 100 US-Dollar) (Shrevaplugs, Himbeer-Pi, Smartphones, Linux-Sticks, Android-Sticks, Router) werden Sie in Zukunft wahrscheinlich weniger Mikrocontroller-Webserver sehen, weil es solche gibt Nicht mehr COST und Size als treibender Faktor. Ein 35-Dollar-Raspberry-Pi oder ein 45-Dollar-Beaglebone können ein Arduino + Ethernet- oder Wifi-Schild in Bezug auf Kosten, Leistung und einfache Einrichtung übertreffen. Es ist kaum größer als das Arduino. Das einzige, was der Arduino dagegen tun kann, ist eine Energieeffizienz von 0,1 W (0,5 mA bis 50 mA Ruhezustand bis zur vollen Rechenleistung [5 V, 16 MHz, 100% CPU] allein durch den ATMEGA) gegenüber 4 W für den RPI ohne Ethernet / HDMI / USB Nutzung im Leerlauf.

So können Mikrocontroller-Webserver aufgrund des geringen Stromverbrauchs batteriebetrieben werden. Selbst dann können einige der neueren Linux-SoCs wie ein Pocket-Router mit einem Webserver in der Nähe sein.

Passant
quelle
Betrachten Sie auch die Texas Instruments MSP430-Familie von Mikrocontrollern: Unglaublich geringer Stromverbrauch und umfangreiche Funktionen für das Web-Serving. 16-Bit-Verarbeitung. Einige Optionen umfassen die sofortige drahtlose Vernetzung. Größe: Ein komplettes Board mit drahtloser Konnektivität kann in ein USB-Stick passen.
Anindo Ghosh
Diese Antworten beantworten nur einen Teil der Frage. Warum machen wir das? Was ist mit dem nächsten Teil? Wie machen wir es? Welche Fähigkeiten sind erforderlich?
Anshul
1
@Anshul Sie müssen nach der http-Serverspezifikation codieren und benötigen einen Netzwerkstapel (ip / tcp / udp) oder ähnliches, je nachdem, welchen Netzwerk-IC Sie wählen.
Passant
2

Olins Antwort trifft so ziemlich auf jeden Grund, warum ich einen eingebetteten Webserver verwendet habe. Ich arbeite an der Entwicklung industrieller Steuerungen und fast jedes Produkt, das wir herstellen, verfügt über einen eingebetteten Webserver.

Die meisten Kunden haben ihre gesamte Ausrüstung bereits aus verschiedenen Gründen in ihrem Netzwerk. Daher ist es äußerst wünschenswert, dass Sie es über einen Webbrowser konfigurieren und / oder steuern können, anstatt Dutzende von benutzerdefinierten Programmen zu installieren.

Auch wenn sie ein industrielles Protokoll wie PROFINET verwenden , ist die physikalische Schicht die gleiche wie der Rest ihres Ethernet und sie benötigen nur eine Software (einen PROFINET IO-Supervisor), um Dutzende von Maschinen zu steuern. Meiner Erfahrung nach ist diese Einrichtung in vielen Branchen ziemlich standardisiert.

In Bezug auf die Ressourcen (Rechenleistung, RAM, ROM) wird, wenn auf das Wesentliche reduziert, unglaublich wenig Hardware benötigt, um eine Webseite erfolgreich zu betreiben. Ich denke, webACE hält den Rekord für den kleinsten Webserver. Es ist eine Schande, dass Sie die gehostete Seite nicht mehr besuchen können.

webACE chip WebACE-Kabel

Die Software

Einige Codestatistiken für die ursprüngliche Software. Ich hatte ursprünglich vergessen, das auf dem Chip befindliche 64-Byte-Daten-EEPROM in die Gesamtsummen einzubeziehen, was zu der auf TBTF angegebenen Zahl von 1010 Byte führte.

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

Für andere Fähigkeiten ist ein tiefes Verständnis des Netzwerks nicht unbedingt erforderlich. Ich habe noch nie einen Stack für ein Protokoll geschrieben, da es eine Vielzahl von Bibliotheken gibt, die eingebunden und für jede erdenkliche Architektur verwendet werden können. Grundlegende HTML-Kenntnisse sind hilfreich, um die eigentliche Seite zu entwerfen und zu schreiben.

Abgesehen davon ist es wahrscheinlich die nützlichste Fähigkeit , ein Protokoll von Wireshark oder Fiddler (Netzwerkanalysatoren) lesen und verstehen zu können, da dies das Debuggen von Problemen erheblich erleichtert. Eine kleine Lektüre der Paketstruktur des von Ihnen verwendeten Protokolls (TCP, IP, HTTP, UDP, PROFINET usw.) zeigt Ihnen, wo Sie im Paket nach Informationen suchen müssen, die Sie benötigen. Sie können sogar einen dieser Analysatoren jetzt starten und den Datenverkehr auf Ihrem Computer beobachten, um ein Gefühl dafür zu bekommen.

embedded.kyle
quelle
2

Einer der Gründe ist die Herausforderung. Dies gilt umso mehr, wenn Sie die Mikrocontroller-Karte entwickeln und / oder Ihre eigene Software schreiben.

Brian Carlton
quelle
3
Es ist kaum eine Herausforderung. Sie können Demos mit eingebautem Webserver herunterladen.
Olin Lathrop
1
Es wäre eine Herausforderung, wenn Sie Ihren eigenen TCP / IP-Stack von Grund auf neu schreiben würden.
m.Alin