Ethernet- und Internet-Programmierung mit Arduino

 

 

Die Programmierung und Realisierung einer eigenen Hardware-Plattform als Webserver war bisher eine der größeren Herausforderungen im Mikrocontroller-Bereich. In diesem Tutorial möchte ich Ihnen zeigen, wie Sie mit der günstigen Hardware von DFRobot und der einfach zu programmierenden Ethernet-Bibliothek von Arduino in wenigen Schritten ans Ziel gelangen. Eins vorweg: Auch wenn sich die Bibliothek schlicht "ethernet" nennt, geht es doch weit über den Umfang des Ethernet-Protokolls hinaus. So finden Sie komplette "Server"- und "Client"-Klassen, den TCP/IP-Stack und das UDP-Protokoll. Der passende Name wäre eigentlich "Netzwerk- und Internet-Bibliothek".

 

 

Die Hardware

 

Als Hardware verwenden wir ein Romeo-All-in-One-Board und das Ethernet Shield DFR0006. Sie können aber auch jedes andere Pin-kompatible Controllermodul verwenden, z. B. den DFRduino Uno. Das Trägerboard wird außerdem lediglich für den Programmiervorgang benötigt, das Ethernet Shield ist später als Standalone-Webserver einsetzbar.

 

2_Boards_Webserver.jpg

 

Aufgrund der Pin-Kompatibilität lassen sich die beiden Boards direkt aufeinander stecken:

 

Huckepack_Webserver.jpg

 

Verbinden Sie nun das Romeo-Board mit dem USB-Kabel Ihres Computers und rufen Sie die Arduino-Entwicklungsoberfläche auf. Danach sollten Sie noch die folgenden Einstellung prüfen:

 

- Zunächst müssen Sie die Schnittstelle festlegen, über die Ihr Romeo-Board angeschlossen ist. Dies tun Sie unter "Tools -> Serieller Port".

- Dann wählen Sie im Menü "Tools -> Board" den Eintrag "Ethernet Arduino" aus.

 

Auch wenn Sie ein Romeo-Board angeschlossen haben, wollen Sie ja nicht dieses Board programmieren, sondern den Controller auf dem Ethernet-Shield. Deshalb der entsprechende Eintrag "Ethernet Arduino" unter Board.  

 

Falls Sie zu diesem Ablauf noch Fragen haben, schauen Sie sich vor dem weiteren Schritten dieses Tutorial an.

 

Beginnen wir nun mit dem Programmieren:

 

Code_Webserver_1.png

 

Mit den ersten beiden Anweisungen importieren Sie die notwendigen Header-Dateien für die SPI- und die Ethernet-Bibliotheken. Danach wird eine MAC-Adresse und eine IP-Adresse definiert. Die MAC-Adresse entnehmen Sie entweder dem Aufkleber auf Ihrem Ethernet Shield Board oder Sie erstellen selbst eine Adresse. Solange Sie den Webserver nur in Ihrem lokalen Netz verwenden, ist das okay. Die IP-Adresse muss natürlich an Ihr Netzwerk angepasst werden. In unserem Fall hat das LAN die Adresse 192.168.1.xx. 

 

Danach erstellen Sie ein Objekt vom Typ "Ethernet-Sever" auf dem Port 80. Über diesen Port arbeiten normalerweise Webserver. Schauen wir uns die nächsten Zeilen an, die wir brauchen:

 

Setup_Webserver_1.png

 

Die Setup-Routine fällt denkbar kurz aus: Mit dem ersten Befehl initialisieren wir den Stack und starten dann den Server, der nun auf die Anfragen von Clients lauscht. Nach dieser sehr kurzen Initialisierung springen wir in unsere loop-Schleife, die das Herzstück eines jedenArduino-Sketches ist:

 

loop_Webserver.png

 

Der erste Befehl erzeugt das Objekt "client" vom Typ EthernetClient und verbindet diesen mit dem verfügbaren Server. In der If-Abfrage wird geprüft, ob eine Anfrage vorhanden ist und so lange der Server mit dem Client verbunden ist wird nun das folgende Codesegment abgearbeitet:

 

loop_Webserver_2b.png
 

Alle "client.print"- bzw. "client.println"- Befehle tun nichts anderes als den übergebenen Text an den Client zu schreiben. Wenn Sie sich den Text aber einmal genau anschauen, werden Sie sehen, dass einfach nur eine kleine HTML-Seite aufgebaut wird. Die ersten fünf Zeilen geben lediglich einige Header-Daten an. In Zeile 6 "<html>" beginnt der Darstellungsbereich und in Zeile 7 erfolgt ein Content-Refresh, also eine Seitenaktualisierung alle 5 Sekunden. Darauf erfolgt in einer for-Schleife die Ausgabe der sieben Analogeingänge und schließlich der Abschluss der Seite mit "</html>".

 

Übersetzen Sie das Programm nun, laden es über das Romeo-Board in das Ethernet-Shield und installieren zwischen GND und dem ersten Analogeingang A0 eine Kurzschlussbrücke:

 

WebServer_1.jpg

 

Sie können das Ether-Shield-Board nun vom Romeo-all-in-one trennen oder es aber auf dem Trägerboard lassen, um es von dort aus mit Spannung zu versorgen. Für einen ersten Versuch müssen Sie die Platine mit einem herkömmlichen Netzwerkkabel ans Netzwerk anschließen. Falls Sie nur einen PC zur Verfügung haben, können Sie das Ether Shield über ein gekreuztes Anschlusskabel anschließen, wobei die meisten Netzwerkkarten den direkten Anschluss zum PC erkennen und automatisch eine gekreuzte Verbindung herstellen.

 

Egal auf welchem Weg Sie das Ether Shield mit dem Netz verbinden, es sollte nun als Webserver aktiv sein. Das können Sie ganz leicht testen, in dem Sie von einem beliebigen PC im Netz die Adresszeile "192.168.1.99" (bzw. die IP-Adresse, die Sie im Programm verwendet haben) eintippen:

 

HTML_Seite.png

 

Sie können gut erkennen, dass der Analogeingang mit der Kurzschlussbrücke auf 0 steht und alle anderen ein nicht definiertes Signal aufweisen. Im Anschluss finden Sie noch einmal den kompletten Programmcode zusammenhängend. 

 

Hinweis: Dieses Tutorial zeigt lediglich die ersten Schritt bis zur Kommunikationsaufnahme. Fragen zur Stabilität, Netzauslastung etc. werden hierbei nicht berücksichtigt. 

 

Komplett-Sketch:

Webserver_komplett_b.png
 

 

Für weitere Informationen und Bestellungen des

DFRobot Ether Shield 

einfach auf nachfolgenden Link klicken: DFRobot Ether Shield DFR0006

 

Sie wollen Arduino-Profi werden? Dann ist unser Video Mikrocontroller-Lehrgang MC1 genau das Richtige für Sie!

 

Falls Sie Fragen zum Thema haben, wenden Sie sich einfach an uns.

Wir helfen Ihnen gern weiter!

 

Ihr Team von Böcker Systemelektronik

 

 

Hinweis: Unser Tutorialangebot wird in unregelmäßigen Abständen erweitert. Wenn Sie sofort über eine Neuerscheinung informiert werden möchten, tragen Sie sich bitte hier in unsere Benachrichtigungsliste "Tutorials" ein. Sie können diesen unverbindlichen Service jederzeit in Ihrem Kundenkonto oder per E-Mail wieder abbestellen.  

 

 

Copyright © Böcker Systemelektronik