kleiner LoRaWAN Temperatursensor

kleiner LoRaWAN Temperatursensor

10.10.2025

Im Moment des Sendens des LoRaWAN-Pakets (Länge etwa 50 ms) werden aus der CR2032-Ströme von 130 mA benötigt. Für diesen kurzen Augenblick ist die Knopfzelle sogar in der Lage, diesen Strom zu liefern. Nach einer Alterung oder bei sehr niedrigen Umgebungstemperaturen kommt es jedoch zu Spannungseinbrüchen. Im schlimmsten Fall startet der Controller neu und benötigt nach kurzer Zeit wieder die gleichen hohen Ströme, die nicht mehr bereitgestellt werden können. In diesem Moment endet das Senden augenblicklich.

Versuche, einen größeren Kondensator parallel zur CR2032 zu schalten, waren nicht erfolgreich. Zwei Zellen parallel zu schalten, wäre ein Lösungsansatz, doch der größere Platzbedarf ist nachteilig. Daher habe ich Versuche mit zwei in Reihe geschalteten 1,5 V-Knopfzellen vom Typ SR44 durchgeführt. Diese Knopfzellen können zwar einen höheren Strom liefern, haben aber weniger Kapazität. Außerdem hätte das Layout komplett überarbeitet werden müssen. Ein Test brachte keine nennenswerten Verbesserungen der Laufzeit.

Sehr gut funktionierte hingegen der Ansatz, einfach seltener zu senden. Wenn der Temperatursensor einmal pro Stunde sendete, konnte der LoRaWAN-Temperatursensor eine Laufzeit von 30 Tagen erreichen. Mit einem Sendeintervall von zwei Stunden waren sogar drei Monate Laufzeit möglich. In der aktuellen Softwareversion wird die Sendung dynamisch an die geänderte Temperatur angepasst. Ändert sich die Temperatur beispielsweise um weniger als 1 °C, können bis zu acht Sendevorgänge übersprungen werden.

Ein weiterer, sehr erfolgreicher Ansatz war das Ändern der Sendeleistung. Wenn das LoRaWAN-Gateway nicht zu weit entfernt ist, muss nicht mit voller Leistung kommuniziert werden. Einen ähnlichen Ansatz hatte ich bereits 2021 in der Softwareversion mit ABP erfolgreich getestet. Mit der Library „MCCI LoRaWAN LMIC Library“ ist dies ebenfalls möglich. In den beiliegenden Unterlagen fand ich dazu zunächst keine Hinweise. Kurz vor dem Sendemoment können Spreizungsfaktor und Sendeleistung mit folgendem Befehl angepasst werden:

LMIC_setDrTxpow(DR_SF7, 10);

Dieser Befehl setzt einen kurzen Sende-Zeit-Slot und eine geringere Sendeleistung (10 dBm). In meinem Fall konnte ich die Sendeleistung sogar auf 1 dBm reduzieren, ohne Einschränkungen. In den weiter unten gezeigten Screenshots vom Oszilloskop ist dies gut zu erkennen. Den Strom messe ich über den Spannungsabfall an einem 1 Ω-Widerstand, der in die Leitung zur Spannungsversorgung geschaltet wurde.

Links – volle Sendeleistung von mit fast 130mA Strom
Rechts – reduzierte Sendeleitung mit 60mA Strom bei 1 dBm (völlig ausreichende Sendeleistung)

09.09.2023

Tadellose Funktion auch nach 3 Monaten. Die Batterie ist noch proppenvoll.

12.06.2023

kleiner batteriebetriebener LoRaWAN Temperatursensor

Dieser kleine LoRaWAN Temperatursensor misst die Temperatur mit einem Dalla DS18B20 Temperaturfühler. In frei wählbaren Sendeintervallen werden die Temperatur- und auch die Spannungsdaten der CR2032 an das TTS / TTN Netzwerk gesendet. Als Sendefrequenz wird die in Europa übliche Frequenz von 868 MHz genutzt. Die Software verwendet das LoRaWAN Protokoll Version 1.0.3 mit einer sicheren Aktivierung über OTAA. Eine Sendereichweite von mehr als 10 Km ist bei LoRaWAN möglich.
Der Sendeintervall kann direkt vor dem Kompilieren der C Software zwischen 1 und 1440 Minuten voreingestellt werden. Viel komfortabler ist aber die Funktion, dass man über einen Downlink den Sendeintervall auch aus der Ferne einstellen kann. Der Sendeintervall in Minuten wird dafür entweder als 1 Byte Wert (0x01 – 0xFF) entspricht 1 bis 255 Minuten, oder als 2 Byte Werte (z.B. 0x02 , 0x58) entspricht 600 Minuten. Der neue Sendeintervall wird mit dem nächsten Sendevorgang übernommen.

Mein Außentemperatursensor mit Livedaten von Hoyerswerda !!!

(oben) mit Temperatur Messwerten der letzten 7 Tage.
(unten) Spannungsverlauf der Batterie

Der sehr kompakt aufgebaute SMD Sensor ist auf beiden Seiten bestückt, ist kleiner als eine Streichholzschachtel und wiegt nur 11 g. Der Ruhestrombedarf von weniger als 6 µA lässt den Sensor mit der verwendeten CR20232 Knopfzelle mit 230 mAh sehr lange Zeit betreiben. Wie viele Sendevorgänge mit einer Knopfzelle möglich sind, werde ich zu einer späteren Zeit berichten.

Die kleine Leiterplatte hat neben dem üblichen seriellen Anschluss zur Programmierung per Arduino IDE auch einen noch ungenutzten I2C Port. Hier könnten bei Bedarf weitere Sensoren angeschlossen werden. Einen direkten ISP Anschluss zur Programmierung des ATMEGA328P gibt es aus Platzgründen nicht. Da der ISP Anschluss nur einmal nach dem Aufbau verwendet werden muss (Arduino Hex-Firmware) habe ich die 6 Anschlusspunkte auf dem Layout markiert. Eine einfache 2×3 Steckliste mit 6 kurzen Kabel erfüllt einmalig diesen Zweck.

Download druckbares 3D-Gehäuse als ZIP STL-Datei (9 Kbyte ) – für die 8,6cm lange Draht-Antenne entweder oben oder unten ein kleines Loch in den Deckel bohren
Hier kannst Du zum aktuellsten GITHUB Programmcode springen.

Download Schaltung als PDF (28 Kb)
Download Leiterbestückung oben als PDF (12 Kb)
Download Leiterplattenbestückung unten als PDF (8 Kb)