LoRaWAN UDP Packet Forwarder 1
17.12.2024
Elektronik | Funk | Software
Der Technik-Blog
Die große LoRa Wetterstation aus dem Jahr 2020 bekommt ein Update. Das Modell aus dem Jahr 2020 basiert zwar auf der LoRa Technologie, ist aber mit LoRaWAN Netzwerken wie TTN oder dem Nachfolger TTS nicht kompatibel. Daher veröffentliche ich mit diesem Artikel (Version 3.1) auch eine neue Software für die Wetterstation, welche mit aktuellen LoRaWAN Netzwerken und OTTA kompatibel ist. Außerdem möchte ich in diesem Artikel meine persönlichen Erfahrungen nach einem Jahr Betriebszeit teilen und neue Schaltpläne für die Hardware veröffentlichen.
Die Software wurde stark modifiziert, ist aber nach einigen wenigen Anpassungen mit der Sensorik von Version 3.0 (April 2021) vollständig kompatibel. Auf der Hardware-Seite wurde die Logik und Pinbelegung vom Windsensor geändert und eine andere Akku-Technologie verbaut. Das Potentiometer für die Empfindlichkeitseinstellung des Sonnensensors wurde durch einen Trimmer ersetzt, was eine höhere Einstellpräzession ermöglicht. Die Sensorik wurde beibehalten.
Die Wetterstation wurde im April 2020 installiert. Über den gesamten Sommer gab es keinen Ausfall, selbst eine Woche ohne Sonne konnte die kleine Li-Ion Zelle mit 500 mAh erfolgreich überbrücken. Erste Ausfälle über Nacht gab es Mitte Oktober. An bewölkten Tagen ging die Wetterstation meist tagsüber und etwa ein bis zwei Stunden nach Einbruch der Dämmerung. Die Hardware schaltete ab und meldete sich kurz nach Sonnenaufgang wieder. Im November ging die Wetterstation eines Abends aus und meldete sich seitdem nicht mehr. In dieser Nacht gab es bereits Temperaturen im Minusbereich. Da ich noch andere Wetterstationen im Garten habe, war dieser Ausfall für mich nicht von großer Bedeutung, weshalb die Station bis April 2021 so stehen geblieben ist. Das Gateway war während der gesamten Zeit aktiv und hat auch andere Sensoren erfolgreich mit meinen Cloud-Diensten verbunden. Schon im November war meine Vermutung, dass die Li-Ion-Zelle defekt ist, denn diese kleinen Zellen sind nicht besonders gut für tiefe Temperaturen geeignet. Die Station wurde abgebaut und in meiner Werkstatt zerlegt.
Bevor die Station zerlegt wurde, habe ich diese auf äußerliche Veränderungen überprüft. Das Windrad hat weist eine leichte Verfärbung (aufgrund der UV-Strahlung) auf. Mechanisch hat sich der Widerstand beim Andrehen des Anemometers nicht spürbar verändert. Sehr positiv überrascht war ich vom Strahlenschutz, wo sich im Inneren der BME280 befindet. Es gab keine Verfärbung durch die UV-Strahlung. Im Inneren gab es auch keine Spuren von Regenwasser und keine Oxidation an Kupfer und Lötzinn. An heißen Tagen bildeten sich am Reagenzglas, wo der Sonnensensor verbaut ist (Fotowiderstand), kleine Tröpfchen an oberster Stelle. Es gab dadurch keine Beeinträchtigung, jedoch sollte man beim Zusammenbau des Sensors darauf achten, dass keine Feuchtigkeit in das Glas hineinkommt. Am besten also den Sensor nicht im Keller zusammenbauen und vor dem Verschließen eventuell im Backofen oder in der Mittagssonne gut trocknen lassen. Die Photovoltaik-Zelle befindet sich ebenfalls in einem sehr guten Zustand. Am ALU-Rahmen konnte ich keine Verschlechterungen feststellen und auch alle Schrauben blieben rostfrei. Anschließend öffnete ich das Gehäuse, wo sich der ESP32, Spannungsregler, Laderegler und Akku befindet. Auch hier war kein Wassereintritt festzustellen.
Die Spannungsmessung der verbauten Li-Ion-Zelle ergab etwa 2,8 Volt. Eine Li-Ion-Zelle sollte mindestens 3,7 Volt haben, bei voller Aufladung sogar um die 3,9 Volt. Der verbaute Akku gilt daher als Tiefenentladen und ist somit defekt. Im nächsten Schritt wurde der ESP32 mit 3,3 Volt vom Labornetzteil versorgt, um zu überprüfen, ob dieser und die Sensoren noch funktionsfähig sind. Nach 10 Minuten Betriebszeit kamen noch immer keine Daten am Gateway an. Das ESP32 Board wurde anschließend ausgebaut und direkt mit dem Computer verbunden. Ein erneuter Upload der Software war laut Arduino IDE erfolgreich, jedoch kamen auch danach weder im Serial Monitor als auch am Gateway Daten an. Ein neues ESP32 Board hingegen funktionierte sofort. Somit steht fest, dass neben der defekten Li-Ion-Zelle auch das Board defekt ist. Möglicherweise wurde das Board aufgrund einer Unterspannung beschädigt oder es liegt ein Softwareproblem mit dem Bootloader oder einer Partition vor. Auf eine weitere Fehlersuche beim ESP32 Board habe ich vorerst aus zeitlichen Gründen verzichtet. Als Letztes wurden noch der 12V->5V DC-DC Converter, der BME280 (Multisensor) & der TP4050 (Laderegler) überprüft. Alle drei Komponenten funktionieren einwandfrei.
Anlass für einen Umbau war der Platzmangel im Gehäuse, wo sich die Elektronik befindet. Außerdem ist der neue Akku deutlich größer und kann deshalb nicht in das bestehende Gehäuse eingebaut werden. Alle Sensoren und auch die im ALU-Rahmen eingezogenen Kabel bleiben bestehen. Die Lochraster-Platine wird ebenfalls erneuert und vergrößert, sodass man im neuen Gehäuse an alle Klemmen und an das Potentiometer leicht dazu kommt.
Bauteil | Wert |
---|---|
Trimmer (SET) | 500K |
Widerstand (SET) | 10K |
Printklemme | 2 Polig |
Laderegler | TP4056 |
NiHM Akku | 3,6 Volt (3S) |
Das HELTEC ESP32 LoRa Board wird mit der neuen Schaltung direkt über den Batterie-Pin an der Unterseite mit 3,5 bis 4,2 Volt versorgt. Der Stecker ist direkt mit dem VOUT vom TP4050 Laderegler verbunden. Alle weiteren Bauteile und Sensoren sind mit dem Pluspol direkt an den 3V3-Pin angeschlossen sowie mit der Masse an den GND-Pin.
Anemometer-Schaltung:
Das Anemometer gibt bei jeder Umdrehung einen Impuls ab. In der Version 3.0 (2020) wurde mit einem High-Level gearbeitet, was bedeutet, dass bei jeder Umdrehung der Impuls ein High-Pegel ist. Die 3,3 Volt wurden durch den Reed-Kontakt durchgeschliffen und zusammen mit einem Pull-Down Widerstand an den I/O-Pin geführt. In der aktuellen Version wurde die Logik geändert. Ab sofort wird die Masse-Leitung über das Anemometer geführt und der Pegel vor dem I/O-Pin mit dem Pull-Up Widerstand hochgezogen. Grund für diese Änderung ist lediglich eine Standardisierung, da so eine Sensor-Verschaltung so üblich ist. Des Weiteren wurde auch der Pin am ESP32 geändert, da der ursprüngliche Pin auch für den Programm-Upload verwendet wird. Je nach Anemometer-Stellung gab es bei dem Programm-Upload Probleme.
Sonnensensor:
Die Verschaltung vom Fotowiderstand bleibt gleich, jedoch wurde das Potentiometer durch einen Trimmer ersetzt. Trimmer sind gegenüber den Potentiometern wesentlich präziser, was in so hochohmigen Bereichen sehr vorteilhaft ist.
Fotowiderstand und Potentiometer bilden somit einen verstellbaren Spannungsteiler, der in der Mitte an den I/O-Pin gekoppelt ist. Der Trimmer hat 500 Kiloohm, was in meinem Fall ausreichend ist. Es kann jedoch sein, dass je nach verwendetem Fotowiderstand ein noch größerer Trimmer verbaut werden muss. Zudem sollte man auch bedacht auf den Eingangswiderstand vom I/O-Pin nehmen, denn dieser ist ebenfalls sehr hochohmig.
BME280
Der BME280 liefert Messwerte zu Temperatur, Luftdruck und Feuchtigkeit. Hier wurden keine Änderungen vorgenommen.
Li-Ion Akkus sind bekanntlich sehr kälteempfindlich. Ich habe mich vorerst entschlossen, eine NiHM-Zelle (Nickel-Metallhydrid-Akku) zu verbauen. Diese Technologie ist etwas weniger empfindlich bei niedrigen Temperaturen jedoch auch nicht perfekt. Da der Akku aber eine weitaus höhere Kapazität hat als der zuvor verbaute Li-Ion-Akku, sollte die Kapazität auch im Winter noch ausreichen. Der NiHM-Akku hat anstatt 3,7 Volt nur 3,6 Volt Spannung. Der Unterschied ist jedoch so minimal, dass ich keine Probleme mit dem bestehenden Li-Ion Laderegler erwarte. Auch die 4,2 Volt Ladeschlussspannung wird der Akku vertragen. Generell gibt es schon alternative Akkus, die mit niedrigeren Temperaturen besser zurechtkommen, jedoch passt die Spannung meistens nicht. Als Beispiel nenne ich hier LiFePO4 Akkus oder Bleiakkus. Interessant sind hingegen noch Low-Temp Li-Ion Akkus. Diese Akkus haben die gleiche Spannung und sollten laut Herstellerangaben bis minus 40 Grad Celsius verwendbar sein. Ich plane vor dem Winter noch ein Update bezüglich der Batterien zu machen.
Aufgrund zahlreicher Anfragen gibt es eine neue Software, die LoRaWAN im OTTA-Mode unterstützt. Wer gerne mit dem ESP32 HTTPS Gateway arbeiten möchte, kann die bestehende Software aus Version 3.0 nehmen und muss lediglich den Anemometer-Pin anpassen. Der neue Beispielcode (Version 3.1) ist hier erhältlich. Dieser Code beinhaltet noch keine Low-Power Features und unterstützt kein ABP! Beide Themen werden in einem separaten Beitrag nachgeholt. Der vollständige Source Code und der Hardware Test Code kann als ZIP-Archiv heruntergeladen werden.
Wetterstation bei TTS registrieren
TTS ist der Nachfolger von TTN (The Things Network). Die Wetterstation muss dort zuerst registriert werden. Einen Artikel sowie ein Video zur Registrierung vom Heltec ESP32 LoRa Board mit OTTA gibt es hier. Nach der Registrierung erhält man vom LoRaWAN Netzwerk folgende Schlüssel:
Anschließend werden diese Schlüssel in den Beispielcode kopiert. Hier ein Beispiel:
static const u1_t PROGMEM APPEUI[8] = {YOUR AppEUI}; static const u1_t PROGMEM DEVEUI[8] = {YOUR DevEUI}; static const u1_t PROGMEM APPKEY[16] = {YOUR AppKey};
*AppEUI & DevEUI werden in LSB kopiert. Der AppKey wird wie standardmäßig angezeigt in MSB kopiert.
Damit die empfangene Payload wieder richtig decodiert und in die einzelnen Messwerte zerlegt werden kann, wird ein Decoder benötigt. Eine genaue Erklärung zur LoRa Payload (speziell auch für diese Wetterstation) sowie zum Encoder und Decoder gibt es hier. Der folgende Payload Decoder wird bei TTS als Javascript eingefügt:
function Decoder(bytes, port) { var tmp = (bytes[0]<<8 | bytes[1]); var pre = (bytes[2]<<8 | bytes[3]); var hum = (bytes[4]); var wnd = (bytes[5]<<8 | bytes[6]); var sun = (bytes[7]); return { temperature: (tmp-5000)/100, airpressure: pre/10, humidity: hum/2, windspeed: wnd/10, sunlight: sun/2 } }
TTS bietet viele Schnittstellen zu anderen Netzwerken an. Die Wetterdaten können von TTS aus über Webhooks an den eigenen Webserver gesendet werden. Außerdem gibt es eine MQTT Schnittstelle oder auch die ThingSpeak Integration. Ich plane auch zu diesen Themen einen entsprechenden Artikel zu erstellen.
Einstieg in das LoRaWAN (TTN) mit dem Heltec LoRa32 V3 und Einrichtung vom Board in der Arduino IDE
WeiterlesenStarthilfe LoRaWAN - Diese Seite richtet sich an alle Einsteiger, die mit LoRaWAN starten wollen und ihre Sensoren in das IoT-Netzwerkt TTN integrieren wollen
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved