Sensordaten lassen sich kostengünstig per Lorawan versenden. Wir zeigen, wie sich ein Temperatursensor per TTN nutzen lässt.
Temperatursensoren im WLAN oder Zigbee-Netz sind im modernen, smarten Zuhause selbstverständlich. Schwieriger wird es, wenn Daten über größere Entfernungen übertragen werden sollen, etwa Messwerte aus einem Naturschutzprojekt. Hier stellt Lorawan eine interessante Alternative zu Modulen mit SIM-Karte dar.
Mit der Funktechnologie lassen sich Daten über Entfernungen bis zu 20 Kilometer übertragen und zusammen mit dem The Things Network (TTN) auf der ganzen Welt verfügbar machen - ein Gateway in Reichweite vorausgesetzt. Unser Beitrag zeigt, wie's geht.
Als Mikrocontroller kommt hier ein Feather M0 LoRa 900 MHz von Adafruit zum Einsatz. Es gibt je nach geplantem Einsatzort verschiedene Versionen des Boards, die mit unterschiedlichen Frequenzbereichen arbeiten. Außerdem gibt es den Feather M0 ohne LoRa und dafür einen LoRa-Aufsatz (Lora Radio FeatherWing). Der kann aber nur sinnvoll verwendet werden, wenn der Stacking Header mit den extralangen Beinen verlötet wird.
Verkabeln von Feather und Temperatursensor
Es ist auf jeden Fall eine gute Idee, sich auf den Seiten von Adafruit gründlich über das benötigte Modul zu informieren. Dort findet man auch die nicht mehr ganz aktuelle Anleitung Using LoraWAN and The Things Network with Feather, auf der dieser Artikel basiert.
Bei dem verwendeten Sensor handelt es sich um das beliebte DHT22-Modul, mit dem sich Temperatur und Luftfeuchtigkeit erfassen lassen. Achtung: Den Sensor gibt es auch ohne Board mit vier Pins. Hier wird die Version mit drei Pins verbaut, in der der erforderliche Pull-up-Widerstand schon enthalten ist.
Um den Feather einsatzbereit zu machen, werden zunächst die mitgelieferten 12- und 16-Pin-Header angelötet. Außerdem benötigt das Modul eine Antenne. Dafür wird ein Kabel von 8,2 cm Länge an den Anschluss Ant gelötet. Danach folgt der Aufbau der Schaltung auf einem Breadboard.
3V3 und GND des Feather werden mit den Plus- und Minus-Pins des DTH22-Moduls verbunden (rotes beziehungsweise schwarzes Kabel). Pin 10 des Feathers wird mit dem mittleren Pin (Data) des Sensors verdrahtet (grünes Kabel). Außerdem wird eine Brücke zwischen IO1 und D6 benötigt (blaues Kabel). Die Hardware ist damit startklar.
Die Anwendung im Things Network
Für den Zugang zum The Things Network ist ein Account erforderlich. Ist der angelegt, lässt sich im EU-Cluster der Things-Konsole unter Anwendungen eine neue Application anlegen. Die einzige dafür erforderliche Angabe ist eine frei wählbare Application ID.
Anschließend wird auf der darauffolgenden Übersichtsseite mit der Schaltfläche + Add end device ein Gerät hinzugefügt. Die Daten des Feather sind leider nicht im Lorawan Device Repository enthalten, deswegen erfolgt die Eingabe von Hand im Reiter Manually. Als Lorawan-Version wird V1.0.3 ausgewählt, diese Version wird von der verwendeten Bibliothek unterstützt. Das Auswahlfeld Regional Parameter Version wird daraufhin automatisch ausgefüllt. Der für Europa empfohlene Frequenzbereich ist 863 - 870 MHz (recommended) gekennzeichnet).
Die DevEUI liegt dem Feather auf einem kleinen Zettel bei, die mittleren vier Stellen sind hier mit 0 aufzufüllen. Die AppEUI wird nicht benötigt, sie wird mit dem Button rechts daneben mit Nullen gefüllt. AppKey ist ein zufällig generierter Key, der mit dem Button Generate generiert wird. Der letzte Wert, die End device ID, wird schließlich wieder automatisch ausgefüllt.
Der Feather wird hier mithilfe der Arduino-IDE programmiert. Damit das funktioniert, muss das Board zunächst hinzugefügt werden. In den Arduino-Einstellungen unter Zusätzliche Boardverwalter-URLs ist dafür die Adafruit-Boardverwalter-URL einzutragen: https://ift.tt/3hUtlL0
Daraufhin findet man die Adafruit SAMD Boards, zu denen der Feather M0 gehört, unter Werkzeuge - Board - Boardverwalter. Dort werden zunächst die Arduino SAMD Boards und danach die Adafruit SAMD Boards installiert.
Zusätzlich installiert wird im Bibliotheksverwalter (Werkzeuge - Bibliotheken verwalten) die MCCI LoRaWAN LMIC library.
Schließlich wird noch die Bibliothek DHT sensor library benötigt, die man auch im Bibliotheksverwalter findet. Bei der Installation wird auf die fehlende Dependency Adafruit Unified Sensor hingewiesen, die gleich mitinstalliert wird (Schaltfläche Install All). Board und Bibliotheken sind damit eingerichtet.
Anpassen des Codes
Unter Datei - Beispiele - MCCI LoRaWAN LMIC library - ttn-otaa-feather-us915-dht22 findet man ein Codebeispiel zum Auslesen des DHT22 und Versenden der Daten. Der Code muss allerdings an einigen Stellen angepasst werden. Ziemlich zu Beginn des Codes ist ein Regressionstest enthalten (der Abschnitt beginnend mit #ifdef COMPILE_REGRESSION_TEST), der auskommentiert werden kann.
Anschließend folgen die drei Konstanten APPEUI, DEVEUI und APPKEY, deren Wert auf die im Things Network vergebenen Daten gesetzt werden muss. Man findet sie dort im Reiter Overview des angelegten Devices. Neben dem Wert ist ein kleiner Button (Toggle Array Formatting). Drückt man ihn, taucht links daneben ein weiterer Button (Switch Byte Order) auf, mit dem sich der Key in das für APPEUI und DEVEUI erforderliche LSB-Format umwandeln lässt. Für DEVEUI sieht das dann beispielsweise folgendermaßen aus:
static const u1_t PROGMEM DEVEUI[8] = { 0x7C, 0x4F, 0x04, 0xD0, 0x7E, 0xD4, 0xB4, 0x70 };
Vorsicht beim APPKEY, der wird im MSB-Format benötigt. Es lohnt sich, die Kommentare über den Variablen genau durchzulesen ...
Die Zeile LMIC_selectSubBand(1); wird auskommentiert, sie funktioniert nur für das US-Frequenzband:
// LMIC_selectSubBand(1);
Vor der Zeile LMIC_setDrTxpow(DR_SF7,14); wird noch Folgendes ergänzt:
LMIC.dn2Dr = DR_SF9; // TTN uses SF9 for its RX2 window.
Schließlich wird für den Einsatz in Europa in der Datei lmic_project_config.h (auf dem Mac unter /Users/{Benutzername}/Documents/Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config) der Eintrag #define CFG_eu868 1 durch Entfernen der beiden Schrägstriche aktiviert. Die Zeile für CFG_us915 dagegen wird auskommentiert:
// project-specific definitions #define CFG_eu868 1 //#define CFG_us915 1
Danach kann der Sketch abgespeichert und auf den Feather übertragen werden. Dazu wird der Mikrocontroller mit einem USB-Kabel mit dem Rechner verbunden und unter Werkzeuge - Board - Adafruit SAMD Boards der oberste Eintrag (Adafruit Feather M0) selektiert. Außerdem wird unter Werkzeuge - Port die USB-Verbindung ausgewählt. Ein Klick auf den Hochladen-Button kompiliert den Code und überträgt ihn anschließend auf den Feather, wo er sofort startet. Im seriellen Monitor (Werkzeuge - Serieller Monitor) findet man die zugehörigen Meldungen. Nach der Ausgabe der Messdaten versucht sich der Feather mit dem Things-Netzwerk zu verbinden (EV_JOINING, EV_TXTSTART). Meldungen wie EV_JOINED und V_TXCOMPLETE lassen darauf schließen, dass das auch klappt:
17:44:08.112 -> Starting 17:44:08.145 -> Temperature: 25.50 *C 17:44:08.145 -> %RH 60.60 17:44:08.145 -> 314577: EV_JOINING 17:44:10.255 -> 445406: EV_TXSTART 17:44:16.550 -> 838566: EV_JOIN_TXCOMPLETE: no JoinAccept 17:45:20.145 -> 4815407: EV_TXSTART 17:45:25.275 -> 5136623: EV_JOINED 17:45:25.275 -> netid: 19 17:45:25.275 -> devaddr: 240BEF67 17:45:25.275 -> AppSKey: 0B-0C-49-44-62-2E-7E-EA-15-BC-50-39-2B-D5-BB-DF 17:45:25.275 -> NwkSKey: 14-8F-86-A5-39-E3-C5-F5-E0-3C-0A-2B-A2-DA-11-9C 17:45:25.313 -> 5136852: EV_TXSTART 17:45:30.388 -> 5455418: EV_TXCOMPLETE (includes waiting for RX windows) 17:45:30.877 -> 5486121: EV_TXSTART 17:45:36.951 -> 5865776: EV_TXCOMPLETE (includes waiting for RX windows)
Livedaten in der Things-Konsole
Wenn das Log im seriellen Monitor wie oben aussieht, werden die Daten von einem Gateway in der Umgebung empfangen und an das Things-Netzwerk weitergeleitet. Dort kann man sie nun in der Things-Konsole unter Live Data der Anwendung sehen. Die übertragenen Daten (man spricht hier auch von Payload) sind allerdings noch kodiert. Um sie in ein besser lesbares Format umzuwandeln, lässt sich unter Payload Formatters ein Javascript-Snippet von Adafruit registrieren. Danach werden die Daten dann wie im Screenshot ersichtlich in einem gut lesbaren Format dargestellt.
Im Outdoor-Einsatz lässt sich der Feather dann über die JST-Buchse mit einem 3,7-Volt-Lipo überall in Reichweite des Things Networks betreiben. Steht kein Gateway im Umkreis zur Verfügung, ist der Selbstbau eines solchen eine Option. Unser Beitrag Die DNA des Internet der Dinge zeigt, wie das mithilfe des Rasperry Pi kostengünstig geht. Wichtig dabei: Das The Things Network wechselt auf den Software-Stack V3, so dass nach der erfolgreichen Installation der Software auf dem Pi nun abweichend vom Beitrag eine neue Server-URL in /opt/ttn-gateway/bin/local_conf.json einzutragen ist: eu1.cloud.thethings.network.
Wer nun zwei linke Hände oder einfach keine Zeit zum Basteln hat, findet im Fachhandel auch eine Menge fertige Module: https://www.thethingsnetwork.org/marketplace/products/devices
Viel Spaß im Internet der Dinge!
https://ift.tt/3zA0stw
Wissenschaft & Technik
Bagikan Berita Ini
0 Response to "Internet der Dinge: Temperaturmesser Marke Eigenbau - Golem.de - Golem.de"
Post a Comment