Open-Source Real-Time OS für das IoT

Steht man heute vor der Aufgabe, ein neues Embedded System zu entwickeln, dann wird in den Anforderungen kaum die Anforderung nach einer Netzwerkverbindung fehlen. Dabei spielt es in erster Linie keine Rolle, ob es sich um eine drahtlose oder drahtgebundene Kommunikation handelt, ob die Kommunikation durch die Anwendung genutzt wird oder einen Remote Access für Konfiguration und Service darstellt. Möglicherweise lassen sich diese Dinge auch kaum vernünftig trennen.

Ein Embedded System, welches derartige Anforderungen erfüllen muss, ist mit vernünftigem Entwicklungsaufwand nicht ohne Betriebssystem umsetzbar. Die Suche nach einem für die betreffende Aufgabenstellung geeigneten Betriebssystem umfasst, viele und sehr unterschiedliche Aspekte.

Betrachtet man die Langlebigkeit von Investitionsgütern, dann erscheint schon aus strategischen Gründen der Einsatz eines OS-RTOS zwingend. Einer ersatzlosen Abkündigung eines etablierten, proprietären RTOS kann auf diese Weise der Schrecken genommen werden. In einer gewissen Klasse von Embedded Systems bis hin zu Supercomputern gibt es mit Linux ein ausgezeichnetes Beispiel für ein solches Open Source Betriebssystem.

Damit ist Linux heute ein mächtiges Betriebssystem, welches aber auch gewisser Ressourcen bedarf und für Systeme mit kleinem Footprint, geringen Ressourcen und möglichst für Batteriebetrieb angepasstem Stromverbrauch weniger geeignet ist.

Analysiert man aus Github Daten für Code Frequency, Commits und Contributions für Contiki, RIOT und Zephyr, dann kann deutlich eine größere Aktivität der Community beim Zephyr OS gegenüber den anderen beiden RTOS verzeichnet werden. Natürlich ist das Zephyr OS auch ein „junges“ RTOS, was nicht in allen Bereichen bereits ausgereift sein kann.

Das Zephyr Project (https://www.zephyrproject.org/what-is-zephyr) ist ein von der Linux Foundation gehostetes Collaboration-Projekt, eine Open Source Zusammenarbeit, die führende Kräfte aus der gesamten Branche zusammenbringt, um mit dem Zephyr OS ein skalierbares Echtzeit-Betriebssystem (RTOS) für mehrere Architekturen ressourcenbeschränkter Geräte zu entwickeln.

Der in der Zeitschrift Design & Elektronik erschienen Beitrag mit dem o.a. Titel (Design & Elektronik 3/2019, S. 42-48  ) soll Einblicke in das Zephyr OS und die Zephyr Entwicklungsumgebung geben. An Hand einiger einfacher und nachvollziehbarer Programmbeispiele wird die Vorgehensweise bei der Programmierung von Anwendungen und der Build Prozess dokumentiert. Die Programmbeispiele selbst sowie dazugehörige Screenshots sind auf Github unter https://github.com/ckuehnel/zephyrtests abgelegt.

Das Zephyr OS ist ein Open Source RTOS, welches durch das von der Linux Foundation gehostete Zephyr Project und die Nähe zu Linux das Potential hat, bei Embedded Systems mit kleinem Footprint in Zukunft vergleichbar erfolgreich zu werden, wie es Linux bei Systemen mit mehr Performance schon länger ist. Der Erfolg wird sicher stark durch die Community geprägt. Ausdauer und Kraft sind der Community zu wünschen. Die zentrale Mailinglist des Zephyr Projects [ https://lists.zephyrproject.org/g/main ] gibt aktuell Auskunft über die laufenden Aktivitäten.

Arduino Interrupts

Arduino Interrupts:
Speed up your Arduino to be responsive to events

Jetzt auch als Print erhältlich. ISBN 978-3-907856-42-7

Ist nun bei Amazon online unter https://www.amazon.de/dp/3907857429/

Cover



Graham Mantel

4,0 von 5 Sternen Interrupts Explained with examples

2. Dezember 2017 – Veröffentlicht auf Amazon.com Verifizierter Kauf

Interrupts are very useful item used in programming, by extending the basic range of the processor. This book explains in very clear English how to use interrupts . There also are many examples that I have inserted into my computer, and they all compile . Although finding the library files is more difficult, I have been given the run around trying to get the exact libary or equivalents . All being considered the book is well worth obtaining.

Arduino-Sensorknoten

Auf der Basis eines ESP8266-Mikrocontrollers von Espressif hatte ich gezeigt, dass man einen WiFi-tauglichen IoT-Knoten zu sehr geringen Kosten (es waren 15 US$) aufbauen kann [Building an IoT Node for less than 15 $: NodeMCU & ESP8266].

Dass WiFi auf Grund der geringen Reichweite und des doch recht hohen Stromverbrauchs für einen batteriebetriebenen IoT-Knoten allerdings nur unter bestimmten Bedingungen geeignet ist, war auch durch eigene Untersuchungen gezeigt worden [IoT Button (5th)].

Der hier betrachtete Sensorknoten soll deshalb neben der Anbindung verschiedener Sensoren auch unterschiedliche Kommunikationsmöglichkeiten (WiFi, LoRaWAN, BLE, GSM) aufweisen. Damit wird es möglich werden, einen konkreten IoT-Sensor baukastenartig zusammenstellen.

Sensorknoten

Der Beitrag „Arduino-Sensorknoten“ wird im Sammelwerk „Messen, Steuern, Regeln mit IBM-kompatiblen PCs“ des Weka-Verlags veröffentlicht.

ISBN 978-3824549009

Die Programmbeispiele werden auf Github abgelegt und stehen zum Donload zur Verfügung.

Der erste Teil des Beitrags ist in der Ausgabe 170 im Februar 2019 erschienen.

Sipeed MAix BiT for RISC-V AI+IoT

Heute eingetroffen:

Sipeed MAix BiT Front

Sipeed MAix BiT Back

Was hat Sipeeds MAix BiT zu bieten?

MAix’s CPU

Kendryte K210 system-on-chip (SoC), bietet folgende Features:

  • Dual-Core RISC-V 64bit IMAFDC
  • 8 MB high-speed SRAM
  • max. 800 MHz Clock
  • KPU (Neural Network Processor)
  • APU (Audio Processor)
  • Flexible FPIOA (Field Programmable IO Array) for GPIO Mapping
  • DVP camera and MCU LCD interface
  • Accelerators and peripherals: AES Accelerator, SHA256 Accelerator, FFT Accelerator (not APU’s one), OTP, UART, WDT, IIC, SPI, I2S, TIMER, RTC, PWM, etc

MAix’s Module integrates K210, 3-channel DC-DC power, 8MB/16MB/128MB Flash (M1w module add wifi chip esp8285 on it) into Square Inch Module.

M1 Module

Sipeed MAix BiT Development Board

Integriert USB2UART Chip, Auto-Download Schaltung, RGB LED, DVP Camera FPC Anschluss für FPC camera und Standard M12 Kamera), MCU LCD FPC Anschluss (für 2.4 inch QVGA LCD), SD Card Slot (Bild oben).

MAix’s SoftWare

  • MAIX wird durch ein Standalone SDK, FreeRTOS SDK auf Basis von C/C++ unterstützt.
  • Ein MicroPython Port unterstützt FPIOA, GPIO, TIMER, PWM, Flash, OV2640, LCD, etc. Das MaixPy Projekt und die MaixPy Dokumentation stehen auf Github zur Verfügung.

Ich bin gespannt auf die ersten Schritte in diesem neuen Umfeld…

Externer ADC am ESP32

In einem früheren Post hatte ich das ADDA-Subsystem des ESP32 untersucht und konnte nur wenig überzeugende Resultate präsentieren.

Ich habe die Messungen an einem neuen ESP32_Core_board v2 wiederholt. Die Resultate waren vergleichbar zur letzten Untersuchung.

ESP32 DAC-ADC-Characteristics

Im ESP32 Forum habe ich einen Hinweise zum Thema gefunden (https://www.esp32.com/viewtopic.php?f=2&t=4784&hilit=adc+accuracy) und eine Polynomapproximation der Kennlinie auf Github.

Diese Funktion habe ich in meinen Test eingebaut und die folgenden Ergebnisse erzielt:

ESP32 DAC-ADC-Characteristics

Schon in der Gesamtcharakteristik ist eine verbleibende Nichtlinearität zu erkennen, die im Detailbild noch deutlicher wird. Die Trendlinie zeigt eine Korrekturmöglichkeit am Gain. Es bleiben aber die nichtlineare Abweichungen , die allenfalls durch ein angepasstes Polynom reduziert werden könnten.

ESP32 DAC-ADS1015-Characteristics – Abweichung der ADC Spannung

Eine Alternative ist ein externer ADC. Ich verwende einen 12-bit ADC ADS1015, den es als Breakout Board von Adafruit u.a. gibt.

Adafruit ADS1915

Das Testprogramm ESP32_DAAD_ext_Test.ino ist auf Github abgelegt.

Die Resultate sehen folgendermassen aus:

ESP32 DAC-ADS1015-Characteristics

Erwartungsgemäss bekommen wir eine lineare Kennlinie, die aber bei näherem Hinsehen mit einem Offset und einem Gain behaftet ist, wie die folgende Darstellung besser zeigt.

ESP32 DAC-ADS1015-Characteristics – Abweichung der ADC Spannung

Diese Eigenschaften lassen sich kalkulatorisch ausgleichen und wir erhalten schliesslich Abweichungen im Bereich weniger mV.

Abweichung der ADC Spannung nach Offset- und Gain-Korrektur

Sonoff SC – Home Air Quality

Sonoff SC ist ein WiFi Luftgüte-Monitor für den Einsatz in Innenräumen.  Es werden Temperatur und Luftfeuchtigkeit, Lichtstärke, Feinstaub und Geräuschpegel erfasst. Die erfassten Daten werden direkt an die iOS/Android App EWeLink geschickt. Die Spannungsversorgung erfolgt über microUSB mit 5 V.

Sonoff SC ist „hacker-friendly“. Ein ATMega328p erfasst die Sensordaten mit Hilfe eines Arduino-Programms und ein ESP8266 dient der WiFi Kommunikation. Sonoff SC Schaltplan und Arduino Code sind im Wiki des Herstellers zu finden.

Wie die folgende Abbildung zeigt, besteht Sonoff SC aus Komponenten, die dem Maker weitgehend bekannt sein dürften.

sonoff_sc_2

Die Feinstaub-Belastung wird mit dem Sharp Dust Sensor GP2Y1010AU0F gemessen. Zur Messung von Temperatur und rel. Luftfeuchtigkeit dient der verbreitete DHT11 Sensor. Ein Elektret-Mikrofon erfasst die Umgebungsgeräusche und ein Fotowiderstand das Umgebungslicht.

Nach Installation der Android App eWeLink (für iOS gibt es eine entsprechende App) kann Sonoff Sc mit dieser App verbunden werden, die dann die erfassten Messgrößen auf dem Smartphone anzeigt.

Screenshot_20181201-143318_eWeLink

Sonoff Sc ist kein professionelles Messinstrument. Das zeigen schon die eingesetzten Low-Cost-Komponenten. Fast viel wichtiger ist es, diesen Sensor als Grundlage für eigene Experimente aufzufassen. Dazu sind alle Informationen, wie Schaltplan und Quellcode, offen gelegt und bei einem Preis von aktuell unter USD 20,- kann man da nichts falsch machen.

Website des Herstellers und Bezugsmöglichkeit: https://www.itead.cc/sonoff-sc.html
Weitere Bezugsmöglichkeiten: Aliexpress, Amazon

Thinger.io IoT Platform

Zahlreiche IoT Plattformen werben um die Gunst potentieller Kunden. Ich bin auf Thinger.io gestoßen, da von dieser Plattform mit dem ClimaStick auch eigene Hardware zur Erfassung von Umweltdaten angeboten wird. Hackster bietet auf dieser Basis auch gleich eine IoT Meteorological Station an.

Interessant ist diese Plattform allemal, da das Verbinden und Verwalten des eigenen IoT-Devices innerhalb weniger Minuten möglich ist.

Die folgenden Merkmale erscheinen mir besonders erwähnenswert:

  • Open Source
    Der Server kann in der eigenen Cloud (z.B. auf einem Raspberry Pi) installiert werden.
  • Flexible Hardware
    Arduino, ESP8266, ESP32, Raspberry Pi, Intel Edison – alles kann problemlos angeschlossen werden.
  • Cloud-Plattform
    Die gehostete Cloud-Infrastruktur mit einer benutzerfreundlichen Administrationskonsole ermöglicht Skalierbarkeit, Geschwindigkeit und Sicherheit.
  • Einfache Codierung
    Um ein Licht aus dem Internet einzuschalten oder einen Sensorwert zu lesen, ist eine einzige Codezeile auf der MCU erforderlich. Aber das ist nicht alles.
  • Für Maker
    Interessenten können sich für einen kostenlosen Account registrieren, um innerhalb weniger Minuten unter Nutzung der Cloud-Infrastruktur mit der Erstellung des ersten IoT-Projekts zu beginnen.

Im Bild zum Beitrag ist ein aus NodeMCU und DHT22 bestehendes IoT-Device mit der Cloud-Infrastruktur verbunden, die die erhobenen Daten visualisiert.

 

Zwei Jahre Calliope mini

Herzlichen Glückwunsch zum Geburtstag zu zwei Jahren Calliope mini.

Für mich die frohe Botschaft dabei ist die Unterstützung für MicroPython. Nun ist der Calliope mini ist wieder kompatibel zu MicroPython.

Der Lagesensor, B-Taster, die RGB-LED und der Lautsprecher sind nun ansprechbar. Die Calliope mini Bibliothek steht nach der Installation durch die Eingabe

import calliope_mini *

zur Verfügung.

Link zum GitHub Repository: https://github.com/calliope-mini/calliope-mini-micropython

Die Betaversion des beliebten MicroPython Editors Mu  wurde angepasst und ist ebenfalls online verfügbar. Für Dezember ist die offizielle Version angekündigt.
Mu 10

Kerlink Wirnet iFemtoCell – Kleines LoRaWAN Indoor Gateway mit großer Leistung

Der Ausbau landesweit erreichbarer Funknetze auf LoRa-Basis ist in einigen Ländern, wie der Schweiz (Swisscom), den Niederlanden (KPN) und Süd-Korea (SK Telecom), bereits erfolgreich umgesetzt. Andere Service Provider stellen ebenfalls die erforderliche Infrastruktur zur Verfügung. Neben kommerziellen Angeboten gibt es auch Services, die kostenfrei genutzt werden können.

Ein LoRaWAN-Gateway verbindet die über Funk kommunizierenden LoRaWAN-Nodes über das Internet mit einem LoRaWAN-Server. Weil hier in erster Linie Stabilität und Sicherheit gefordert sind, betrachte ich für diesen Einsatz nur kommerzielle LoRaWAN-Gateways.

Im Smartmakers Newsletter gehe ich speziell auf das Wirnet iFemtoCell LoRaWAN Gateway ein, welches perfekt für die Erweiterung in Gebäuden (zusätzliche Abdeckung in Gebäuden zur Verdichtung öffentlicher Verfügbarkeit und Kontinuität des Dienstes) oder für die private Abdeckung von Standorten geeignet ist, die kontinuierliche Konnektivität für ihre IoT-Anwendungen erfordern.

Betrachtet werden die folgenden Schwerpunkte

  • Unboxing
  • Inbetriebnahme
  • SSH-Verbindung
  • Firmware Update
  • Integration ins The Things Network (TTN)
  • Integration ins LORIOT-Netzwerk
  • Programmierung von Anwendungen auf dem Gateway

 

 

ESP32 – Erweiterung der Arduino Familie

Nachdem der verbreitete ESP8266 in die Arduino Umgebung integriert wurde und Ledunia als High-End-ESP8266-Modul (http://ledunia.de/) verfügbar ist, steht mit dem ESP32 der chinesischen Firma Espressif ein weiteres Upgrade der Arduino Familie bereit.

Ich hatte die Benchmarks aus dem Beitrag  „Arduino32: Die jungen Wilden“ [1] mit denen des ESP8266/Ledunia ergänzt [2] und will den deutlich mehr Performance versprechenden ESP32 ebenfalls diesen Tests unterziehen.

Sowohl der ESP8266 als auch der ESP32 Mikrocontroller von Espressif sind in zahlreiche Mikrocontroller-Module eingegangen und heute gerade wegen ihrer WiFi-Eigenschaften oft Bestandteil von Entwicklungen in der Maker-Szene. Beim ESP32 kommt nun auch noch die Bluetooth LE-Konnektivität (BLE) hinzu.

In der Zeitschrift Design & Elektronik Heft 11/2018 ist ein Artikel mit dem gleichnamigen Titel erschienen, der den ESP32 als Erweiterung der Arduino und dessen Features betrachtet.

[1]        Arduino32: Die jungen Wilden (Teil 2).  DESIGN & ELEKTRONIK 06/2016 S.14-17

http://www.elektroniknet.de/embedded/arduino32-die-jungen-wilden-131502.html

[2]        Ledunia – ESP8266 High-End-Modul. DESIGN & ELEKTRONIK  3/2018 S. 16-21

http://www.elektroniknet.de/design-elektronik/embedded/einer-der-hoechstintegrierten-wifi-chips-der-branche-152310.html