Projekte

Wie Verwenden eines Arduino als ein Webserver

Arduino kurz gefasst - ESP32 als Webserver (Dezember 2018).

Anonim

Wie Verwenden eines Arduino als ein Webserver


Mit einer Ethernet-Abschirmung können Sie einen Arduino als Webserver verwenden.

Indem Sie einen Arduino mit einer Ethernet-Abschirmung ausstatten, können Sie ihn in einen einfachen Webserver verwandeln. Wenn Sie auf diesen Server mit einem Browser zugreifen, der auf einem beliebigen Computer mit demselben Netzwerk wie der Arduino ausgeführt wird, können Sie:

  • Hardware von der Webseite aus steuern (mit Javascript-Buttons).
  • Lesen Sie den Status eines Schalters (mit einfachem HTML).
  • Lesen Sie den Wert eines Sensors (mit einfachem HTML).

Hardware benötigt

Um einen Arduino als Webserver zu verwenden, benötigen Sie Folgendes:

  • Arduino Mega2560 (oder Arduino UNO)
  • Ethernet-Abschirmung
  • Wired LAN Verbindung mit einer Geschwindigkeit von 10 / 100Mb
Die Ethernet-Abschirmung verbindet den Arduino mit dem Internet. Die Einrichtung ist sehr einfach: Stecken Sie einfach die Header-Pins des Shield in Ihren Arduino und verbinden Sie dann ein Ethernet-Kabel mit dem Shield. Das Bild unten zeigt diese Einstellung:

Experiment

Um zu demonstrieren, wie der Arduino als Webserver verwendet wird, lesen wir den Status eines Switches.

Hardware erforderlich

  • 1 x Ethernet-Kabel
  • 1 x WLAN-Router
  • 1 x Arduino Mega2560
  • 1 x Ethernet-Abschirmung
  • 1 x Steckbrett
  • 3 x Jumper-Drähte
  • 1 x 10k Widerstand
  • 2 x 9V Adapter
  • 1 x Drucktaste

Schaltplan

Verbinden Sie die Komponenten wie oben gezeigt. Der Pin 8 von Arduino ist mit der Drucktaste verbunden und als INPUT konfiguriert. Wenn die Taste gedrückt wird, liest der Arduino einen LOW-Wert an diesem Pin. Der Arduino setzt dann den Status von OUTPUT auf ON. Wenn es freigegeben wird, wird der Ausgang auf AUS gesetzt. Der Status des Switches wird an den Webserver gesendet.

Ethernet-Konfiguration

Um die Ethernet-Abschirmung zu steuern, verwenden Sie die Ethernet.h-Bibliothek.

Der Abschirmung muss über die Funktion Ethernet.begin () eine MAC- und IP-Adresse zugewiesen werden. Für ein bestimmtes Gerät ist eine MAC-Adresse eine global eindeutige Kennung. Aktuelle Ethernet-Schirme werden mit einem Aufkleber mit der MAC-Adresse geliefert. Für ältere Schilde sollte ein zufälliger funktionieren, aber man sollte nicht den gleichen für viele Boards verwenden. Die Gültigkeit der IP-Adressen hängt von der Konfiguration des Netzwerks ab. Wenn DHCP verwendet wird, kann es der Abschirmung dynamisch eine IP zuweisen.

IP ADRESSE

IP-Adresse (Internet Protocol-Adresse) ist eine numerische Bezeichnung, die jedem Gerät zugewiesen wird, das an einem Computernetzwerk teilnimmt, das das Internetprotokoll für die Kommunikation verwendet. Die Angabe der IP-Adresse erfolgt durch Schreiben der Zeile:

 Byte ip () = {192, 168, 0, 112}; 

und ändere es so, dass es mit einem eigenen Setup übereinstimmt. Um beispielsweise die IP-Adresse der Ethernet-Abschirmung 192.168.0.50 zuzuweisen, schreiben Sie die Zeile:

 Byte ip () = {192, 168, 0, 50}; 

MAC-ADRESSE

Die MAC-Adresse (Media Access Control Address) ist eine eindeutige Kennung, die jedem Gerät zugewiesen wird, das an einem physischen Netzwerk teilnimmt. Jedes Netzwerkgerät verfügt über eine eindeutige Seriennummer, um sich über ein Netzwerk zu identifizieren, und das ist normal in die Firmware des Geräts programmiert. Mit Arduino können wir jedoch die MAC-Adresse selbst definieren.

 Byte mac () = {0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9}; 

Sie können das Subnetz und das Gateway mit Hilfe der folgenden Befehle einstellen:

 Byte-Subnetz () = {255, 255, 255, 0}; // Subnetzmaske zuweisen 
 Byte Gateway () = {192, 168, 0, 1}; // Zuweisen von Gateway 

Um den Ethernet-Shield einzurichten, wird der Codeblock wie folgt angegeben:

 / ******************** ETHERNETEINSTELLUNGEN ******************** / 
Byte mac () = {0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9}; // Zuweisen der MAC-Adresse
Byte ip () = {192, 168, 0, 112}; // IP in LAN
Byte-Subnetz () = {255, 255, 255, 0}; // Subnetzmaske zuweisen
Byte Gateway () = {192, 168, 0, 1}; // Zuweisen des Standard-Gateways

Unten ist ein Foto des Systems, das zeigt, wie sich der Arduino mit dem Wi-Fi-Router verbindet. Das Ethernet-Kabel verbindet die Abschirmung mit dem Router und Router verbindet sich dann drahtlos mit dem Laptop.

Programm

Unten ist ein Programm, das eine einfache Webseite lädt.

Code

 client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

Code herunterladen

Dieses Programm zeigt eine Webseite in einem Webbrowser an, wenn auf die dem Arduino zugewiesene IP-Adresse zugegriffen wird. Die Linie:

 client.println(""); 

Weist den Browser an, die Seite zu aktualisieren. Wenn auf die Seite erneut zugegriffen wird, liest der Arduino den Status des Schalters erneut und zeigt es an.

Beachten Sie, dass Sie immer die Quelle der angezeigten Webseite anzeigen können. Beim Drücken der Taste können Sie den sich ändernden Zustand des Schalters beobachten, wie in der Videodemo gezeigt.

Sie können dies auch so einrichten, dass es ohne den Router ausgeführt wird. Um dies zu tun, müssen Sie:

  1. Weisen Sie dem Ethernet des Arduino-Netzwerks 192.168.0.2 und der Subnetzmaske 255.255.255.0 eine manuelle IP-Adresse zu.
  2. Verwenden Sie ein Crossover-Ethernet-Kabel, um die beiden zu verbinden (Laptop und Arduino).
  3. Wir sollten dann in der Lage sein, Ihre Arduino-Seite vom Laptop auf //192.168.0.2 zu bringen .

Unten ist der Code, den Sie in den Arduino laden würden, um ihn ohne den Router direkt mit dem PC zu verbinden:

Code

 #include#include/******************** ETHERNET SETTINGS ********************/ byte mac() = { 0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9 }; //physical mac address byte ip() = { 192, 168, 0, 112 }; // ip in lan byte subnet() = { 255, 255, 255, 0 }; //subnet mask byte gateway() = { 192, 168, 0, 1 }; // default gateway EthernetServer server(80); //server port void setup() { Ethernet.begin(mac, ip, gateway, subnet); // initialize Ethernet device server.begin(); // start to listen for clients pinMode(8, INPUT); // input pin for switch } void loop() { EthernetClient client = server.available(); // look for the client // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connnection: close"); client.println(); /* This portion is the webpage which will be sent to client web browser one can use html, javascript and another web markup language to make particular layout */ client.println(""); //web page is made using html client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); /* The above line is used to refresh the page in every 1 second This will be sent to the browser as the following HTML code:content = 1 sec ie assign time for refresh */ client.println(""); client.println(""); client.println("

Ein Webserver-Tutorial

"); client.println ("

Beobachtungszustand des Schalters

"); client.print ("

Schalter ist: "); if (digitalRead (8)) {client.println ("

AUF

");} else {client.println"

AUS

");} client.println (" "); client.println (" "); delay (1); // Zeit geben, um die Daten zu empfangen / * Die folgende Zeile ist wichtig, weil sie den Client stoppt und nach dem neue Verbindung in der nächsten Iteration dh EthernetClient client = server.available (); * / client.stop ();}

Code herunterladen

Videos

Gib diesem Projekt einen Versuch für dich selbst! Holen Sie sich die Stückliste.