Python gehört schon seit Jahren zu den beliebtesten Programmiersprachen überhaupt. Die von Python zur Verfügung gestellten Eigenschaften stellen Anforderungen an die Hardware, die von Mikrocontrollern nicht ohne Weiteres erfüllt werden können. Ein PC kann das. Ein Raspberry Pi mit Linux als Betriebssystem kann das, ein Mikrocontroller wie ein Espressif ESP32, ein Nordic nRF52840, ein STM32 oder eines der verschiedenen Arduino-Boards hingegen nicht.
Das hat Damien P. George, einen Physiker und Softwareentwickler aus Cambridge (UK), im Jahr 2013 dazu bewogen, MicroPython zu entwickeln. Ziel der Entwicklung von MicroPython war, eine voll funktionsfähige, aber kompakte Version von Python 3 zu schaffen, die auf Mikrocontrollern (wie STM32, ESP8266, ESP32, RP2040 usw.) läuft. Mit diesem Buch werden Sie die Gemeinsamkeiten und Unterschiede von Python und MicroPython kennenlernen und schließlich in der Lage sein, mit MicroPython auf recht kleinen Mikrocontrollern zu arbeiten.
Im Blogbeitrag „Meshtastic – Erfassung und Versand von Messwerten“ hatte ich die Erweiterung eines Meshtastic-Knotens mit Sensoren und den Versand der erfassten Messwerte betrachtet. Damit stehen die Messwerte im Meshtastic-Netzwerk zur Verfügung.
Sollen die erfassten Messwerte visualisiert oder anderweitig weiterverarbeitet werden, dann müssen sie außerhalb des Meshtastic-Netzwerks zur Verfügung gestellt werden. Ein mit einer MQTT-Schnittstelle ausgestatteter Meshtastic-Knoten kann die Verbindung ins Internet ermöglichen. Auf diese Weise lassen sich örtlich weit auseinanderliegende (lokale) Meshtastic-Netzwerke verbinden und/oder erfasste Daten zentral auswerten.
Der Off-Grid-Aspekt geht in diesem Fall allerdings verloren.
Bei den folgenden Betrachtungen gehe ich von dem in der Abbildung gezeigten Meshtastic-Netzwerk aus.
Hervorzuheben sind hier der RAKwireless-Sensorknoten auf Basis eines Mikrocontrollers RAK4631 (nRF52840), der Messwerte über verschiedene Sensoren erfasst und diese im Meshtastic-Netzwerk zur Verfügung stellt, und der Heltec LoRa32 V3 Knoten auf Basis eines ESP32-S3, der eine WiFi-Schnittstelle zur Verbindung mit einem Router und über diesen mit dem Internet ermöglicht. Die anderen Meshtastic-Knoten (in der Abbildung nicht eingefärbt) empfangen die Nachrichten des Sensorknotens und dienen dem üblichen Nachrichtenaustausch.
Speisung des Meshtastic-Knoten durch einen DFRobot Solar Power Manager 5 V
Der Ladezustand des eingesetzten NCR18650 Li-Ion-Akkus muss separat überwacht werden. Hierzu verwende ich einen INA219, der über den I2C-Bus mit dem Grove-Anschluss des RAK1920 Sensor Adapter Modul verbunden wird (siehe Abbildung).
Messung des Ladezustands des LiPo-Akkus mit einem INA219-Sensor
Der mit einem I2C-Interface ausgestattet SHTC3-Sensor zur Messung von Temperatur und relativer Feuchte kann über einen I2C-Hub (z.B. von M5Stack) mit dem Grove-Anschluss des RAK1920 Sensor Adapter Moduls verbunden werden.
Der Temperatursensor DS18B20 ist Bestandteil des im Blogbeitrag „Meshtastic – Erfassung und Versand von Messwerten“ beschriebenen externen Sensormoduls, welches über ein serielles Interface mit dem RAK1920 Sensor Adapter Modul verbunden wird.
Beide Mikrocontroller, der Meshtastic-Knoten und das externe Sensormodul, werden vom DFRobot Solar Power Manager 5 V über ein USB-A- zu 2x USB-C-Kabel mit Spannung versorgt.
Als MQTT-Broker verwende ich HiveMQ (https://broker.hivemq.com). Es ergibt sich damit die in der Abbildung gezeigte Zusammenstellung.
Vom Meshtastic-Gateway werden mit dem Token msh/2/json/LongFast verschiedene MQTT-Messages versendet (published). Ein MQTT-Client abonniert (subscribed) diese Tokens und kann damit die übermittelten Nachrichten weiterverarbeiten.
Ich habe auf dem PC den MQTT-Client MQTTX installiert und kann damit die empfangenen Messages anzeigen. Abgeleitet von den aktivierten Meshtastic-Modulen empfange ich vom Knoten 2692927950 (RAK1) die folgenden Messages:
In den drei Messages sind alle von den Sensoren erfassten Messwerte enthalten. Vom Sensor SHTC3 werden Temperatur (temperature) und rel. Luftfeuchtigkeit (relative_humidity) erfasst. Der Sensor INA219 erfasst den Ladezustand der Batterie mit Spannung (voltage) und Strom (current).
Der Temperaturmesswert des DS18B20 Sensors wird vom externen Sensormodul als Textstring übergeben und folglich auch als Textmessage (text) versendet.
Die Positionsdaten sind hier fest vorgegeben und werden in der Position Message (altitude, latitude_i, longitude_i) versendet.
Die MQTT-Messages enthalten weitere Daten, die bei Bedarf auch noch ausgewertet werden können.
Ich verwende zum Zugriff auf den MQTT-Broker und zur Visualisierung der erfassten Messwerte die IoT-Plattform Datacake. Datacake ist eine vielseitig einsetzbare Low-Code-IoT-Plattform, die keine Programmierkenntnisse und nur minimalen Zeitaufwand erfordert, um benutzerdefinierte IoT-Anwendungen für den Desktop oder Mobil Devices zu erstellen.
Die folgenden Abbildungen zeigen ein Dashboard für einen Desktop-PC und zwei Screenshots des Dashboards für ein Smartphone.
Ich habe mich recht intensiv mit Meshtastic beschäftigt und die Erfahrungen im eBook Meshtastic – Funknetze mit LoRa zusammengestellt. Hier im Blog sind neue Erfahrungen und Ergebnisse erschienen.
Es ist sehr erfreulich, dass neue Boards und Module die bislang vorhandene Hardware ergänzen und durch Meshtastic auch unterstützt werden.
Ein Blick in den WebFlasher zeigt die Vielzahl heute unterstützter Boards.
Aus diesem breiten Angebot kann sicher ein Board gefunden werden, welches die konkreten Anforderungen abdeckt. Die Beschaffung selbst ist derzeit auch kein Problem mehr. Wer die Bestellung beim Lieferanten in China nicht vornehmen möchte, findet für die meisten Boards auch einen Lieferanten in Europa.
Im folgenden Excel-Sheet habe ich die bei mir laufenden Meshtastic Nodes mit wichtigen Merkmalen zusammengestellt. Die Tabelle ist nicht final und wird ggf. erweitert. Der Änderungsstand ist am Fuss der Tabelle vermerkt.
Für Ihre Hinweise bin ich jederzeit offen und kann auch dementsprechende Ergänzungen vornehmen.
Im Blockbeitrag Solarbetriebener LoRa-Knoten habe ich einen auf WisBlock-Komponenten (RAK4631) basierenden LoRaWAN-Knoten vorgestellt. Eine 5 W Solarzelle lädt bei genügend Sonnenlicht einen 18650-LiPo-Akku auf. Die Spannungsversorgung des LoRa-Knotens erfolgt durch die höhere der beiden Spannungen.
Der gleichen Hardware habe ich die Meshtastic Firmware aufgespielt und starte einen Versuch zum autonomen Betrieb dieser Konfiguration. Ein Meshtastic Client bietet insofern ungünstige Bedingungen, als er praktisch im Dauerbetrieb läuft und nicht einfach in einen Deep Sleep versetzt werden kann.
Der Test beginnt mit einem mittelmäßig aufgeladenen LiPo-Akku, dessen Entladung am ersten Tag durch reichlich zwei Stunden Sonnenschein wieder ausgeglichen wurde. Am zweiten Tag war die Sonnenscheindauer etwas länger, die Sonneneinstrahlung aber weniger intensiv, wodurch die Entladung nicht kompensiert wurde. Dieser Vorgang setzt sich bis zum Aussetzen der Kommunikation fort.
Die folgenden Screenshots des Ladezustands und die Tabelle zeigen die konkreten Werte.
Erste 48 h Testzyklus
Letzte 24 h Testzyklus
Status
Daum
Uhrzeit
Batteriespannung
Ladezustand
Start Entladung
15.12.2024
19:56
3.59 V
36 %
Start Solarnachladung
16.12.2024
11:16
3.40 V
18 %
Ende Solarnachladung
16.12.2024
13:56
3.63 V
40 %
Start Solarnachladung
17.12.2024
11:13
3.36 V
14 %
Ende Solarnachladung
17.12.2024
15:20
3.54 V
31 %
…
…
…
…
…
Start Solarnachladung
18.12.2024
13:55
3.32 V
11 %
Ende Solarnachladung
18.12.2024
14:08
3.23 V
6 %
Ende der Kommunikation
18.12.2024
15:44
3.05 V
0 %
Aus dem Verhalten der Batterienachladung an zwei eher sonnigen Tagen im Dezember 2024 und den darauf folgenden weniger sonnigen Tagen zeigt sich, dass ein zuverlässiger Dauerbetrieb bei normalen Bedingungen kaum möglich sein dürfte.
In meinem Meshtastic eBook befasst sich ein Abschnitt mit Batterietypen und ein anderer mit der Optimierung der Solar-Spannungsversorgung. Für einen autonom zu betreibenden Meshtastic-Knoten sind das durchaus komplexe Themen.
Ein MPPT-Laderegler sollte eine deutliche Verbesserung des Ladevorgangs bringen. Auch die eingesetzte Batterietechnologie spielt eine Rolle für das Gesamtverhalten.
Inwieweit ein MPPT-Laderegler mit dem gleichen Solarpanel und einem Li-Po Akku hier bessere Resultate zulässt, werde ich untersuchen. Eine Vergrößerung des Solarpanels bleibt dann immer noch als Option.
Einen Waveshare Solar Power Manager (B), der einen Li-Po-Akku mit 10’000 mAh und Solarpanels mit 6 V ~ 24 V unterstützt, habe ich bestellt.
Die Seeed Studio XIAO-Serie ist eine Familie kompakter, leistungsstarker Mikrocontroller-Module (MCU), die speziell für platzsparende Projekte entwickelt wurden, die hohe Leistung und drahtlose Konnektivität erfordern.
Die Arduino-kompatible XIAO-Familie stellt Mikrocontroller-Module auf Basis verbreiteter Hardware wie Espressif ESP32-C3, ESP32-C6 & ESP32-S3, Renesas RA4M1, Raspberry Pi RP2350 & RP2040, Nordic nRF52840, Microchip SAMD21 und Silicon Labs MG MG24 zur Verfügung.
Der ESP32-S3 ist das erste Modul, das mit einem B2B-Connector (Board-zu-Board) ausgestattet ist und über diesen mit anderen Modulen erweitert werden kann. Die folgende Abbildung zeigt eine Draufsicht auf das XIAO-ESP32-S3.
An der Unterkante des Moduls befinden sich der IPEX-Stecker für die WiFi-Antenne und daneben der 30-polige B2B-Connector.
The Seeed Studio XIAO series is a family of compact, high-performance microcontroller modules (MCU) designed explicitly for space-saving projects that require high performance, and wireless connectivity.
The Arduino-compatible XIAO family provides microcontroller modules based on popular hardware such as Espressif ESP32-C3, ESP32-C6 & ESP32-S3, Renesas RA4M1, Raspberry Pi RP2350 & RP2040, Nordic nRF52840, Microchip SAMD21, and Silicon Labs MG MG24.
The ESP32-S3 is the first module to be equipped with a B2B connector (board-to-board) and can be expanded with other modules via this connector. The following figure shows a top view of the XIAO-ESP32-S3.
The IPEX connector for the WiFi antenna is located on the bottom edge of the module, with the 30-pin B2B connector next to it.
XIAO ESP32-S3
Ein Wio-SX1262 Modul erweitert den ESP32-S3 zum Meshtastic Device und nutzt den B2B-Connector zur Verbindung der beiden Module. Die folgende Abbildung zeigt das über den B2B-Connector mit dem ESP32-S3 verbundene LoRa-Modul Wio-SX1262.
A Wio-SX1262 module expands the ESP32-S3 into a meshtastic device and uses the B2B connector to connect the two modules. The following figure shows the Wio-SX1262 LoRa module connected to the ESP32-S3 via the B2B connector.
Wio-SX1262 & ESP32-S3
Zum Experimentierumfeld braucht es aber weiterer Komponenten, die eine einfache Kontaktierung von Sensorik ermöglichen. Grove- und M5Stack-Sensoren weisen eine einheitliche (Grove-) Schnittstelle auf und sind deshalb ganz besonders geeignet.
Die aktuell von Meshtastic unterstützen Sensoren sind in der folgenden Tabelle gelistet. In den Spalten Grove und M5Stack sind die dazu passenden Grove- resp. M5Stack-Sensoren ergänzt. Die Detailinfomationen finden Sie auf den Herstellerseiten über die angegebenen Links.
However, the experimental environment requires additional components that enable the simple contacting of sensors. Grove and M5Stack sensors have a standardized (Grove) interface and are particularly suitable.
The sensors currently supported by Meshtastic are listed in the following table. The corresponding Grove and M5Stack sensors are added in the Grove and M5Stack columns. You can find detailed information on the manufacturer’s website via the links provided.
ENV II Unit with Temperature Humidity Environment Sensor (SHT30+BMP280) ENV IV Unit with Temperature Humidity Air Pressure Sensor (SHT40+BMP280)
BME280
0x76, 0x77
Temperature, barometric pressure and humidity
Grove -Temp&Humi&Barometer Sensor (BME280)
BME68x
0x76, 0x77
Temperature, barometric pressure, humidity and air resistance
Grove – Temperature, Humidity, Pressure and Gas Sensor for Arduino – BME680 Grove – Air Quality Sensor(BME688) with built-in AI, High-Performance 4-in-1, Gas, Humidity, Pressure and Temperature sensor
ENV Pro Unit with Temperature, Humidity, Pressure and Gas Sensor (BME688)
MCP9808
0x18
Temperature
Grove – I2C High Accuracy Temperature Sensor – MCP9808
INA260
0x40, 0x41, 0x43
Current and Voltage
INA219
0x40, 0x41, 0x43
Current and Voltage
INA3221
0x42
3-channel Current and Voltage
LPS22
0x5D, 0x5C
Barometric pressure
SHTC3
0x70
Temperature and humidity
SHT31
0x44
Temperature and humidity
Grove – Temperature&Humidity Sensor (SHT31)
PMSA003I
0x12
Concentration units by size and particle counts by size
Heart Rate, Oxygen Saturation, and body temperature
Mini Heart Rate Unit (MAX30100) Pulse Oximeter
MLX90614
0x5A
Body temperature
Grove – Thermal Imaging Camera – MLX90641
NCIR 2 Thermometer Unit (MLX90614) NCIR Non-Contact Infrared Thermometer Sensor Unit (MLX90614)
Die XIAO-Familie bietet für die einfache Erweiterung mit den genannten Senoren über den I2C-Bus das XIAO-Expansionboard an.
Es stehen aber auch ein UART- und ein IO-Interface (A0, D0) zur Verfügung.
The XIAO family offers the XIAO expansion board for simple expansion with the above sensors via the I2C bus .
However, a UART and an IO interface (A0, D0) are also available.
XIAO Expansion Board
Das UART-Interface kann für den Anschluss eines GPS-Moduls, wie beispielsweise der in der folgenden Abbildung gezeigten M5Stack GPS Unit, verwendet werden.
You can use the UART interface to connect a GPS module, such as the M5Stack GPS Unit shown in the following figure.
Zusätzlich weist das Board noch ein OLED-Display und einen Batterieanschluss auf. Die Batterie kann über USB geladen werden. Ein Solaranschluss steht nicht zur Verfügung.
Im Nordwesten meines Standorts am oberen Zürichsee (Altendorf SZ) ist die Meshtastic Abdeckung sehr gut.
Bei meiner Tour nach Osten sieht das weniger gut aus. Die Fahrt bis zur Talstation der Toggenburger Bahnen verläuft weitgehend abgeschattet in Tälern. Bislang unbekannte Nodes habe ich nicht empfangen.
Ich beginne die Tour gegen 11:00 mit geladenem SenseCap Tracker T1000-E.
Nach ca. 1h Fahrt befinde ich mich an der Talstation auf 909 m. Bis dahin sehe ich keine Nodes.
Nach der Bergfahrt auf 2264 m sieht das dann anders aus, denn ich empfange Nodes, die ich bereits an meinem Heim-Standort gesehen habe.
Die Abfrage konnte ich aber erst zurück an der Talstation vornehmen, da das Fotografieren auf dem Berg den Akku des Telefons leergesaugt hatte. Das erklärt die etwa 40 min Zeitverschub.
Z. B. sehe ich den Knoten Sonnenberg mit einer Distanz von 100 km (über vier Hops). Das Profil der Linkstrecke ist eher günstig, wodurch auch die hohe Reichweite erreicht wird.
Den Knoten Sonneberg sehe ich sonst auch von meinem Heim-Standort in einer Entfernung von 82 km (über fünf Hops). Die Linkstreckenberechnung zeigt, dass eine Direktverbindung nicht möglich ist.
Nach 24 h habe ich erneut den Akkustand überprüft, der dann bei 54 % lag.
Meshtastic ist eine Open-Source-Mesh-Netzwerk-Plattform, die in letzter Zeit an Popularität gewonnen hat. Ihre Beliebtheit basiert auf mehreren Schlüsselfaktoren:
Meshtastic ermöglicht die Kommunikation über lange Strecken, ohne auf eine bestehende Infrastruktur (Mobilfunk, WLAN oder Internet) angewiesen zu sein. Diese als Off-Grid-Kommunikation bezeichnete Technologie ist besonders attraktiv für Outdoor-Aktivitäten und Expeditionen, wo es oft keinen Mobilfunkempfang gibt, oder für Rettungsdienste, militärische Anwendungen, Vorbereitung auf Katastrophenfälle (Prepping) und in Regionen mit eingeschränkter Infrastruktur.
Meshtastic nutzt preisgünstige Hardware auf Basis von LoRa-Modulen, die wenig Energie verbrauchen, bei geeigneter Auslegung für den Batteriebetrieb geeignet sind und Entfernungen von oft mehreren Kilometern überbrücken können.
Meshtastic ist Open Source und bietet den Nutzern völlige Freiheit, das System an ihre spezifischen Bedürfnisse anzupassen. Entwickler können die Software modifizieren, eigene Anwendungen entwickeln oder neue Funktionen hinzufügen. Diese Offenheit fördert eine wachsende Community, die regelmäßig zu Updates und Verbesserungen beiträgt.
Meshtastic-Nutzer können Nachrichten ohne Überwachung durch Drittparteien senden. Der Datenschutz wird auf diese Weise gesichert, da es keine zentralen Server gibt, die den Datenverkehr kontrollieren oder aufzeichnen.
Meshtastic ist vergleichsweise einfach einzurichten und zu bedienen. Einfache Apps für Android, iOS und den Desktop ermöglichen die Konfiguration eines betreffenden Knotens, Nachrichten zu senden und die empfangenen Nachrichten zu visualisieren. Fortgeschrittene Nutzer können auch private Netze einrichten und Daten erfassen und austauschen.
Mesh-Netzwerke sind eine spannende Technologie, da sie Netzwerkknoten ermöglicht, miteinander zu kommunizieren, indem sie ihre Nachrichten über verschiedene Zwischenknoten weiterleiten. Das schafft ein robustes und selbstheilendes Kommunikationsnetzwerk, das gerade in schwierigen Umgebungen oder Notlagen einen erheblichen Vorteil bieten kann.
Ist Ihr Interesse geweckt?
Vom Rheinwerk-Verlag erscheint in Kürze das E-Book „Meshtastic – Funknetze mit LoRa“.
Mit diesem E-Book möchte ich Ihnen beim Aufbau und dem Betrieb eines Meshtastic-Netzwerks helfen und meine praktischen Erfahrungen einfließen lassen.
Im Beitrag „WisBlock von RAKwireless – IoT-Anwendungen einfach umgesetzt“, veröffentlich in ELEKTRONIK 26/2023, S. 44-50 und im elektroniknet.de, wird gezeigt, wie mit WisBlock-Komponenten das Erstellen von IoT-Anwendungen vom Proof-of-Concept über das Prototyping bis hin zum Industrieprodukt unterstützt wird.
Der auf WisBlock aufbauende SensorHub stellt eine Ausprägung dieses Konzeptes dar und ermöglicht als Low-Code-System eine schnelle Umsetzung von IoT-Applikationen.
IoT applications usually require interdisciplinary collaboration between different disciplines during development and implementation.
With WisBlock, RAKwireless created a system accompanying the entire development path to the finished device using industrial-grade yet cost-effective components. Additionally, it offers the possibility to integrate components of prototyping systems from third-party providers into WisBlock.
With these systems, you can solve various tasks. Still, many steps are necessary to get a finished device, e.g., autonomy usable as a sensor node in harsh environments, which can be tedious.
True to the philosophy „IoT Made Easy,“ RAKwireless has ensured with WisBlock that this new solution is as simple as Click – Code – Connect!
I described the WisBlock ecosystem in an eBook titled „IoT-Projects for Makers: with WisBlock from RAKwireless • just Click, Code & Connect • to the finished device.“
Continuing this design philosophy, based on WisBlock, RAKwireless developed the RAK2560 WisNode SensorHub.
RAKwireless SensorHub is a modular ecosystem consisting of the main body and multiple pre-configured sensor probes. With pluggable, interchangeable probes and the option to add third-party sensors to the system, the Sensor Hub is a suitable and versatile solution platform for various IoT applications where environmental monitoring is needed outdoors.
The SensorHub can work battery-powered by non-rechargeable or solar-powered batteries or with an external power supply, depending on the application and deployment location.
For data transmission into Low-Power Wide-Area Network (LPWAN), LoRaWAN is available. Alternatively, NB-IoT can be used.
As a typical low-code system, it essentially requires configuration with the WisToolBox app from a cell phone.
I am currently working on applications of SensorHub in IoT using the example of measuring environmental data.
An eBook titled „SensorHub IoT Applications: • with WisNode SensorHub from RAKwireless • just configure & connect • to the finished application.“ is in preparation.
The planned release date is 11/15/2023, and pre-orders are available on Amazon.