Ich hatte euch ja bereits den M5Stack vorgestellt und das dazu passende LoRaWAN Modul. Zusammen mit dem GPS Modul habe ich mir daraus einen TTN Network Tester gebaut. Als Vorbilder haben dabei der Network Tester von Daniel Knox und das Field Teste Device von Adeunis hergehalten.
Aufbau des Network TesterIch verwende für meinen Aufbau einen M5Stack Fire, da dieser mit dem M5Go Base ausgestattet ist, in der bereits ein Akku verbaut ist. Ich nutze die dort verbauten NeoPixel LEDs um mir optisch den Status über GPS und LoRa zurückzugeben. Daneben verwende ich noch das LoRaWAN- und GPS-Modul.
Die LEDs auf der rechten Seite (von oben nach unten) informieren über HDOP, GPS-Fix und Anzahl der Satelliten. Auf der linken Seite wird der RSSI der empfangenen Pakete wiedergegeben, mit den Farben, wie man sie vom TTN Mapper her kennt.
Alles zusammen ergibt eine leistungsstarkes Werkzeug, mit dem ihr eure Umgebung ausleuchten könnt und um Standorte für neue Nodes beurteilen zu können. Dabei nutze ich auch den MicroSD-Kartenleser, um den GPS-Track aufzuzeichnen und Messdaten, im SSV-Modus, als GeoJSON abzulegen.
Funktionen des Network TesterDer Tester verfügt über mehrere Betriebsarten, auf die ich hier nun eingehen werden.
NACK -> ACK -> MAN- > LCM -> SSV -> SET
Im Modus NACK (No Acknowledge), übermittelt der Node seine GPS-Daten in einem einstellbaren Intervall. Somit eignet sich dieser Modus perfekt um mit dem TTN Mapper zusammenzuarbeiten. Zusätzlich könnt ihr den Spreadingfactor anpassen und über die Dim Funktion, werden das Display und die LEDs abgeschaltet, bzw. wieder eingeschaltet.
NACK-Modus
Daneben gibt es noch den ACK Modus, in dem das TTN Backend aufgefordert wird, jedes Paket zu bestätigen. Der RSSI- und SNR-Wert des Empfangenen Paketes, wird auf dem Display wiedergegeben.
ACK-Modus
Im MAN Modus (manuell), kann über den Send-Button gezielt ein Paket übertragen werden. Hier erwartet der Node ebenfalls wieder ein ACK, dessen Empfangswerte der Node auf dem Display darstellt.
MAN-Modus
Der Modus LCM versendet einen LinkCheckRequest. In der Antwort des TTN Backends ist hierbei ebenfalls die Anzahl der Gateways enthalten, welche den Request empfangen haben.
LCM-Modus
Um Standorte für Nodes beurteilen zu können, gibt es den SSV Modus (SiteSurvey). Bei seiner Aktivierung wird jeweils ein LinkCheckRequest mit SF7 bis SF12 verschickt. Hierbei solltet ihr auch auf eine passende Antenne achten. Nutzt eine Antenne, wie sie auch am späteren Node Verwendung findet. Die Daten werden im GeoJSON-Format auf der SD-Karte abgelegt und können so z.B. über geojson.io oder QGIS ausgewertet werden. Auf dem Display wird danach ausgegeben, bei welcher DataRate (DR) ein Gateway erreicht wurde (DR5 = SF7, DR0 = SF12).
SSV-Modus läuft
SSV-Modus beendet
Über das SET Menü, kann das Sendeintervall festgelegt werden. Dabei stehen aktuell werte zwischen 15 und 120 Sekunden zur Auswahl. Zusätzlich kann den Stromsparmodus aktiviert werden. Dabei schläft der M5 immer für 15 Sekunden und schaut danach was es zu tun gibt. Im Stromsparmodus ist nur der NACK Modus aktiv und aktuell gibt es keine Displayanzeige mehr. Aktuell beendet nur ein Reset den Stromsparmodus. Hier muss ich noch nachbessern.
Settings Menü
Zusätzlich dient der Node auch als GPS-Tracker, da er die GPS Koordinaten in eine GPX-Datei schreibt. So könnt ihr später euren zurückgelegten Weg auswerten.
Die SoftwareIch habe das gesamte Projekt auf GitHub abgelegt, somit könnt ihr euch den Sketch anpassen, wie ihr wollt. Sicherlich findet ihr auch noch Bugs und Verbesserungen. Leider bin ich kein Programmierer, daher seht es mir nach, wenn der Sketch an vielen Stellen wie Spaghetti aussieht und nicht gerade elegant daher kommt.
Wichtig für die Nutzer eines M5Stack Fires. In der Arduino IDE muss der PSRAM disabled werden, dieser kollidiert mit der UART2
Ich verwende für das GPS-Modul UART2 mit GPIO 16 und 17 und für das LoRaWan-Modul habe ich UART1 mit GPIO 2 und 5 angepasst. Letzteres könnt ihr über die LoRaWan.cpp anpassen. Über die Lötpads am LoRaWan-Modul müsst ihr den Seriellen Port des Moduls noch auf GPIO 2 und 5 legen.
Aktuell ist das Projekt prinzipiell fertig, bedarf aber noch ein paar Verbesserungen:
- Auswertung der Tastendrücke verbessern (ist noch recht träge)
- Code aufräumen
- Ordentlicher Stromsparmodus
- Was mir/euch sonst noch so in den Sinn kommt
Verbesserungen die ich mir noch vorstellen kann:
- Auswahl zwischen ABP und OTAA (momentan kennt die Software nur ABP)
- Info über DutyCycle Begrenzung im Display (Aktuell gibt es nur einen Error Status)
Wie oben bereits geschrieben, könnt ihr die Auswertungen des SSV-Modus später betrachten. Über die Webseite geojson.io könnt ihr die Files importieren und die Daten betrachten. Eine Auswertung mittels QGIS ist auch möglich oder eben manuell indem ihr die Datei in einem Editor betrachtet.
Für einige ist sicherlich noch die Laufleistung interessant, daher habe ich mal nachgemessen. Der Tester ist leider ein Stromfresser und ihr solltet noch eine kleine Powerbank dabei haben. Es ließe sich sicherlich noch strom sparen, indem der GPS Chip schlafen gelegt wird. Ich denke ml in einer der nächsten Versionen werde die diese Option einbauen.
- Modus---------------------------------------------------------Laufzeit
- Normal---------------------------------------------------------1h44
- minDim(ohne LEDsund LCD)--------------------------2h10min
- Sleep2---------------------------------------------------------h46min
Comments
Please log in or sign up to comment.