IR-Thermometer mit LoRaWAN
05.06.2025
Elektronik | Funk | Software
Der Technik-Blog
Dieser Artikel ergänzt das YouTube-Video zur BME280-Messstation und knüpft direkt an den vorherigen Beitrag über die I²C-Kommunikation mit der LW-Base (STM32-Mikrocontroller Board) an. Nachdem dort die grundlegende Ansteuerung eines I²C-Sensors gezeigt wurde, folgt nun die Erweiterung um LoRaWAN. Ziel ist es, die erfassten Daten vom BME280 (Temperatur, Luftdruck und Luftfeuchtigkeit) nicht nur lokal auszulesen, sondern auch per Funk mit LoRaWAN zu übertragen. Die Kombination aus energieeffizienter Hardware und kabelloser Kommunikation macht dieses Projekt ideal für batteriebetriebene kleine Wetterstation.
Als Mikrocontroller-Board kommt die LW-Base von ELV zum Einsatz. ELV bietet im Rahmen seines Modulsystems verschiedene Erweiterungen an, darunter auch das Energieversorgungsmodul (ELV-EM-AP2), welches für dieses Projekt verwendet werden kann. Damit ist ein zuverlässiger Batteriebetrieb über mehrere Monate ( abhängig von Messintervall und Sendehäufigkeit) möglich. Für den Außeneinsatz kann ein Strahlenschutzgehäuse von TFA Dostmann verwendet werden, um den Sensor vor direkter Sonneneinstrahlung und Witterungseinflüssen zu schützen. Der BME280, ist auf einem Breadboard montiert und wird per I²C-Bus mit der LW-Base verbunden. Die benötigten Anschlüsse sind: GND (Masse), PA11 (SDA), PA12 (SCL) und PC13 für die 3,3 Volt Energieversorgung. Die Software ist so vorkonfiguriert, dass die 3,3-V-Versorgung nur während der Datenauslesung aktiviert wird. Danach wird der Pin wieder deaktiviert, um den Energieverbrauch des Systems weiter zu minimieren. Die Verdrahtung sieht wie folgt aus:
Für die LW-Base steht ein bereits kompiliertes Hex-File zum Download zur Verfügung. Mit dem Flasher-Tool kann dieses File ohne weitere Programmierkenntnisse direkt auf die LW-Base geladen werden. Der Quellcode (app.c) und die dafür entwickelte Bibliothek kann am Ende von diesem Artikel heruntergeladen werden. Mit dem Flasher-Tool wird die Software hochgeladen:
Die per LoRaWAN versendeten Messdaten müssen vom Netzwerkserver wieder decodiert werden. Dafür steht ein JS-Decoder zur Verfügung, welcher die übertragenen Bytes wieder in Variablen umwandelt und an die gewünschte Schnittstelle weitergeben kann:
function decodeUplink(input) { var bytes = input.bytes; var tx_reason_list = [ "Timer_Event", "User_Button_Event", "App_Event", "FUOTA_Event", "Cyclic_Event", "Timeout_Event" ]; var TX_Reason = (bytes[0] < tx_reason_list.length) ? tx_reason_list[bytes[0]] : "Unknown"; var Supply_Voltage = (bytes[3] << 8) | bytes[4]; var Sensor_Status = bytes[5]; var temperature = (bytes[6] << 8) | bytes[7]; if (temperature & 0x8000) temperature -= 0x10000; var pressure = (bytes[8] << 16) | (bytes[9] << 8) | bytes[10]; var humidity = (bytes[11] << 8) | bytes[12]; return { data: { TX_Reason: TX_Reason, Supply_Voltage: Supply_Voltage, Sensor_Connected: (Sensor_Status !== 0), Temperature: temperature / 100.0, Pressure: pressure / 100.0, Humidity: humidity / 100.0 } }; }
Das ZIP-Archiv kann unter folgenden Link heruntergeladen werden: STM32/LW-Base Hex-Files und Quellcode.
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-2025 All Right Reserved