Schlagwort-Archive: MicroPython

Smart Environmental Monitoring

Aufbau eines BLE-Netzwerks für diverse Umwelt-Sensoren

Ziel des Projekts ist der Aufbau eines skalierbaren, extrem stromsparenden Sensor-Netzwerks zur Überwachung von Umgebungsdaten. Der NanoBeacon IN100 SoC von InPlay Inc. kommt im SparkFun NanoBeacon Board – IN100 und im DFRobot Fermion BLE Sensor Beacon zum Einsatz.

Das SparkFun NanoBeacon Board – IN100 kann durch Sensoren mit einem QWIIC-Interface erweitert werden. Beim Einsatz der Fermion-Baureihe von DFRobot können verschiedene Sensoren (u.a. LM35, SHT40, SGP40) direkt mit dem Fermion BLE Sensor Beacon kontaktiert werden.

In beiden Fällen ist eine drahtlose Vernetzung der so gestalteten BLE-Sensoren möglich. Die übermittelten Daten können von einem zentralen ESP32-Gateway ausgewertet und zur Langzeitanalyse an eine IoT-Plattform übermittelt werden.

Ich verwende MicroPython für die Programmierung des ESP32-Gateways. Auf der Sensor-Seite kommt der Fermion BLE Sensor Beacon zum Einsatz. Datacake dient in bewährter Weise als IoT-Plattform.

Systemarchitektur & Datenfluss

Das System nutzt eine dreistufige Architektur, um maximale Effizienz und Reichweite zu erzielen:

  • Sensor-Knoten (Edge): Mehrere Fermion BLE-Module fungieren als eigenständige Sender (Beacons). Sie erfassen analoge Signale (z-B. LM35) sowie digitale I²C-Daten (z.B. SHT40 für Feuchte/Temp, SGP40 für Luftqualität). Die Daten werden ohne festes Pairing direkt in die BLE Manufacturer Data (Advertising-Pakete) eingebettet.
  • Zentral-Gateway (Processing): Ein ESP32 scannt unter MicroPython kontinuierlich das BLE-Spektrum. Er identifiziert die Fermion-Knoten anhand ihrer IDs, extrahiert die Rohdaten aus den Manufacturer-Bytes und berechnet die physikalischen Einheiten. Die aktuellen Messwerte werden unmittelbar auf einem OLED-Display (SSD1306) am ESP32 angezeigt.
  • Visualisierung der aufbereiteten Daten und via MQTT an das Datacake-Dashboard versendeten Daten, wo sie für Monitoring, Alarme und Historien-Analysen zur Verfügung stehen.

Besondere Merkmale

  • Ultra-Low Power: Durch den Verzicht auf eine dauerhafte BLE-Verbindung (Broadcasting) erreichen die Sensor-Knoten Batterielaufzeiten im Bereich von Monaten bis hin zu Jahren.
  • Skalierbarkeit: Das System kann problemlos um weitere Knoten ergänzt werden, da der ESP32 als passiver Empfänger eine Vielzahl von Sendern gleichzeitig verarbeiten kann.
  • Robustheit: Die Trennung von Erfassung (Fermion) und Verarbeitung (ESP32/Cloud) ermöglicht einen stabilen Betrieb auch in komplexen Umgebungen.

Aufbau eines Sensor-Knotens

Der Fermion BLE Sensor Beacon ist ein drahtloser Beacon, der Sensordaten über Bluetooth sendet. Ein integrierter 11-Bit-ADC kann zur Erfassung analoger Messwerte eingesetzt werden und über das I2C-Interface können Sensoren mit I²C-Interface ausgelesen werden. Auf die vom Beacon gesendeten Sensordaten kann innerhalb der Sendereichweite des Beacons mit Mobiltelefonen, Mikrocontrollern und anderen Geräten, die den BLE-Empfang unterstützen, zugegriffen werden.

Fermion BLE-Sensor-Beacons integrieren stromsparende Bluetooth 5.3-Technologie mit selbstkonfigurierbaren Datenformaten wie iBeacon, Eddystone, benutzerdefiniert und mehr.
Die BLE-Sensor-Beacons können mit einer CR2032-Knopfzellenbatterie betrieben werden. Es stehen bis zu sechs konfigurierbare GPIOs zur Verfügung, die alternativ auch zu zwei unabhängigen I²C-Schnittstellen konfiguriert werden können.

Fermion BLE-Sensor-Beacon

Das Datenformat der Beacon-Übertragung, der Inhalt der Übertragung, das Übertragungsintervall usw. können über die grafische Benutzeroberfläche NanoBeacon Config Tool konfiguriert werden, ohne dass für die Fertigstellung eines Bluetooth-Beacons die Programmierung von Code erforderlich ist.

NanoBeacon Config Tool

Für einen ersten Versuch wurde der Beacon so konfiguriert, dass die interne Temperatur (Chiptemperatur) mit zwei Byte in den Manufacturer-Daten verankert wurde. Im NanoBeacon Config Tool ist das mit den Bytes 13 und 14 zu sehen,

Für die Visualisierung der empfangenen Daten verwende ich das nRF-Tool. Im folgenden Screenshot sind die Manufacturer-Daten markiert. Nach dem Hersteller-Code 0x0505 stehen die Bytes 0x0A3F = 2623D = 26.23°C. Von einem BLE-Scanner bzw. BLE-Gateway sind die übermittelten Daten nur noch zu parsen und jegliches Geheimnis ist gelüftet.

Manufacturer Data

Zu Beginn habe ich der Einfachheit halber einen XIAO-ESP32-C3 auf einem XIAO-Erweiterungsboard als BLE-Scanner eingesetzt. Installiert ist die aktuelle MicroPython-Firmware v1.27.

Die MicroPython-Anwendung scannt die Umgebung nach Bluetooth-Signalen, die von Geräten wie Smartwatches, Fitness-Trackern, Sensoren oder Beacons ausgesendet werden, und identifiziert alle BLE-Geräte in Reichweite, die im Advertising-Modus Signale aussenden. Sie misst die Signalstärke (RSSI) und ruft Metadaten, darunter auch die Manufacturer-Daten, ab. In den Manufacturer-Daten ist hier der Temperaturmesswert verankert. Auf dem OLED-Display des XIAO-Erweiterungsboards werden diese Daten schließlich zur Anzeige gebracht.

BLE-Gateway mit ESP32-C3

Für den Einsatz in Innenräumen eignet sich das RAKBox-B3-Gehäuse, da es für die Sensorik gut belüftet ist und ausreichend Schutz der Komponenten sichert.

RAKBox-B3 Indoor Enclosure

In der nächsten Projektphase wird das System um Fermion-Sensoren sowie kommerzielle BLE-Geräte ergänzt. Dabei entwickeln wir den BLE-Scanner zu einem BLE-MQTT-Gateway weiter, um die erfassten Daten zur Visualisierung an die Datacake-Plattform zu übertragen.

Parallel dazu arbeite ich an einem Fachbuch über MicroPython im IoT-Umfeld. Darin finden Sie – neben einer fundierten Einführung in MicroPython für gängige Mikrocontroller – praxisnahe Anwendungen auf Basis von WiFi, Ethernet, ESP-Now und BLE.


2026-02-22/CK

Badger2350: Das stromsparende eInk-Badge für smarte IoT-Displays

Der Badger2350 von Pimoroni ist ein kompaktes, stromsparendes eInk-Badge-Board, das speziell für portable Anzeigen und langlebige IoT-Projekte entwickelt wurde. Statt auf hohe Rechenleistung oder Multimedia setzt die Hardware konsequent auf Effizienz, gute Lesbarkeit und extrem niedrigen Energieverbrauch – Eigenschaften, die in vielen Maker- und IoT-Szenarien entscheidend sind.

Durch das integrierte eInk-Display lassen sich Informationen dauerhaft anzeigen, ohne kontinuierlich Strom zu verbrauchen. In Kombination mit einfacher Programmierung in MicroPython, einer aktiven Entwickler-Community und zahlreichen Beispielprojekten eignet sich das Board sowohl für schnelle Prototypen als auch für produktive Anwendungen. Ob Statusanzeigen im Smart Home, digitale Labels oder batteriebetriebene Sensorstationen – der Badger2350 ist besonders dort interessant, wo Informationen sichtbar bleiben sollen, ohne dass ständig Energie fließt.

Pimoroni Badger2350

Badger2350 baut auf der folgenden Hardware auf:

  • 2.7″ eInk-Display mit 264 x 176 Pixeln und vier Graustufen
  • Raspberry Pi RP2350A (Dual Arm Cortex M33 @ 250 MHz mit 520 KB 0SRAM)
  • 16 MB Flash, 8 MB PSRAM
  • Raspberry Pi RM2 module (CYW43439) für IEEE 802.11 b/g/n WLAN & BT
  • 1000mAh LiPo battery:
  • PCF85063A RTC für WakeUp von Sleep
  • Polycarbonate case
  • 4-zone mono LED case lighting
  • Buttons: 5 User, Reset & Home
  • Connectors: USB-C zur Spannungsversorgung und Programm-Upload, I2C-Connector (Qwiic/STEMMA QT)

Für die Programmierung in MicroPython bietet Pimoroni eine spezielle Firmware an, die unter https://badgewa.re/docs beschrieben ist.

Die Firmware ist neu (https://github.com/pimoroni/badger2350) und die Dokumentation noch in Arbeit. Das gilt es zu berücksichtigen.

Ich habe einen ersten Test unternommen, um mit uname() dem System Informationen zu entlocken und das Programm in den bestehenden Launcher einzubinden.

Menu mit zusätzlicher App
App uname

Wie Sie aus den beiden Abbildungen sehen, hat das der Dokumentation folgend auch alles funktioniert. Eine App kann in den Launcher eingebunden werden und dann von da aufgerufen werden, oder aber als main.py als eigenständige App arbeiten. Ich habe hier den ersten Weg gewählt.

Mir den Möglichkeiten, die der Badger2350 bietet, sind Anwendungen aus den folgenden Bereichen denkbar:

  • Monitoring von Umweltdaten mit lokalem Statusdisplay
  • Solarbetriebene Sensorstationen
  • Energieverbrauch (z. B. PV-Ertrag oder Stromzählerdaten)
  • MQTT-Dashboard für wichtige Zustände
  • Inventar-Tracking mit QR-Code auf eInk
  • Statusanzeigen für Funk-Gateways
  • u.a.m.

Der Badger2350 überzeugt vor allem durch seine klare Ausrichtung auf stromsparende Anzeige- und IoT-Anwendungen. Seine Stärken spielt das Board überall dort aus, wo Daten selten aktualisiert werden, aber dauerhaft sichtbar sein sollen: Statusanzeigen, Sensordashboards, digitale Labels oder portable Informationssysteme sind typische Einsatzfelder. Weniger geeignet ist es dagegen für grafikintensive Anwendungen oder Projekte mit schnellen Display-Updates.


2026-02-14/CK

Gemini arbeitet, Du chillst

KI ist in unseren Alltag eingedrungen und hilft an der einen und anderen Stelle. Um KI zu nutzen ist es aber nicht erforderlich, vor dem PC zu sitzen und Kontakt mit einer KI-Plattform, wie ChatGPT, Gemini o.a. aufzunehmen, sondern kann bestimmt Aufgaben bereits mit Mikrocontrollern automatisieren.

So können Sie beispielsweise einen Prompt erstellen, der Ihnen beim Zubettgehen die zu erwartenden Strassenverhältnisse am kommenden Morgen abfragt o.ä.

Alles, was dazu erforderlich ist, zeigt die folgende Abbildung. Natürlich können Sie den ESP32-S2 noch mit einem Display ausstatten, damit die Antwort adäquat präsentiert wird.

Ich habe einen mit MicroPython ausgestatteten ESP32-S2 mit Gemini verbunden und kann eine Anfrage senden, die von Gemini beantwortet wird.

Für das bevorstehende Handballspiel D gegen DK habe ich die (nicht ganz ernstgemeinte) Frage nach dem Sieger gestellt. Die Antwort sehen Sie in der Ausgabe über die Console.

Ich werde mir das Spiel heute Abend anschauen.


Das Resultat war aus deutscher Sicht ernüchternd – Gratulation an Dänemark zu einer starken Leistung. #Handball #EM2026

Auch Gemini hat eine Meinung dazu, die sich bei mehrfachen Anfragen aber durchaus unterscheidet:


2026-01-27/CK

bpi:bit – Mehr Power im micro:bit Universum

In meinem Beitrag Mikrocontroller nicht nur für die Schule! (Design & Elektronik 01/2018, MF40-44) hatte ich BBC micro:bit und Calliope mini, beides für die Grundschul-Ausbildung konzipierte Mikrocontroller-Boards, vorgestellt und deren Erweiterungsmöglichkeiten betrachtet.

Befördert durch den Edge-Connector des BBC micro:bit werden mittlerweile zunehmend Peripherieerweiterungen für den BBC micro:bit angeboten, die diesen Controller auch für Maker interessant machen.

Einen Überblick über vorhandene Erweiterungen kann man sich beispielsweise bei Reichelt oder den folgenden Adressen holen:

Durch den im BBC micro:bit eingesetzten Mikrocontroller nRF51822 gerät man aber auch schnell an Grenzen. Will man beispielsweise seinen BBC micro:bit über WiFi vernetzen, dann ist dafür bereits ein Zusatzmodul erforderlich. Auch vom Speicherausbau her sind Grenzen gesetzt, die den Wunsch nach einem Mikrocontroller mit mehr Performance aufkommen lassen.

Mit dem bpi:bit des Banana-Pi Herstellers SinoVoip gibt es einen solchen Mikrocontroller auf Basis eines ESP32. Warum bei heise der bpi:bit als kuriose Kopie abgetan wird, ist für mich nur schwer nachvollziehbar. Die nachfolgende Tabelle zeigt die Merkmale von bpi:bit und micro:bit im Vergleich.

Wer bislang seinen BBC micro:bit bereits mit MicroPython oder der Arduino IDE programmiert hat, bekommt mit dem bpi:bit eine leistungsstarken Controller incl. WiFi für seine micro:bit Umgebung.

Nutzt man alle WS2812, dann kommt man um eine Fremdspeisung des Moduls nicht umhin, denn der Strombedarf übersteigt das, was ein USB-Anschluss zur Verfügung stellt.

Modulbpi:birmmicro:bit
CPUESP32 nRF51822
RAM520 KB256 KB
ROM448 KBN/A
Flash512 KB16 KB
WiFi 802,11 b/g/n/e/ich N/A
Bluetooth BT4.2 BR/EDR und BLE BLE
Sensoren2 Fototransistoren,
Thermistor,
MPU-2950
LED-Matrix,
On-Chip Temperatursensor,
LSM303GR
SummerSummerN/A
LEDs 25 Neopixel-LEDs (WS2812 ) 25 rote LEDs
GPIOEdge-Connector (Goldfinger)Edge-Connector (Goldfinger)
Tasten2 programmierbare Tasten 2 programmierbare Tasten
USBmicro-USB (UART)micro-USB
Software Webduino, Arduino,
MicroPython, Scratch X
Microsoft MakeCode, Arduino
MicroPython, Scratch X
Grösse5 x 5 cm5 x 4 cm