Arduino Web-Server und die Erkennung von Verlust der Netzwerkverbindung
Ich habe ein arduino mit ethernet-shield, und ich möchte in der Lage sein zu erkennen, ein Verlust der Netzwerk-Verbindung (d.h. wenn sich jemand trennt das ethernet-Kabel aus dem arduino). Ich habe sah rund um online und habe nicht gefunden was. Die Ethernet-global-Objekt die IP-Adresse die gleiche bleibt, selbst nachdem das Kabel abgezogen. Jede Beratung wird sehr geschätzt!
InformationsquelleAutor Mason | 2013-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denken kann von zwei feuchten Wege und ein harter Weg. Rohöl Weise ersten:
DHCP-Anfrage
Fordern Sie eine neue DHCP-Adresse und überprüfen Sie die Fehler (vorausgesetzt, dass die IP-Adresse dynamisch zugewiesen). Fehler kann bedeuten, dass Kabel nicht angeschlossen ist (oder, dass der DHCP-server ist abgespritzt 🙂
ping/Verbindung
Ping eine bekannte Adresse, vielleicht ist der router. Wenn es nicht gelingt, Sie nicht verbunden sind, weil entweder das Kabel nicht angeschlossen ist oder eine ganze Reihe von anderen Gründen (router unten, Netzwerk, etc).
Entweder der ping oder DHCP-renew-Methode durchgeführt werden konnten, wenn Sie nicht verbunden sind, um einen Dienst in einem Intervall zu erkennen, die Kabel entfernen.
Link
Sieht es aus wie beim W5100 (dieser Kern-Ethernet-Schild) hat einen
LINKLED
signal, es nicht nicht zur Verfügung stellen, um den Prozessor über den Registern. Wenn Sie bereit sind, Löten Sie die Drähte an Ihrem Schild, Sie könnten, bauen Sie sich eine Trennung Detektor. Eine offensichtliche Wahl wäre dieLINKLED
jedoch, es blinkt, während der TX/RX Aktivität. Also, wenn Sie wissen, dass Sie auf 100-Mbps-Netzwerk, Sie könnten Löten Sie einen Draht an denSPDLED
(rechts unterhalb der RJ45-Anschluss), kann ich zwar nicht ganz sagen, auf welcher Seite Sie sein sollte Löten. DieSPDLED
ist low-aktiv, Sie könnten also schnappen Sie sich ein multimeter und finde heraus, welche Seite es ist, um am nächsten 0V wenn die LED aus ist. Sie könnten dann führen Sie dieses Kabel in den Arduino unddigitalRead()
.Das ist seltsam, über DHCP. Gut, man könnte einfach versuchen, einige der bekannt guten server (z.B. router oder
google.com
oder so ähnlich). Wenn Sie keine Verbindung mit einem client dann entweder das Netzwerk heruntergefahren ist oder das Kabel nicht angeschlossen ist. Scheinbar ping ist nicht Teil der Ethernet-Bibliothek, aber einige kluge Leute haben entwickeln ICMP-ping für Arduino hierIch schaute auf die Ethernet-Bibliothek von code, und es sieht so aus, dass
maintain()
tut im Grunde nichts, wenn Sie Ihre DHCP-lease nicht erneuert werden muss. Sie könnte ändern Sie die Ethernet-Bibliothek setzen Sie das DHCP-Objekt, und, es zwingen, sich zu erneuern, durch die Freigabe von DHCP, wenn der DHCP-Klasse scheint es nicht zu geben-Methoden für diese, so müssten Sie schreiben diese. Kann ich Sie bitten, wenn Sie mit Arduino als server oder als client? Werden Sie die Netzwerk-Infrastruktur (also des Routers, etc)?Ich bin mit der arduino als server. Ich will nicht die Kontrolle über die Netzwerk-Infrastruktur (ich bin an der Universität und ich werde auf Ihr Netzwerk)
OK. Wenn Sie keine Kontrolle über die Infrastruktur, schränkt Ihre Optionen ein wenig. Es sieht aus wie Ethernet-Bibliothek können sowohl Server als auch clients zur gleichen Zeit, so konnte man einen client, der versucht, eine Verbindung zu einigen bekannten server (
www.google.com
), oder noch besser, die Verbindung zum router selbst (der Standard-gateway-IP-Adresse). Sie können sich wahrscheinlich HTTP (Verbindung auf port 80), aber vielleicht nicht: Sie haben, um zu sehen, welche ports er offen hat. Wenn es nicht akzeptiert verbindungen auf allen ports, Sie könnten eine Verbindung zuwww.google.com
auf port 80. Aber einen lokalen router wäre besser, IMHO.InformationsquelleAutor angelatlarge
Habe ich einige vernetzte hardware, ist nicht tolerant, der die öffentliche IP-Adresse ändern (und erfordert einen Neustart, wenn es tut). Dieser code erkennt das ethernet-Kabel wird getrennt und eine änderung der öffentlichen IP-Adresse. Gekürzte Aufgaben stehen für die auf die Anschaffung oder änderung der öffentlichen IP-Adresse. Ich bin mit einem W5500-board, das ist fest verdrahtet, um ein Arduino PRO (also nicht ein Schild), und das funktioniert gut. Fühlen Sie sich frei, als Sie bitte.
InformationsquelleAutor RayM