Inhaltsverzeichnis:

Serielles UDP / IP-Gateway für Arduino basierend auf ESP8266-Shield - Gunook
Serielles UDP / IP-Gateway für Arduino basierend auf ESP8266-Shield - Gunook

Video: Serielles UDP / IP-Gateway für Arduino basierend auf ESP8266-Shield - Gunook

Video: Serielles UDP / IP-Gateway für Arduino basierend auf ESP8266-Shield - Gunook
Video: #LoRaWAN #5: Config Gateway RAK833 Drivers USB/SPI + Semtech UDP Packet Forwarder + RPI : PDAControl 2024, Juli
Anonim
Serielles UDP/IP-Gateway für Arduino basierend auf ESP8266 Shield
Serielles UDP/IP-Gateway für Arduino basierend auf ESP8266 Shield

Ich habe bereits 2016 dieses anweisbare "Wie man Ihr eigenes Wifi-Gateway herstellt, um Ihr Arduino mit dem IP-Netzwerk zu verbinden" veröffentlicht. Da ich einige Codeverbesserungen vorgenommen habe und diese Lösung immer noch verwende.

Trotzdem gibt es jetzt einige ESP8266-Shields, die es ermöglichen, ganz ohne Löten zu arbeiten, solange Sie keine Micro- oder Nano-Boards verwenden.

Diese Anleitung erklärt, wie Sie diese ESP82-Schilde als serielles UDP / IP-Gateway verwenden.

Dies ist Teil einer globalen Hausautomationsinfrastruktur, die Sie hier ansehen können

Weitere Informationen über das Schild mit diesem instructable

Lieferungen

1 Arduino Mega (am besten mindestens 1 Mega für die Entwicklung und 1 Uno für die Laufphase)

1 Rokoo ESP8266 ESP-12E UART WIFI Convertisseur

1 FTDI 3,3 V

2 Steckbrettdrähte

Schritt 1: Wie funktioniert es?

Wie funktioniert es ?
Wie funktioniert es ?

Das Gateway basiert auf einem ESP8266-Modul

Dieses Modul wird von einer Seite mit der seriellen Verbindung von der anderen Seite zum IP-Netzwerk mit dem Wifi verbunden.

Es fungiert als Blackbox. Von der seriellen Verbindung kommende Datenpakete werden an einen IP/Udp-Port gesendet und umgekehrt.

Sie müssen nur beim ersten Einschalten des Gateways Ihre eigene Konfiguration (IP, WIFI …) einstellen.

Es kann entweder rohe ASCII- und Binärdaten übertragen (kein HTTP, JSON…)

Es wurde entwickelt, um Objekte mit selbsterstellter Serversoftware zu verbinden, die schnelle und häufige Übertragungen kurzer Datenpakete benötigen.

Schritt 2: Was sind die Hauptfunktionen?

Meistens ist es eine Blackbox, die serielle Daten auf beide Arten in UDP-Pakete umwandelt.

Das Gateway kann aber auch eigenständig agieren, indem es interne Informationen an den Server sendet und einige Befehle vom Server empfängt.

Arduino kann Nachrichten an / von einem über das Internet verbundenen Server senden und empfangen, indem nur eine serielle Verbindung gedruckt / gelesen wird. Der Arduino-Entwickler muss sich nicht um das IP-Protokoll kümmern.

Darüber hinaus bietet es einen GPIO, der von Arduino verwendet werden kann, um zu überprüfen, ob das Gateway korrekt mit dem WIFI verbunden ist und das Gateway im Fehlerfall automatisch zwischen 2 verschiedenen SSIDs wechseln kann

Das Gateway verfügt über 2 verschiedene Betriebsmodi, die durch Einstellen eines GPIO ausgewählt werden

Wenn GPIO auf Masse gesetzt wird, geht das Gateway in den Konfigurationsmodus.

GPIO frei setzen und das Gateway wechselt in den Gateway-Betriebsmodus.

Darüber hinaus kann die Gateway UDP/IP-Konfiguration aus der Ferne geändert werden

Schritt 3: Materialaufbau

Materialaufbau
Materialaufbau

Es werden nur sehr wenige Dinge benötigt

1 ESP8266 Shield - Ich fand dieses UNO R3 ESP8266 Serial WiFi Shield Extend Board-Modul für weniger als 9€

1 UNO, das ist das Ziel des Arduino-Ziels

1 Mega, das ist das Arduino-Entwicklungstool (Sie können darauf verzichten, aber es ist ziemlich schwierig zu debuggen)

1 FTDI 3.3/5v für die Entwicklung

Einige Drähte

Schritt 4: Laden Sie den Gateway-Code herunter

Laden Sie den Gateway-Code herunter
Laden Sie den Gateway-Code herunter

Während dieses Schritts wird das Arduino nur zur Stromversorgung (mit USB oder einer anderen Stromquelle) auf dem ESP8266-Schild verwendet

Verbinden Sie den ESP8266 GPIO4 mit Masse (um in den Konfigurationsmodus zu gelangen)

Achten Sie darauf, den FTDI entsprechend der Abschirmung auf 3,3 V einzustellen

Verbinden Sie den FTDI mit der Abschirmung (RX zu TX)

Stellen Sie den Schildschalter auf 1:off 2:off 3:on 4:on

Verbinden Sie die USB-Seite des FTDI mit Ihrem Computer

Setzen Sie das Schild mit dem ESP-RST-Taster zurück

Laden Sie den Gateway-Code dort auf GitHub herunter

Öffnen Sie die Arduino-IDE

  • Wählen Sie den FTDI-Monitoranschluss
  • Öffnen Sie den IDE Serial Monitor - Stellen Sie die Geschwindigkeit auf 38400. ein
  • Wählen Sie die generische ES8266-Modulplatine
  • Aktualisieren Sie die Shield-Firmware mit dem Gateway-Code

Schalter 3:aus 4:aus

Öffnen Sie den IDE Serial Monitor

Setzen Sie das Schild mit dem ESP-RST-Taster zurück

Auf dem Monitor müssen Meldungen angezeigt werden, die mit "EEPROM-Initialisierung" "Initialisierung abgeschlossen"… beginnen.

Es ist Zeit, die Konfiguration vorzunehmen

Schritt 5: Lassen Sie uns die Gateway-Konfiguration durchführen

Beim erstmaligen Herunterladen des Gateway-Codes wird das ESP8266 Eeprom mit den Standardwerten initialisiert. Sie werden diese Art von Meldungen sehen "set parameter: x size: yy"

Sie finden diese Werte in der Codedefinition von paramValue. Natürlich können Sie diese Standardwerte vor dem Herunterladen des Codes ändern, aber Sie können Ihre Konfiguration auch später per Befehl festlegen. Dies ist besser, wenn Sie planen, mehrere Gateways zu verwenden und nur eine Codeversion zu behalten.

Verwenden Sie die serielle Schnittstelle des Monitors, um den Befehl zu senden (auf NL und CR eingestellt).

Da SSID derzeit nicht definiert ist, warten Sie auf "Konnte keine Verbindung zu Ihrer zweitenssid retry:5 herstellen"

Dann startet automatisch ein Scan des WLANs

Es ist an der Zeit, Ihre SSIDs mit den folgenden Befehlen einzustellen:

  • SSID1=Ihre Wahl1
  • PSW1=yourpsw1
  • SSID2=Ihre Wahl2
  • PSW2=yourpsw2
  • SSID=1 (um auszuwählen, mit welcher SSID begonnen werden soll)
  • WLAN neu starten

Nach einigen Sekunden können Sie die Verbindung mit dem Befehl "ShowWifi" überprüfen. Sie müssen die IP-Adresse sehen, die das Gateway von Ihrem DNS-Server erhalten hat. Wenn dies der Fall ist, ist es an der Zeit, weiter zu gehen

Es ist an der Zeit, Ihre IP-Serveradresse zu definieren, indem Sie die 4 Unteradressen eingeben (Server, der den Java-Testcode ausführt). Zum Beispiel:

  • "IP1=192"
  • "IP2=168"
  • "IP3=1"
  • "IP4=10"

Wenn Sie einen leeren Befehl senden, sehen Sie alle unterstützten Befehle, die Sie später verwenden können, um Ihre Anforderungen zu erfüllen. Alle Parameterwerte werden im Eeprom gespeichert und benötigen einen Neustart, um berücksichtigt zu werden.

Entfernen Sie das Konfigurationskabel

Der Schild läuft jetzt als Gateway

Schritt 6: Laden Sie das Arduino-Codebeispiel herunter

Laden Sie das Arduino-Codebeispiel herunter
Laden Sie das Arduino-Codebeispiel herunter

Laden Sie zuerst den Arduino-Hauptcode dort auf GitHub herunter

Laden Sie dann den Arduino-Code, diese Befehlsdefinition und diesen seriellen Link-Code in Ihre Bibliotheken herunter

Öffnen Sie dann den Hauptcode mit einer neuen Arduino IDE

Stellen Sie die Schildschalter 1 und 2 aus, um die serielle Arduino-Verbindung 0 für die USB-Verbindung freizugeben

Setzen Sie den Schild zurück

Verbinden Sie die FTDI-Kabel mit dem Mega Serial 2 (TX FTDI zu RX Mega usw.)

Starten Sie eine neue Arduino IDE (oder ein TTY-Tool), schließen Sie den FTDI-USB an und beginnen Sie mit der Überwachung der seriellen Verbindung

Laden Sie den Arduino-Code im Mega hoch

Stellen Sie die Schildschalter 1 und 2 ein, um die serielle Arduino-Verbindung 0. zu verbinden

Setzen Sie den Schild zurück

Sie müssen diese Meldung "start usb print" auf dem Monitor sehen

Schritt 7: Machen wir die Serverseite

Das Serverbeispiel ist ein Java-Programm, das Sie hier auf GitHub herunterladen können

Führen Sie es einfach aus und sehen Sie sich die Java-Konsole an und sehen Sie sich den FTDI-Monitor an

Sie sehen den Datenaustausch zwischen Server und Arduino

Schritt 8: Weiter gehen

Weiter gehen
Weiter gehen
Weiter gehen
Weiter gehen

Dieses Arduino-Codebeispiel basiert auf einem Framework-Teil meiner Heimautomatisierungsinfrastruktur.

Wenn Sie an dieser Infrastruktur interessiert sind, lassen Sie es mich wissen. Ich werde Quellen veröffentlichen.

Wenn Sie nur das Gateway verwenden möchten, können Sie den Arduino-Code vereinfachen.

Nachdem Sie Ihren Code auf einem Arduino Mega entwickelt und getestet haben, können Sie ihn einfach durch einen Uno ersetzen!

Darüber hinaus können Sie ein Kabel zwischen Arduino GPIO 7 und ESP8266 GPIO 5 anschließen, wenn Ihr Arduino die Wifi-Verbindung überprüfen soll

Empfohlen: