Für einen Überblick über die c-Implementierung der IoT-spezifischen Features in Zephyr OS sollte man sich etwa einen Nachmittag Zeit nehmen und Beispielprogramme
/samples/synchronization
/samples/philosophers
/samples/nrf52/pwmgr
/samples/mpu/mpu_test
/samples/bluetooth/central
/samples/boards/reel_board/mesh_badge
in Konjunktion mit der API-Dokumentation studieren.
Aus diesen Blöcken lässt sich leicht eine Akquise durch mehrere Aufrufe mit Leerlauf erstellen und über Bluetooth kommunizieren.
Zur vollständigen Programmierung aller Bausteine hat Phytec [6] ein c-Beispiel bereitgestellt, das sämtliche Sensorik, LEDs und Taster beinhaltet. Die genommenen Messwerte werden auf dem epaper angezeigt, die Kommunikation als Bluetooth-Beacon initialisiert.
Bleiben Sie stehen, hier gibt es etwas zu lernen. Das quelloffene Zephyr OS beinhaltet grundlegende Programmierstrukturen für ressourcen-effiziente Akquise und Kommunikation in Embedded-IoT-Applikationen.
Oft sind Entwickler bei SmartMeter-Produkten auf oberster Ebene mit proprietären IDEs und stark verschachtelten Programmstrukturen konfrontiert, die wesentliche Mechanismen verbergen. Im Zephyr OS können dagegen die elementaren Programmierbeispiele über die Treiber-, bis hin zur Betriebssystem- und hardwarespezifischen Ebene herunter gelesen werden.
Das wird zwei Entwicklergruppen besonders interessieren: wer die elementare AVR-Vorlesung geschwänzt hat [7], kann hier noch einmal die Grundlagen der Peripherieakquise und Steuerungen aufsammeln. Richtig spannend ist das System für alle Entwickler die sich quantitativ mit dem Bluetooth-Stapel und der IoT-Kommunikation befassen möchten. Da die Eigenheiten der spezifischen Verbindungsmechanismen oft nur unzureichend dokumentiert sind [8] müssen diese am Anwendungsfall erarbeitet werden. Quelloffene Beispiele sind dazu geeignet.
Die Implementierung auf dem reel board erlaubt darüber hinaus einen Proof-of-Concept im Feld, insbesondere den Test ihrer Lebensdauer unter Batterieversorgung. (ct)
[1] https://gnu-mcu-eclipse.github.io/qemu/
[2] https://www.zephyrproject.org/introducing-the-zephyr-reel-board/
[3] https://pypi.org/project/pyOCD/
[4] https://docs.zephyrproject.org/latest/getting_started/getting_started.html
[5] https://docs.zephyrproject.org/latest/introduction/introducing_zephyr.html#distinguishing-features
[6] https://github.com/zephyrproject-rtos/zephyr/pull/10831/files
[7] https://www.springer.com/de/book/9783658183851