TTN MKRWAN -Knoten
Hintergrund
Proof of Concept für einen "Ultra Low Power" Lorawan / The Things Networkknoten mit dem Arduino MKR Wan 1300.
Der MKR WAN 1300 verwendet zu viel Leistung im Schlafmodus, um als Ultra -niedriger Stromeinrichtung (etwas mehr als 1 mA) zu verwendet.
Dieser Proof of Concept verwendet ein texanisches Instrument TPL5110 Ultra Low Power Timer, um den Schlafstrom unter 50NA zu bringen.
Da das Gerät während der Schlafzeit vollständig ausgeschaltet ist, verwenden wir ein FRAM -Modul, um die Lorawan -Sitzungsschlüssel und Frame -Zähler zu speichern.
Zwei Testknoten:
Oben links: Anzeige- und Maxim DS18B20 -Temperatursensor
Unten links: Bosch BME280 Temperaturfeuchtigkeit und Drucksensor

Oben rechts: Schlafstrom
Unten rechts: Strom ausführen (Knoten mit der Anzeige)
Operationstheorie
- TPL5110 wacht auf und versorgt auf dem MKR Wan 1300
- Lesen Sie gespeicherte Daten von Fram
- Treten Sie dem Netzwerk bei
- OTAA das erste Mal (keine Daten in Fram)
- ABP Verwenden Sie anschließend die gespeicherten Sitzungsschlüssel und Frame -Zähler
- Sammeln Sie Daten von Sensoren
- Senden Sie Lorawan Nutzlast im Cayenne LPP -Format
- Überprüfen Sie die Downlink -Nachricht
- Geben Sie den Schlafmodus ein (erhöhen Sie den Fertig -Pin des TPL5110)
Hardwareanforderung
Der Code basiert auf der folgenden Hardware:
- Arduino MKR Wan 1300 - Firmware 1.1.7 oder neuer
- TPL5110 Breakout
- Fram Breakout
- Sensoren, Beispielcode für
- Batteriespannung (mit dem eingebauten Teiler)
- Maxim DS18B20 Temperatursensor (ein Draht)
- Bosch BME280 Temperaturfeuchtigkeitsdrucksensor
- Optional
- SH1106 128x64 I2C Display zum Debuggen
- Taste zum Reset (OTAA -Join) zur Startzeit zum Erzwingen
Jede ähnliche Hardware sollte funktionieren, erfordert jedoch möglicherweise eine Codesänderung.
Softwareabhängigkeiten
Die Arduino -IDE mit folgenden Bibliotheken (alle beim Arduino Library Manager erhältlich):
- Arduino Mkrwan Version 1.1.7 oder neuer
- Adafruit Fram (SPI -Version)
- TheThingsNetwork Version 2.5.13 oder neuer ( nicht 2.5.12!)
- Für den BME280 -Sensor
- Adafruit Unified Sensor
- Adafruit BME280
- Für den Maxim DS18B20 -Sensor
- Für die optionale Anzeige: U8G2
Beispielaufbau
Proben Sie ein Setup mit einem SH1106 -OLED -Display und einem DS18B20 -Sensor:

Operationen
Softwarekonfiguration
- Kopieren Sie
arduino_secrets_distr.h in arduino_secrets.h und geben - In
TTNMkrWanNode -Überzeugung die Definierungen für Ihre Sensoren.
Der Spannungssensor ist immer verfügbar und verwendet den eingebauten Teiler. Beachten Sie, dass die Tatsache, dass der Teiler 1/3 und die Spannungsreferenz 1,0 V beträgt, das Maximum, das Sie messen können, 3,0 V beträgt ... - In
debug.h wählen Sie Ihre Debugging -Option:-
#define DEBUG aus kommentierte: Kein Debug -Code generiert -
#define DEBUG -Komponität: Debugg über die Serienkonsole (USB). Der Knoten wird auf die Konsole warten! -
#define DEBUG und #define OLED -Komponenten: Debugg -Nachrichten auf der OLED -Anzeige.
- In
ttn.h können Sie Ihren Lorawan -Standard -Port und Ihre Datenrate festlegen
Leistung
Trennen Sie die Kraft aus dem TPL5110 (DRV) beim Einschalten von USB.
Initialisierung
Wenn der FRAM keine gültigen Daten enthält oder wenn die Taste gedrückt wird, wenn der MKR WAN 1300 startet, führt das Gerät einen OTAA -Join durch.
Downlink -Nachrichten
Vor dem Schlafen prüft der Knoten auf Downlink -Nachricht:
- 0x01: Zurücksetzen. Der Knoten führt während des nächsten Zyklus einen OTAA -Join durch
- 0x02 0xpp: Port. Der Knoten verwendet Port
pp beim Senden von Daten - 0x03 0xdd: Datenrate festlegen. Der Knoten verwendet die angeforderte Datenrate.
Schlafzeit
- Wenn der Knoten von USB betrieben wird, stillt der Knoten 5 Minuten lang im Leerlauf und setze sich zurück
- Wenn Sie durch das TPL5110 betrieben werden, wird die Schlafzeit von einem Widerstand angetrieben (auf dem Adafruit -Ausbruch können Sie den Trimpot auf der Tafel verwenden)