Version 6.2.0, Daten: 29. Januar 2020
Autor: M. Westenberg ([email protected])
Copyright: M. Westenberg ([email protected])
Alle Rechte vorbehalten. Dieses Programm und die dazugehörigen Materialien werden gemäß den Bestimmungen der MIT-Lizenz zur Verfügung gestellt, die diese Verteilung begleitet und unter https://opensource.org/licenses/mit-license.php verfügbar ist
Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, jedoch ohne Garantie; Ohne die implizite Garantie für Handelsfähigkeit oder Eignung für einen bestimmten Zweck.
Pflege von Maarten Westenberg ([email protected])
Zunächst: Bitte lesen Sie diese Datei und Dokumentation, sie sollte die meisten Informationen enthalten, die Sie benötigen. Leider habe ich nicht die Zeit, alle E-Mails zu verfolgen, und da die meisten Informationen, einschließlich Pin-Outs usw. usw., auf diesen Seiten enthalten sind, hoffe ich, dass Sie die Zeit haben, sie zu lesen und verbleibende Fragen zu veröffentlichen.
Ich habe mehr als 10 Wemos D1 -Mini -Boards, einige ich selbst gebaut, über 10+ auf Hallard, 3 auf ComResult und 4 ESP32 -Boards. Sie alle arbeiten ohne Probleme in diesem Code. Ich habe jedoch festgestellt, dass gute Lötverbände und Verkabelung den Unterschied ausmachen. Wenn Sie also zurückgesetzt werden/Fehler erhalten, die Sie nicht erklären können, werfen Sie bitte einen zweiten Blick auf Ihre Verkabelung.
Dieses Repository enthält eine Proof-of-Concept-Implementierung eines einzelnen Kanals Lorawan Gateway für das ESP8266. Startversion 5.2 Auch der ESP32 von TTGO (und anderen) wird unterstützt. Die Software implementiert ein Standard -Lora -Gateway mit den folgenden Ausnahmen und Änderungen:
Dieses Lora-Gateway ist kein Voll-Gateway, aber es implementiert nur ein Einkanal/ein Frequenz-Gateway. Die minimale Menge an Frequenzen, die von einem Voll -Gateway unterstützt werden, beträgt 3, die meisten unterstützen 9 oder mehr Frequenzen. Diese Software begann als Proof-of-Concept, um zu beweisen, dass ein einzelner kostengünstiger RRFM95-Chip, der in fast jedem Lora-Knoten in Europa vorhanden war, als billige Alternative zu den weitaus teureren Vollgateways verwendet werden konnte, die den SX1301-Chip nutzten.
Da die Software dieses Gateways häufig während der Entwicklungsphase eines Projekts oder in Demo -Situationen verwendet wird, ist die Software flexibel und kann leicht gemäß den Umgebungs- oder Kundenanforderungen konfiguriert werden. Es gibt zwei Möglichkeiten, mit der Software zu interagieren:
Die vollständige Dokumentation des Einkanal -Gateways finden Sie unter Things4U.github.io. Schauen Sie sich bitte die Hardware -Handbuch unter dem Kapitel Gateway an.
Das Einkanal -Gateway wurde auf einem Gateway mit dem Wemos D1 Mini unter Verwendung eines Hoperf RFM95W -Transceivers getestet. Die Tests wurden auf 868 Version von Lora und einige Tests auf 433 MHz durchgeführt. Die Lora -Knoten wurden erneut getestet. Dieses Gateway sind:
Der Code wurde auf mindestens 8 separaten Gateway -Boards beide auf der Grundlage des Hallard- und der ComResult -Boards getestet. Ich arbeite immer noch an der ESP32 Pin-out und Funktionen (bald erwartet).
Es wird empfohlen, das Single -Channel -Gateway mit so wenig Modifikaton wie möglich zu kompilieren und zu starten. Dies bedeutet, dass Sie die Standardeinstellungen in den 2 Konfigurationsdateien so weit wie möglich verwenden und nur das SSID/das Kennwort für Ihr WLAN -Setup und die Stifte Ihres ESP8266 ändern sollten, die Sie in loramodem.h verwenden. In diesem Abschnitt wird das Minimum der Konfiguration beschrieben, die erforderlich sind, um ein Arbeitsgateway zu erhalten, das mit der Webseite weiter konfiguriert werden kann.
Über Bibliotheksmanager:
Jetzt sollte Ihr Gateway laufen. Verwenden Sie die Webseite, um "Debugg" auf 1 festzulegen, und Sie sollten in der Lage sein, Pakete auf dem Serienmonitor zu sehen.
Es gibt zwei Möglichkeiten, die Konfiguration des Einzelkanal -Gateways zu ändern:
Wo Sie die Wahl haben, ist Option 2 weitaus freundlicher und nützlicher.
Die Datei Configgway.h enthält die benutzerkonfigurierbaren Gateway -Einstellungen. Alle haben ihre Definitionen durch #define Aussagen festgelegt. Im Allgemeinen ermöglicht das Festlegen einer #Define auf 1 die Funktion und das Einstellen auf 0 wird diese deaktiviert.
Einige Einstellungen können auch initialisiert werden, indem deren Wert mit einer #Define festgelegt wird, aber zur Laufzeit in der Webschnittstelle geändert werden kann. Für einige Einstellungen wird die Funktion mit einem #Define auch die Funktion vom Webserver entfernen.
Hinweis bezüglich des Speicherverbrauchs: Der ESP8266 verfügt über eine enorme Menge an Speicher, die für den Programmraum und das Spiffs -Dateisystem zur Verfügung steht. Der für Heap und Variablen verfügbare Speicher ist jedoch auf etwa 80.000 Bytes begrenzt (für das ESP-32 ist dies höher). Dem Benutzer wird empfohlen, Funktionen auszuschalten, die nicht verwendet werden, um die Speicherverwendung zu speichern. Wenn der Haufen unter 18 KBytes fällt, verhalten sich einige Funktionen möglicherweise nicht wie erwartet (im extremen Fall kann das Programm abstürzen).
Mit der Datei Confignode.h wird der WiFi-Zugangspunkt und die Struktur bekannter Sensoren auf das 1-Kanal-Gateway eingestellt. Das Festlegen der bekannten WLAN -Zugriffspunkte (SSID und Passwort) muss zum Kompilierenzeitpunkt erfolgen.
Wenn das Gateway nicht nur als Gateway verwendet wird, sondern auch für Debugging -Zwecke, kann der verwendete Gebrauch nicht nur den Namen des Sensorknotens angeben, sondern auch für bestimmte Knoten die Nachricht entschlüsseln.
Der Benutzer kann feststellen, ob die USB -Konsole für Ausgabenachrichten verwendet wird oder nicht. Beim Einstellen von _dusb auf 0 ist die gesamte Ausgabe nach seriell deaktiviert (tatsächlich sind die seriellen Anweisungen nicht im Code enthalten).
#Define _dusb 1
Definieren Sie die Operationsklasse, die vom Gateway unterstützt wird. Klasse A wird unterstützt und enthält den Grundbetrieb für Batteriesensoren.
Klasse B enthält den Betriebsmodus der Beacon/Batterie. Das Gateway sendet Ihnen ein Leuchtfeuer an die angeschlossenen Sensoren, mit dem sie das Downlink -Messagieren synchronisieren können.
Die Betriebsmodus der Klasse C (Continuous) enthält Unterstützung für Geräte, die wahrscheinlich nicht batteriebetrieben werden und das Netzwerk jederzeit anhört. Infolgedessen ist die Latenz dieser Geräte auch kürzer als für Geräte der Klasse A. Geräte der Klasse C sind nicht von Batteriestrom abhängig und erweitern die Empfangsfenster bis zum nächsten Übertragungsfenster. In der Tat werden nur Übertragungen das Gerät das Zuhören abbrechen, solange diese Übertragung dauert. Geräte der Klasse C können keine Klasse B -Betrieb durchführen.
#define _class "a"
Alle Geräte beginnen als Geräte der Klasse A und können sich entscheiden, auf die Klasse B oder C zu "aktualisieren"
Wir unterstützen zwei Pin-out-Konfigurationen außerhalb des Boxs: Hallard und Compresult. Wenn Sie eine dieser beiden verwenden, stellen Sie einfach den Parameter auf den richtigen Wert ein. Wenn Ihre PIN -Definitionen unterschiedlich sind, aktualisieren Sie die Datei loramodem.h, um diese Einstellungen widerzuspiegeln. 1: Hallard 2: ComResult Pin Out 3: ESP32 Pin Out
#define _pin_out 1
Der folgende Parameter sollte unter normalen Umständen auf 0 eingestellt werden. Es ermöglicht das System, das SPIFFS -Dateisystem zu formatieren.
#define SPIFF_FORMAT 0
Stellen Sie den _spreading -Faktor auf den gewünschten SF7, SF8 - SF12 -Wert ein. Bitte beachten Sie, dass dieser Wert eng mit dem für _CAD verwendeten Wert zusammenhängt. Wenn _cad aktiviert ist, wird der Wert von _spreading vom Gateway nicht verwendet, da alle Sreading -Faktoren aktiviert sind.
#define _spreading sf9
Bitte beachten Sie, dass die verwendete Standardfrequenz 868,1 MHz beträgt, die in der Datei loramodem.h geändert werden kann. Dem Benutzer wird empfohlen, diese Etikierung nicht zu ändern und nur die Standardfrequenz von 868,1 MHz zu verwenden.
Die Kanalaktivitätserkennung (CAD) ist eine Funktion des LORA RFM95 -Chips, um eingehende Nachrichten (Aktivität) zu erkennen. Diese eingehenden Nachrichten können in einem der bekanntesten Verbreitungsfaktoren SF7-SF12 eintreffen. Durch das Aktivieren von CAD kann das Gateway Nachrichten zu den Verbreitungsfaktoren empfangen.
Tatsächlich wird es im normalen Betrieb verwendet, um dem Empfänger mitzuteilen, dass ein anderes Signal den Kanal bereits verwendet.
Die CAD -Funktionalität hat einen (kleinen) Preis: Der Chip kann keine sehr schwachen Signale empfangen, da die CAD -Funktion die RSSI -Registereinstellung des Chips verwendet, um festzustellen, ob ein Signal (oder nur ein Rauschen) erhalten wird oder nicht. Infolgedessen werden nicht sehr schwache Signale empfangen, was bedeutet, dass der Bereich des Gateway im CAD -Modus reduziert wird.
#define _cad 1
Wie aus Version 4.0.6 ermöglicht das Gateway über die Luftaktualisierung, wenn die Einstellung A_OTA eingeschaltet ist. Die Over -Air -Software erfordert nach der Einstellung der 4.0.6 -Version über USB an das Gateway, wonach die Software (Standard) für die Verwendung aktiviert ist.
Die erste Version unterstützt nur die OTA -Funktion mit der IDE, in der in der Praxis die IDE im selben Netzwerksegment wie das Gateway sein muss.
Hinweis: Sie müssen Bonjour -Software (Apple) irgendwo in Ihrem Netzwerk verwenden. Für die meisten Plattformen ist eine Version verfügbar (zum Beispiel mit iTunes für Windows versandt). Mit der Bonjour -Software können das Gateway mit MDNs die von OTA festgelegte Gateway -ID auflösen, wonach Download -Ports in der IDE angezeigt werden.
TODO: Die OTA -Software wurde (noch) in Verbindung mit der Wifimanager -Software nicht getestet.
#define a_ota 1
Diese Einstellung ermöglicht den Webserver. Obwohl der Webserver selbst viel Speicher nimmt, hilft es erheblich, die Laufzeit von Gatewayat zu konfigurieren und sein Verhalten zu inspizieren. Es enthält auch Statistiken der zuletzt empfangenen Nachrichten. Der Parameter a_refresh definiert, ob der Webserver alle x Sekunden verlängern sollte.
#define a_server 1 // Definieren Sie den lokalen Webserver nur, wenn dieser Definieren festgelegt ist
#define a_refresh 1 // ist der Webserver aktiviert, um Ja/Nein zu aktualisieren? (Ja ist in Ordnung) #define a_serverport 80 // lokaler Webserver -Port
#define a_maxbufrize 192 // muss größer als 128 sein, aber klein genug, um zu arbeiten
Der Parameter a_refresh definiert, ob wir die Aktualisierung der Ja/Nein -Einstellung im Webbrowser einstellen können. Die Einstellung im Webbrowser wird normalerweise standardmäßig auf "Nein" eingestellt, aber wir können das Definieren von "1" dieser Einstellung im Webbrowser aktivieren lassen.
Um das Gateway Downlink-Nachrichten auf den voreingestellten Spreading-Faktor und auf der Standardfrequenz zu senden, müssen Sie den Parameter _strict_1ch auf 1. Beachten Sie, dass das Gateway, wenn es nicht auf 1 festgelegt ist, auf Downlink-Anfragen mit dem vom Backend-Server festgelegten Frequenz- und Spreading-Faktor reagiert. Und im Moment reagiert TTN auf Downlink-Nachrichten für SF9-SF12 im RX2-Zeitschlitz und mit der Frequenz 869,525 MHz und auf SF12 (gemäß dem LORA-Standard beim Senden des RX2-Zeitlots).
#define _strict_1ch 0
Es wird empfohlen, die Standardeinstellung dieses Parameters nicht zu ändern.
Durch das Einstellen des OLED konfigurieren Sie das System so, dass sie mit OLED -Panels über i2c arbeiten. Einige Panels arbeiten sowohl von SPI als auch von I2C, in denen I2C Solwer ist. Da die SPI jedoch für die RFM95 -Transceiver -Kommunikation verwendet wird, werden Sie mit einer dieser Sendungen fest entschlossen, da sie nicht mit dieser Software funktionieren. Wählen Sie stattdessen eine OLED -Lösung, die über I2C funktioniert.
#define OLED 1
Die folgenden Werte sind für OLED definiert:
Wenn dies definiert ist (== 1), sammeln wir die Statistiken jeder Nachricht und geben sie an das Spiffs -Dateisystem aus. Wir stellen sicher, dass wir eine Anzahl von Dateien mit jeder festen Anzahl von Datensätzen für Statistiken verwenden. Die REC -Nummer zeigt an, wie viele Datensätze in jeder Statistikdatei zulässig sind. Sobald die REC -Nummer höher ist als die Anzahl der zulässigen Datensätze, öffnen wir eine neue Datei. Sobald die Anzahl der Dateien die Anzahl der Statistikdateien überschreitet, löschen wir die OldEest -Datei und öffnen eine neue Datei. Bei der Auswahl der Schaltfläche "Protokoll" oben auf dem GUI -Bildschirm sind alle RTH -Protokolldateien zum USB -seriellen Gerät. Auf diese Weise können wir weit mehr Aufzeichnungen untersuchen als die GUI -Bildschirm oder die serielle Ausgabe anzupassen.
#define STAT_LOG 1
Das Einstellen der I2C SDA/SCL -Stifte erfolgt direkt nach der #Define of OLED in der Datei Configgway.h. Standard Der ESP8266 verwendet Pins D1 und D2 für die I2C -Bus -SCL- und SDA -Linien, diese können jedoch vom Benutzer geändert werden. Normalerweise ist das nicht notwendig. Die OLED -Funktionen finden Sie in der Datei _loramodem.ino und können angepasst werden, um andere Felder anzuzeigen. Die Funktionen werden aufgerufen, wenn eine Nachricht empfangen wird (!), Und daher wird dies die Instabilität des ESP erhöhen, da diese Funktionen möglicherweise mehr Zeit als erwartet erfordern. In diesem Fall von der OLED -Funktion aus der OLED -Funktion oder in einer Funktion in der Hauptschleife () erstellt, die in der Benutzerzeit angezeigt wird (nicht unterrupt).
Mit dem Gateway können gleichzeitig 2 Server hergestellt werden (wie die meisten LORA -Gateways übrigens). Sie müssen eine Verbindung zu mindestens einem Standard -Lora -Router herstellen, falls Sie das Dings Network (TTN) verwenden, um sicherzustellen, dass Sie festgelegt sind:
#define _ttnserver "Router.EU.Thethings.network"
#define _ttnport 1700
Falls Sie Ihren eigenen Server einrichten, können Sie wie folgt mit Ihrer eigenen Router -URL und Ihrem eigenen Port angeben:
#define _thingserver "your_server.com" // Server -URL des Lora UDP.js Server -Programms
#define _thingport 1701 // Ihr UDP -Server sollte diesen Port anhören
Stellen Sie die Identitätsparameter für Ihr Gateway ein:
#Define _Description "ESP-Gateway"
#define _email "[email protected]"
#define _platform "ESP8266"
#define _lat 52.00
#define _lon 5.00
#define _alt 0
Es ist möglich, das Gateway als Knoten zu verwenden. Auf diese Weise werden lokale/interne Sensorwerte angegeben. Dies ist eine CPU und eine Speicherintensivfunktion, da eine Sensornachricht die EAS- und CMAC -Funktionen beinhaltet.
#Define Gatewaynode 0
Weiter unten in der Konfigurationsdatei Conchignode.h ist es möglich, die Adresse und andere LORA -Informationen des Gateway -Knotens festzulegen.
Der einfachste Weg, das Gateway auf WLAN zu konfigurieren, ist die Verwendung der Wifimanager -Funktion. Diese Funktion funktioniert nicht in der Box. Wifimanager stellt das Gateway im AccessPoint -Modus ein, damit Sie als WLAN -AccessPoint eine Verbindung dazu herstellen können.
#define _wifimanager 0
Wenn Wifi Manager aktiviert ist, definieren Sie den Namen des AccessPoint, wenn sich das Gateway im AccessPoint -Modus und im Kennwort befindet.
#define ap_name "ESP8266-Gway-Things4U"
#define ap_passwd "ttnautopw"
Der vom Gateway verwendete Standard -Zugriffspunktname lautet "ESP8266 Gway" und sein Passwort "ttnautopw". Gehen Sie nach dem Binden an den Zugriffspunkt mit Ihrem Mobiltelefon oder Computer unter htp: //192.168.4.1 in einem Browser und geben Sie das Gateway an, an welches WLAN -Netzwerk Sie eine Verbindung herstellen möchten, und geben Sie das Kennwort an.
Das Gateway wird dann zurückgesetzt und an das angegebene Netzwerk gebunden. Wenn alles gut geht, sind Sie jetzt eingestellt und der ESP8266 erinnert sich an das Netzwerk, mit dem es eine Verbindung herstellen muss. Hinweis: Solange der AccessPoint, an den das Gateway gebunden ist, ist das Gateway nicht mehr mit der WPA -Liste der bekannten Zugriffspunkte funktioniert. Bei Bedarf können Sie den aktuellen Zugriffspunkt im Webserver löschen und das Gateway einschalten, um das WPA -Array erneut zu lesen.
#IF Gatewaynode == 1
#Define _devaddr {0x26, 0x01, 0x15, 0x3d}
#Define _appskey {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#Define _nwkskey {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#Define _SENSOR_INTERVAL 300
#endif
Der integrierte Webserver kann verwendet werden, um Status und Debugging-Informationen anzuzeigen. Mit dem Webserver kann der Benutzer auch bestimmte Einstellungen zur Laufzeit ändern oder die CAD-Funktion ein- und ausschalten. Es kann mit der folgenden URL zugegriffen werden: http: //: 80, wo die IP vom Router zum ESP8266 beim Start gegeben wird. Es ist wahrscheinlich so etwas wie 192.168.1.xx Der Webserver zeigt verschiedene Konfigurationseinstellungen sowie Funktionen zum Festlegen von Parametern.
Die folgenden Parameter können mit dem Webserver festgelegt werden.
Die Software ist von mehreren Software abhängig, der Arduino -IDE für ESP8266 ist die wichtigste. In diesem Programm werden auch mehrere andere Bibliotheken verwendet. Stellen Sie sicher, dass Sie diese Bibliotheken mit der IDE installieren:
Zur Bequemlichkeit finden sich die Bibliotheken auch in diesem Github -Repository im Verzeichnis der Bibliotheken. Bitte beachten Sie, dass sie nicht Teil des ESP 1Channel -Gateways sind und möglicherweise eine eigene Lizenzierung haben. Diese Bibliotheken sind jedoch nicht Teil der Einzelkanal-Gateway-Software.
Siehe http://things4u.github.io im Abschnitt Hardware zum Erstellen und Verbindungsanweisungen.
Die folgenden Abhängigkeiten sind für das Einkanal -Gateway gültig:
Die folgenden Dinge stehen noch auf meiner Wunschliste, um das Einkanal -Gateway zu machen:
Die Quelldateien der Gateway -Skizze in diesem Repository werden unter der MIT -Lizenz verfügbar gemacht. Die in diesem Repository enthaltenen Bibliotheken sind nur aus Gründen der Bequemlichkeit enthalten und alle haben eine eigene Lizenz und sind nicht Teil des ESP 1CH Gateway -Code.