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.
microcontroller
embedded
quantum231
quelle
quelle
Antworten:
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.
quelle
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.
quelle
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.quelle
Weil sie es können.
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.
Physische Größe. Ein Mikrocontroller + WLAN- oder Ethernet-Chip kann die Größe eines USB-Sticks haben.
Kosten. Ein hierfür geeigneter Mikrocontroller könnte im Single-Dollar-Bereich liegen. Die Vernetzungsteile fast genauso günstig.
Einweg. Sie können sie in einmalige Projekte einbinden, und wenn sie sterben, ist das nicht so schlimm wie bei einem teuren Computer.
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.
quelle
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.
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.
quelle
Einer der Gründe ist die Herausforderung. Dies gilt umso mehr, wenn Sie die Mikrocontroller-Karte entwickeln und / oder Ihre eigene Software schreiben.
quelle