IR-Thermometer mit LoRaWAN
05.06.2025
Elektronik | Funk | Software
Der Technik-Blog
Dieser Artikel ergänzt das YouTube-Video zur MLX90614-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 Temperaturdaten des MLX90614 nicht nur lokal auszulesen, sondern auch per Funk mit LoRaWAN zu übertragen. Die Kombination aus kontaktloser Temperaturmessung und energieeffizienter Kommunikation macht dieses Projekt ideal für batteriebetriebene Anwendungen wie Smart-Home, Technikräume oder Umweltmonitoring.
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. Der MLX90614, 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 temp_s = (bytes[6] << 8) | bytes[7]; if (temp_s & 0x8000) temp_s -= 0x10000; var temp_i = (bytes[8] << 8) | bytes[9]; if (temp_i & 0x8000) temp_i -= 0x10000; var emiss = (bytes[10] << 8) | bytes[11]; return { data: { TX_Reason: TX_Reason, Supply_Voltage: Supply_Voltage, Sensor_Connected: (Sensor_Status !== 0), Temperature_Surface: temp_s / 100.0, Temperature_Internal: temp_i / 100.0, Emissivity: emiss/ 100.0 } }; }
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