LoRaWAN-Workshop

Temperatur-Node DS18B20

Dieser LoRaWAN-Node basiert auf der Schaltung des Temperatur-Sensor DS18B20. 

Die mit dem Sensor DS18B20 gemessene Temperatur werden mit LoRaWAN-Pakete ins LoRaWAN-Netz übertragen. 

Zusätzlich wird die Temperatur auch auf dem Display angezeigt und über die serielle Schnittstelle übertragen. 

Der Datenbus des Temperatur-SensorsDS18B20 wird an den GPIO-Pin 13  angeschlossen. Ein 4k7-Widerstand dient als Pulldown-Widerstand. 

Für den Aufbau und Test dieser Schaltung gibt es eine Anleitung und ein Testpogramm. Dort ist auch die Installation der dafür notwendigen Bibliotheken beschrieben.

Der Quellcode für den Temperatur-Node findet man in unserem Github-Repo unter 

https://github.com/DO6FP/hamgroup_lorawan/tree/main/code/LoRaWAN_Temperatur_DS18B20

Nach dem Herunterladen muss man die DevEUI und den AppKey entsprechend anpassen. 

Dazu muss man den Node zuerst im TTN anlegen und die EUI bzw. den Key dort generieren und in diese in den eigenen Quellcode einfügen. 

Dies erfolgt so wie schon bei dem ersten einfachen LoRaWAN-Node:

LoRaWAN-Node einrichten

Wir legen dazu eine neue Application an. Dann wird über "Add end device" der neue Taster-Node eingerichtet. 

Den passenden Payload-Formatter findet man im Arduino-Quellcoden ganz unten. Diesen muss man noch in das Feld für den Uploink-Payload-Formatter kopieren. 

Dies erfolgt in der selben Weise wie schon beim ersten einfachen LoRaWAN-Node:

Payload-Formatter

Wenn alles korrekt eingerichtet ist wird sich der neue Node im TTN-Netz anmelden ( "join" ). 

Payload-Format:

Es werden zwei Bytes übertragen. 

Um eine Dezimalzahl mit einer Nachkommastelle in diese zwei Bytes zu packen muss diese in eine 32-Bit-Zahl konvertiert werden. 

Beispiel:   19,44 °C

* 10 194,4 Komma verschieben  ( für eine Nachkommastelle)
round() 194 runden
+ 1000 1194 1000 addieren -> in positiven Bereich verschieben

Durch die Addition von 1000 verschiebt sich der Wertebereich ins Positive. 

Damit können Temperaturwert von -100 °C aufwärts als postive Zahl übertragen werden. 

Der konvertierte Zahlenwert 1194 wird dann in zwei Bytes aufgeteilt:

>> 8 obere 8 Byte in mydata[0]
& 0xFF untere 8 Byte in mydata[1]

Die vier Hexzahlen in diesen zwei Bytes könnten dann als Payload via LoRaWAN übertragen werden

Dieses zwei Byte muss dann im Payload-Formatter wieder zerlegt werden:

function Decoder(bytes, port) {

  var decode = {};

  decode.temperatur = ( ((bytes[0] << 8) | bytes[1]) / 10 ) - 100;

  decode.temperatur = round( decode.temperatur );

  decode.bytes = bytes; return decode; }

function round(num) {

  var m = Number((Math.abs(num) * 100).toPrecision(15));

return Math.round(m) / 100 * Math.sign(num);

}

 

Weiterleitung ( Integration )

Es ist sinnvoll für diesen Node eine neue eigene Weiterleitung (Webhook) einzurichten. 

Dies erfolgt wie bei den anderen Nodes:

Integration (Weiterleitung)

Es sollte aber beim "call" eine neuer Parameter eingetragen werden. Damit kann man dann auf dem Webserver seine Nodes besser unterscheiden. 

Base URL => https://www.p37.de

Uplink Message => Enabled => LoRaWAN/ttn/ttn3.php?call=XXXXXX-temp

Beispiel: ?call=DL8MA-temp

 

Aktiver Temperatur-Node:

https://www.p37.de/LoRaWAN/ttn/anzeige.php?call=dl8ma-temp

https://www.p37.de/LoRaWAN/ttn/liste.php?call=dl8ma-temp&label=temperatur

 

 

...

powered by webEdition CMS