M5Stack Displays

Die M5Stack Atom Serie mit einer Größe von nur 24 * 24mm sind sehr kompakte Entwicklungsboards der M5Stack Development Kit Serie. Die angebotenen Varianten verwenden alle einen ESP32-PICO, der WiFi- und Bluetooth-Konnektivität bietet und über 4 MB seriellen SPI-Flash verfügt. Über sechs GPIOs kann der Controller mit externen Sensoren und Aktoren verbunden werden. Die Typ-C-USB-Schnittstelle ermöglicht ein schnelles Programm-Upload und stellt eine RS232-Schnittstelle zur Verfügung. Eine HY2.0-Schnittstelle dient als Grove-Port.

Das einfachste Modell der M5Stack Atom Serie ist der Atom Lite, der zusätzlich noch eine Infrarot- und eine RGB-LED und zwei Tasten bietet. Das folgende Blockdiagramm zeigt die zur Verfügung stehenden Komponenten.

M5Stack Atom Lite Blockdiagram

Zahlreiche Hardware-Erweiterung ermöglichen eine einfache Anpassung an die betreffende Anwendung. Zu nennen sind beispielsweise das ATOMIC DIY Proto Kit for ATOM Series, ATOM HUB DIY Proto Board Kit, ATOM HUB AC/DC Remote Control Switch Kit, Atom DTU LoRaWAN Kit 868MHz, Atom DTU NB-IoT Kit Global Version und andere mehr. Eine Übersicht finden Sie unter https://shop.m5stack.com/collections/atom-series.

Naturgemäß fehlt dem kompakten Controllerboard ein Display, was aber mit den folgenden M5Stack Displaykomponenten beigestellt werden kann.

Die M5Stack OLED Unit ist ein OLED-Display mit einer Diagonalen von 1.3 “ und einer Auflösung von 128 x 64 Pixeln. Die M5Stack LCD Unit ist ein farbiges LCD mit einer Diagonalen von 1.14 “ und einer Auflösung von 240 x 135 Pixeln. Beide Display Units verfügen über ein Grove-I2C-Port und können über den I2C-Bus vom Atom aus angesteuert werden.

Der M5Stack Atom Display Driver ist ein All-in-One-Displaytreiber-Kit und weist ein HDMI-Interface zu einem Computer-Bildschirm mit einer maximalen Auflösung von 1280 x 720 Pixeln auf. Es wird ein FPGA verwendet, um die traditionelle SPI-TFT-LCD-Datenausgabe zu simulieren und bietet ein Videosignal mit präzisen Farben. Der Built-In ATOM PSRAM Main Controller (ESP32-PICO-V3-02 mit 8 MB Flash + 2 MB PSRAM) bietet auch wieder WiFi und Dual-Mode-Bluetooth.

Im Post AZ-Touch ESP32 Grafiktest hatte ich einen Grafik-Benchmark gezeigt, der die Eigenschaften der Kombination ESP32-Mikrocontroller und ILI9341-TFT-Display verdeutlichen sollte. Diesen Benchmark habe ich für die drei gezeigten Display angepasst, um deren Verhalten zu vergleichen. Sie finden das Programm M5Atom_Display.ino auf Github. Im folgenden Video sehen Sie die Ausgaben des M5Stack Atom Display Drivers auf einem 22″ Bildschirm.

Bei den beiden kleineren Displays wird bei den Textausgaben und der JPG-Ausgabe mitunter der Bildschirmrand verlassen. Eine entsprechende Skalierung wurde bewusst nicht vorgenommen, da der Test für derart kleine Auflösungen ohnehin nur bedingt geeignet ist.

Die folgende Grafik zeigt die Laufzeit der einzelnen Tests und vermittelt dabei einen ersten Eindruck. Obwohl bei Pixel und Line Test die Laufzeiten stark differieren, liegen die Laufzeiten der meisten Tests durchaus in der Nähe des über SPI angesteuerten ILI9341-Displays.


2021-11-19/CK

Messung von Umgebungsbedingungen für Pflanzen mit LILYGO®TTGO T-Higrow Sensor

Wie zu erwarten war, hat der resistive Sensor der M5Stack Earth Unit, der im Post Messung von Umgebungsbedingungen für Pflanzen beschriebenen Messeinrichtung, schon bald seine Funktion aufgegeben. Beachten Sie den Hinweis in der Dokumentation zur M5Stack Earth Unit:

Electrode of the unit is not anti-corrosive, or waterproof, for POC purpose only. Pls do NOT put it in humidity environment for a long while.

https://docs.m5stack.com/en/unit/earth

In meinem zitierten Post hatte ich bereits auf einen kapazitiven Sensor hingewiesen., den ich auch noch an der dort beschriebenen Messeinrichtung einsetzen werde.

Hier habe ich nun einen LILYGO®TTGO T-Higrow ESP32 WiFi And Bluetooth Battery And DHT11 Soil Temperature And Humidity Photometric Electrolyte Sensor verwendet, um die Korrosionsproblematik durch Verwendung eines kapazitiven Sensors zu entschärfen und Batteriebetrieb zu testen.
Der Sensor weist keine Anzeige auf, wodurch trotz des relativ kleinen LiPo-Akkus mit einer Kapazität von nur 200 mAh und genügend grossem Sendeintervall Batteriebetrieb möglich sein sollte. Der LiPo-Akku kann bei Bedarf über USB nachgeladen werden.

Der verwendete Sensor wird in unterschiedlichen Ausführungen angeboten. Für Temperatur und Luftfeuchtigkeit kommt entweder ein DHT11 oder ein BME280 zum Einsatz. Der  BME280 liefert zusätzlich noch den Luftdruck. Ein BHI1750 wird zu Erfassung des Umgebungslichts verwendet.

Die Bodenfeuchtigkeit (Soil Moisture) wird nach einem Frequenz-Spannungswandler von einem Kanal der internen AD-Umsetzers erfasst. Ein zweiter dient der Erfassung der Batteriespannung.

Die AD-Umsetzer des ESP32 überzeugen nicht für präzise Messungen. Für den Einsatz hier reicht die Genauigkeit jedoch aus. Hierzu möchte ich auf meinen Post https://ckblog2016.net/2018/03/03/esp32-adc-dac verweisen.

Ein wasserdichter DS18B20 kann über einen vierpoligen Stecker kontaktiert und für die Messung der Bodentemperatur eingesetzt werden. Beim Stecker handelt es sich aber nicht um einen Grove-Konnektor. Hier muss der passende Sensor von LilyGo eingesetzt oder das Kabel selbst konfektioniert werden.

Das Programm HiGrowESP32Pushover.ino dient der Abfrage der Sensoren, baut eine WiFi-Verbindung auf und versendet die erfassten Daten über Pushover. Es ist auf Github abgelegt und steht dort zum Download zur Verfügung.

Das nebenstehende Bild zeigt die Push Nachrichten bei der Inbetriebnahme des Sensors.

Um die knapp bemessene Batterie zu schonen, ist der Messzyklus erst mal auf 30 min festgelegt. Ich werde die Laufzeit beobachten.

Anfänglich ist der im Innenraum platzierte Sensor über USB mit dem PC verbunden. Dadurch wird der Sensor mit Spannung versorgt, die serielle Kommunikation über die Console ist möglich und der LiPo-Akku wird geladen. Sie erkennen das an den beiden unteren Datensätzen.

Danach habe ich den Sensor vom USB getrennt und ihn im Aussenbereich im Pflanztopf platziert. Sie erkennen das an der sinkenden Temperatur, der steigenden Luftfeuchtigkeit sowie der Bodenfeuchtigkeit, den veränderten Lichtverhältnissen und der Batteriespannung.

Der LiPo-Akku ist jetzt voll geladen und ich werden den Entladevorgang verfolgen.

Für ein paar Tage werde ich die Funktion des Sensors testen und die Werte in den folgenden Diagrammen aufzeigen. Sollte die Laufzeit des Sensors keine befriedigenden Resultate zeigen, dann kann der Messzyklus durchaus verlängert werden. Die hier erfassten Umgebungsbedingungen weisen in der Regel keine spontanen Änderungen auf.

Wundern Sie sich nicht über die geringen Temperaturschwankungen, denn der Sensor befindet sich in einem Pflanzkübel im beheizten Folienzelt. Die Heizung dient jedoch nur dem Frostschutz und schaltet bei Temperaturen unter 5 °C ein.

Nach einer Laufzeit von 13 1/2 Tagen ist der LiPo-Akku entladen. Ich werden den Messzyklus von 30 Minuten auf 1 Stunde erhöhen, wodurch die Laufzeit dann möglicherweise verdoppelt werden kann. Gestartet habe ich die neuen Messungen mit aufgeladenem LiPo-Akku am 30.11.2021 abends.


Nach einer Laufzeit knapp 14 Tagen ist der LiPo-Akku wieder entladen. Ich hatte mit einer deutlich verlängerten Laufzeit gerechnet und muss versuchen, die Ursache dafür zu finden.


2021-12-15/CK

Arduino Nicla Sense ME

als Environmental Sensor

Arduino Nicla Sense ME ist ein mit energiesparenden Sensoren ausgerüstetes Board aus dem Hause Bosch und Arduino. Das Board vereint die folgenden vier Sensoren von Bosch Sensortec:

  • BHI260AP – Komplettlösung für daueraktive Sensoranwendungen wie Fitness-Tracking, Fußgängerpositionierung, Maschinenlernanalysen und die Schätzung der Orientierung.
    Der BHI260AP ist ein intelligenter Sensor, der eine Vielzahl von Softwarefunktionen, einen kundenseitig programmierbaren 32-Bit-Mikrocontroller ARCv2 und eine 6-Achsen-IMU in einem Gehäuse vereint.
  • BMM150 – 3-achsiger digitaler geomagnetischer Sensor, der perfekt auf die Anforderungen von Kompassanwendungen abgestimmt ist. Mittels einer auf die Hardware abgestimmten Software liefert der BMM150 absolute räumliche Orientierung und Bewegungsvektoren mit hoher Genauigkeit und Dynamik. Das BMM150 eignet sich auch besonders zur Unterstützung von Drohnen beim genauen Steuerkurs.
  • BMP390 – Luftdrucksensor basierend auf bewährten Messprinzipien. Er eignet sich hervorragend für den Einsatz in Smartphones und Wearables/Hearable-Geräten. Zu den typischen Applikationen gehören das Internet der Dinge (IoT), Wettervorhersagen, Kontextbewusstsein, Vertikale Geschwindigkeit Anzeige, AR/VR-Applikationen, Gesundheitsversorgung und Verbesserung der GPS-Navigation
  • BME688 – erster Gassensor mit künstlicher Intelligenz (KI) und integrierten, sehr präzisen Feuchte- und Temperatursensoren. Der integrierte Gassensor ist in der Lage, flüchtige organische Verbindungen (VOCs), flüchtige Schwefelverbindungen (VSCs) und andere Gase wie Kohlenmonoxid (CO) und Wasserstoff im ppb-Bereich zu erkennen. Der neue BME 688 Sensor ist abwärtskompatibel zum BME680. Zusätzlich zu allen Funktionen des BME680 verfügt der BME688 über eine Gasscannerfunktion. In der Standardkonfiguration wird das Vorhandensein von VSCs als Indikator für z.B. Bakterienwachstum.
    Der Gassensor hat eine hohe Empfindlichkeit und reagiert auf die meisten flüchtigen Verbindungen (VOC) sowie viele andere Gase, die die Raumluft verschmutzen.  Als MOX-Sensor ist der BME688 in der Lage, die Summe der VOCs bzw. Schadstoffe in der Umgebungsluft zu messen. Dadurch kann der BME688 z.B. Ausgasen von Farbe, Möbeln und/oder Müll, hohe VOC-Werte durch Kochen, Nahrungsaufnahme, ausgeatmete Luft und/oder Schwitzen erfassen.

Das Board nutzt als Host-CPU einen nRF52832-SoC, ausgestattet mit einem mit 64 MHz arbeitenden Cortex-M4F mit 64 KB SRAM und 512 KB Flash. Das BLE-Modul ist zur V5.0 kompatibel.

Nicla Ssense ME Block Diagramm (Bild: Bosch BHI260 Flyer)

In den Examples zum Nicla Sense ME ist das Auslesen von Accelerometer und Gyroscope sowie Temperatur und Feuchtigkeit gezeigt. Ich möchte hier speziell auf das Erfassen von Umgebungsdaten (Environmental Data) eingehen. Das Programm Nicla_EnvironmentalSensor.ino fragt Temperatur-, Feuchtigkeits-, Druck und Gassensor ab und gibt die erfassten Daten über die Console aus.

Die On-Board RGB LED habe ich als Zustandsanzeige verwendet. Bei Einleitung eines Messzyklus blinkt die LED kurz blau auf. Dem folgt dann eine von ermittelten eCO2-Wert abgeleitete Zustandsanzeige gemäss der folgenden Tabelle bis zum nächsten Messzyklus.

LED ColorZustand
BlauBeginn Messzyklus
GrüneCO2 < 800 ppm
Gelb800 ppm < eCO2 <= 1200 ppm
RoteCO2 > 1200 ppm

Mit diesem Programmbeispiel haben Sie bereits eine sogenannte CO2-Ampel in den Händen, die für die Erfassung der Raumluftqualität durchaus brauchbare Werte liefert.

Die zu berücksichtigenden Unterschiede bei der Bewetung der Luftquelität durch NDIR- bzw. MOX-Sensoren können Sie im Post Luftqualität mit NDIR- und MOX-Sensoren messen vertiefen. Der hier eingesetzte BME688 gehört in die Klasse der MOX-Sensoren.


2021-11-10/ck

Ab heute lieferbar: LoRaWAN-Knoten im IoT

LoRaWAN-Knoten im IoT

Fertige und selbst aufgebaute Arduino-Knoten im TTN

Print: ISBN 978-3-89576-467-7,

eBook: ISBN 978-3-89576-468-4

www.elektor.de

Auf der The Things Conference 2021 hatte TTN angekündigt, dass The Things Network V2 im September 2021 endgültig geschlossen wird. Wegen der Pandemie wurde dieser Termin später bis Dezember 2021 verlängert, um der Community noch mehr Zeit zu geben, auf The Things Stack (V3) zu migrieren

The Things Industries wird alle Cluster von TTN betreiben. Hostnamen, Versionen, Konfiguration, Funktionen usw. werden harmonisiert. Der erste Cluster von TTN V3 https://eu1.cloud.thethings.network/console ist bereitgestellt. Die Migration ist im Gange.

Die TTN V2-Software wurde auf The Things Stack Community Edition (auch als TTN V3 bekannt) aktualisiert. Die vorhandenen Benutzer von TTN V2 müssen ihre Gateways und Geräte auf The Things Stack Community Edition (TTS (CE)) migrieren, da die Cluster von TTN V2 gegen Ende 2021 geschlossen werden.

Mit diesem neuen Buch stelle ich Ihnen die Integration von fertigen und in zahlreichen IoT-Shops beziehbaren LoRaWAN-Knoten, aber auch selbst aufgebauten Arduino-Knoten ins TTS (CE) vor.

Zugriff auf die Daten und deren Visualisierungen zeige ich Ihnen mit Anwendungen, wie MQTT, Node-RED, Cayenne, Thingspeak und Datacake.

In den Anwendungsbeispielen habe ich preiswerte Komponenten verwendet, die auch im Maker-Umfeld akzeptabel sind.


2021-11-03/CK

Arduino Portenta H7

Arduino Portenta H7 ist ein Arduino am oberen Ende des Leistungsspektrums der Arduino Familie.

Kern ist ein STM32H747XI Dual Core Mikrocontroller mit einem Cortex-M7 und einem Cortex+M4 Core. Der Cortex-M7 wird mit 480 MHz getaktet. Beim Cortex-M4 sind das 240 MHz. Beide Core kommunizieren über einen Remote Procedure Call (RPC) Mechanismus.

CoreMark

Für einen Arduino am oberen Ende des Leistungsspektrums ist ein Benchmark zum Vergleich mit anderen Arduinos von Interesse.

Ich habe auf meiner Benchmark-Seite Benchmarks von 8-Bit-AVR-, 32-Bit Cortex-Mx-, 32-Bit-ESP32- und RISC-V-MCU vergleichend gegenüber gestellt.

Mit einem CoreMark von 1133 mus sich der Cortex-M7 im Arduino Portenta H7 nur dem Teensy 4.0 mit einem NXP iMXRT1062 geschlagen geben.

DAC-ADC-Subsystem

Der Portenta H7 ist mit einem komfortablen DAC-ADC-Subsystem ausgestattet.

ADC3× ADCs with 16-bit max. resolution (up to 36 channels, up to 3.6 MSPS)
DAC2× 12-bit DAC (1 MHz)
Auszug aus dem Datenblatt

Inwieweit das für einen Arduino dann auch nutzbar ist, muss sich zeigen. Im Datenblatt des STM32H747x sind erst mal ernüchternde Daten vorzufinden:

Auszug aus dem Datenblatt

Wie schon beim ESP32 habe ich deshalb das DAC-ADC-Subsystem einem Test unterzogen.

Ich will es vorweg nehmen, dass mein Aufbau sicher suboptimal ist. Als Referenzspannung Vref habe ich 3V3 verwendet und den DAC-Ausgang A6 mit dem ADC-Eingang A0 über Jumper verbunden. DAC und ADC sind für 12 Bit Auflösung konfiguriert

Arduino Portenta H7 auf Expansionsboard

Unter diesen Voraussetzungen habe ich mit dem Programm PortentaH7_ADC_DAC.ino die folgende DAC-ADC-Charakteristik ermittelt. Die Trendlinie zeigt ein lineares Verhalten mit leichtem Offset aber deutlichen Abweichungen in den einzelnen Stufen.

Schauen wir die Abweichungen an, dann übersteigen diese die im Datenblatt gemachten Angaben. Ausserdem zeigt die Trendlinie neben dem bekannten Offset auch noch einen Gain-Fehler.

Durch das Filtern der ADC-Werte mit einer Mittelwertbildung über jeweils 10 Messwerte können die Abweichungen erwartungsgemäss reduziert werden. Die Trendlinie zeigt praktisch gleiches Verhalten.

Bei einem Blick in die diversen Foren zeigen sich zahlreiche kritische Stimmen zum Verhalten des DAC-ADC-Subsystems.

Allerdings dürfen Sie nicht ausser Acht lassen, dass bei einer 12-Bit-Umsetzung im Spannungsbereich von 3.3 V DC das LSB immerhin bei nur 800 uV liegt.

Eine stabile Referenzspannung Vref und eine optimale Verdrahtung sind für geringere Abweichungen bei der AD-Umsetzung zwingend erforderlich. Durch die Verbindung von Vref mit 3.3 V ist das schon mal nicht gegeben.

Optimierungsmöglichkeiten sind in der AN2834 Application note How to get the best ADC accuracy in STM32 microcontrollers zu finden.

Im Zweifelsfall bleibt aber immer noch ein externer AD-Umsetzer, wie ich den auch beim ESP32 verwendet habe.


2021-11-02/CK

Messung von Umgebungsbedingungen für Pflanzen

Für das Überwintern der Pflanzen von Balkon und Terrasse habe ich ein beheiztes Folienzelt vorbereitet und darüber berichtet (https://ckblog2016.net/2021/10/27/uberwintern-von-pflanzen-im-beheizten-folienzelt/).

Unabhängig von der dort verbauten Steuerung des Frostwächters möchte ich die Bedingungen einiger sensibler Pflanzen direkt erfassen. Neben Temperatur und Luftfeuchtigkeit ist auch die Bodenfeuchtigkeit für das Pflanzenwohl wichtig. Auch im Winter benötigen Pflanzen Wasser, wenn auch wesentlich weniger.

Eine Möglichkeit hatte ich vor Jahren mit dem HiGrow-Sensor untersucht und im Blog unter

auch beschrieben.

Da ich im Folienzelt durch die Heizung ohnehin Spannung zur Verfügung habe, bin ich hier nicht auf Batteriebetrieb angewiesen und kann das Monitoring der Umgebungsbedingungen großzügiger angehen.

Komponenten zum Monitoring

Als Controller verwende ich einen M5Stack Core2, der die für den Betrieb der Sensorik erforderlichen Grove-Konnektoren, ein Display zur Anzeige der Messwerte, seitliche LED-Streifen zur Signalisierung des Wasserbedarfs und eine WiFi-Verbindung ins Internet zur Verfügung stellt.

Temperatur und Luftfeuchtigkeit werden durch eine M5Stack ENV.II Unit mit einem Sensirion SHT31 erfasst. Der außerdem vorhandene Bosch BMP280 wird nicht für die Messwerterfassung herangezogen.

Die M5Stack EARTH Unit nutzt die beiden großen freiliegenden Pads als Sonden für den Sensor. Der dazwischen liegende Boden bildet einen variablen Widerstand in einem Spannungsteiler. Je höher die Feuchtigkeit im Boden ist, desto besser ist die Leitfähigkeit zwischen den beiden Pads und der Spannungsteiler liefert eine sinkende Ausgangsspannung, die über den ESP32-internen ADC gewandelt wird.

Die folgenden Bilder zeigen die für das Monitoring der Umgebungsbedingungen eingesetzten Komponenten:

Mit den hier vorgestellten Komponenten ist sehr schnell ein entsprechendes Monitoring aufgebaut, da die M5Stack Units nur mit Grove-Kabeln mit dem M5Stack Core2 verbunden werden müssen. Die ENV.II Unit kommuniziert über I2C mit PortA und die EARTH Unit über eine analoge Leitung mit PortB.

Das Programm zur Erfassung der Messwerte über die beiden Sensoren, deren Aufbereitung und Versand der Message über Pushover ist auf Github unter der URL https://github.com/ckuehnel/Arduino2020/tree/master/M5Stack/M5Core2_EnvMonitor abgelegt und steht zum Download zur Verfügung.

Die folgenden Bilder zeigen die Ausgaben des Programms M5Core2_EnvMonitor.ino über die Console. Nach der Initialisierung erfolgt die erste Messwertausgabe aller Sensoren (SHT31, BMP280, EARTH Unit) über die Console. Die Daten des BMP280 werden nicht weiterverwendet. Es schließt sich das Versenden der Message über Pushover an.

Die Messwerte werden in einem Zyklus von 5 Sekunden erfasst und auf dem Display angezeigt. Die Pushover Messages werden in einem Zyklus von 15 Minuten versendet. Das ergibt 24 x 4 = 96 Messages am Tag. Pushover lässt kostenfrei 10’000 Messages pro Monat zu. Eine kostenfreie Nutzung dieses Dienstes ist also gegeben.

Die Pushover Messages erscheinen dann in der im folgenden Bild gezeigten Form als Pushup Messages im Smartphone oder Tablet.

Pushover Messages im Smartphone

Messung der Bodenfeuchtigkeit

Die EARTH Unit implementiert eine resistive Messung der Bodenfeuchtigkeit. Die Elektroden der EARTH Unit sind weder korrosionsbeständig oder wasserdicht. Für ein Proof-of-Concept kann die EARTH Unit oder ein anderer resistiv arbeitender Sensor durchaus verwendet werden. Für den Dauereinsatz sind sie nicht geeignet.

Kapazitive Bodenfeuchtesensoren weisen eine bessere Korrosionsbeständigkeit auf. Der im folgenden Bild gezeigte Bodenfeuchtesensor wird von verschiedenen Anbietern als Alternative angeboten.

Der Vorteil des kapazitiven Bodenfeuchtesensors besteht, zum einen im kapazitiven Messverfahren selbst und zum anderen durch die Verwendung korrosionsbeständigen Materials, wodurch ihm eine lange Lebensdauer verliehen werden soll. Dennoch sollten die Schnittkanten der Leiterplatte mit einem Lack geschützt werden, um ein seitliches Eindringen von Feuchtigkeit in die Leiterplatte zu vermeiden.

Die Anschlussbedingungen sind identisch zur M5Stack EARTH Unit und ich werden diesen Sensor ebenfalls noch testen.

Wenn Sie sich über die Interna dieser Messmethode informieren wollen, dann finden Sie dieses im Beitrag Characterization of Low-Cost Capacitive Soil Moisture Sensors for IoT Networks. Praktische Erfahrungen mit dieser Art von Bodenfeuchtesensor können Sie unter https://thecavepearlproject.org/2020/10/27/hacking-a-capacitive-soil-moisture-sensor-for-frequency-output/ nachlesen.

Nachtrag

Ich habe festgestellt, dass die geschlossene Terrassentür einen Einfluss auf die WLAN-Verbindung zum M5Stack Core2 aufweist.

Es ist ja bekannt, dass WLAN-Signale durch zahlreiche Aspekte im elektromagnetischen Umfeld beeinflusst werden. Zum einen durch die sogenannte Freiraumdämpfung aber auch durch die Signaldämpfung aufgrund von physischen Hindernissen, die zwischen Sender und Empfänger von WLAN-Signalen im Weg stehen. 

Welches Material das WLAN wie stark dämpft ist an Hand von Messwerten unter https://www.wlan-blog.com/erfahrungen/wlan-daempfung-tabelle-welches-material-daempft-wlan-wie-stark-fenster-rigips-holz-etc/ nachzulesen.

Damit bei der Aufstellung des Sensors bereits die zu erwartende Feldstärke abgeschätzt werden kann, habe ich noch eine Abfrage des RSSI ins Programm eingebaut.

RSSI steht für Received Signal Strength Indicator. Es ist ein geschätztes Maß für den Leistungspegel, den ein WLAN-Client von einem Zugangspunkt oder Router empfängt. Dieser Wert wird sowohl am Display als auch in der Pushover Message mitgeteilt. Oberhalb von -80 dBm liegen Werte, bei denen keine Störungen zu erwarten sind.


2021-11-16/CK

M5Stack MQTT Unit

Die M5Stack MQTT-Unit verarbeitet MQTT-Nachrichten über Ethernet, die über ein UART-Interface von einem Mikrocontroller aus gesteuert werden. Mikrocontroller ohne Ethernet/WiFi können mit diesem Modul MQTT-Verbindungen aufbauen. Die Unit unterstützt bis zu vier Topics (Publish, Subscribe) mit extrem niedriger Netzwerklatenz. Eingesetzt wird die Unit in industriellen Automatisierungs- und Überwachungssystemen, automatischen Mess- und Steuersystemen.

Das Programmbeispiel MQTT_Unit.ino zeigt den Einsatz der M5Stack MQTT-Unit. Hier werden im Zyklus von 10 Sekunden MQTT Messages zum Public Broker von HiveMQ gesendet.

MQTT-Messages im Public Broker von HiveMQ

Low-Power Sensornetzwerk

In der Vergangenheit habe ich mich mit Low-Power Sensornetzwerken befasst und hier im Blog darüber berichtet:

Grundsätzlich stehen für die Kommunikation WiFi, BLE und LoRa zur Verfügung. Jede Kommunikation hat dabei spezielle Eigenschaften bezüglich Reichweite, Payload und Strombedarf.

Angeregt durch den Beitrag ESP32 – Ultra-Long Battery Life With ESP-NOW habe ich ESP-NOW in meine Betrachtungen mit einbezogen.

ESP-NOW ist ein proprietäres, von Espressif entwickeltes Protokoll, das es mehreren Geräten ermöglicht, ohne WiFi miteinander zu kommunizieren. Vor der Kommunikation ist ein Pairing zwischen den kommunizierenden Geräten erforderlich. Nach dem Pairing ist die Verbindung sicher und Peer-to-Peer, ohne dass ein Handshake erforderlich ist. Nach dem Pairing ist die Verbindung persistent, d.h. nach einem Reset oder Spannungsausfall eines Teilnehmers erfolgt eine erneute Verbindungsaufnehme automatisch.

Zur Einarbeitung empfehle ich den Beitrag Getting Started with ESP-NOW (ESP32 with Arduino IDE) von Rui Santos, da ich hier nicht auf alle Details eingehen möchte.

„Low-Power Sensornetzwerk“ weiterlesen

Environmental Sensor AZ-Envy

AZ-Delivery bietet mit AZ-Envy ein sehr preiswertes Sensorboard an, mit dem durch einen Sensirion SHT30 Temperatur- und Luftfeuchtigkeit und durch einen MQ-2 eine Gasgemisch aus Methan, Butan, LPG und Rauch erfasst werden kann.

Der MQ-2 Sensor ist ein Mitglied der umfangreichen MQ-Serie, die unterschiedliche Gasgemische detektieren kann. Die folgende Tabelle, entnommen aus https://www.mysensors.org/build/gas, zeigt die Familie der MQ-Sensoren und die detektierten Subtanzen.

„Environmental Sensor AZ-Envy“ weiterlesen

LILYGO Mini ePaper Core 1.02″

LILYGO Mini ePaper Core 1.02″ vereint einen ESP32 PICO und ein 1.02″ ePaper Display in einem kompakten Gehäuse. Im folgenden Bild sind die zur Verfügung stehenden Ressourcen und das Pinout ersichtlich. Das 1.02″ ePaper Display weist eine Auflösung von 128 x 80 Pixel auf.

Auf Github ist die benötigte Software zu finden, die die Programmierung mit der Arduino oder PlatformIO IDE ermöglicht:  https://github.com/Xinyuan-LilyGO/LilyGO-Mini-Epaper.

Zur Programmierung des Moduls ist ein USB-to-TTL-Adapter erforderlich, da auf diese Stufe modul-intern verzichtet wurde.

Ich habe hier ausgehend von einem Programm in den Examples ein Programm erstellt, dass einen NTP-Server (hier ntp.metas.ch) nach der aktuellen Uhrzeit abfragt und anschliessend von OpenWeatherMap die Wetterdaten für einen vorzugebenden Ort abfragt. Die Informationen werden dann auf dem ePaper Display zur Anzeige gebracht.

Wichtig bei der Anzeige ist die Wahl des richtigen Fonts. Zur Darstellung hier habe ich u8g2_font_helvB10_te (bold) verwendet, da mit u8g2_font_helvR10_te (regular) keine vernünftig lesbare Ausgabe möglich war. Die u8g2 Library von Oli Kraus bietet hier aber gute Auswahlmöglichkeiten.

Die Ausgabe über die Console zeigt die erfassten Daten. Hier ist die Temperaturangabe in K, während im ePaper Display die Angaben in °C erfolgt.

Ausgabe über die Console

Nach erfolgter Abfrage und Anzeige der erhobenen Daten geht der ESP32 hier für fünf Minuten in den Deep Sleep, bevor eine erneute Abfrage erfolgt. Im Deep Sleep wird die Stromaufnahme nach Angaben von LILYGO auf unter 10 uA abgesenkt. Somit dürfte der Betrieb mit einer externen Batterie möglich werden. Die Deep Sleep Phase kann bei dieser Anwendung auch durchaus verlängert werden, das sich das Wetter kaum schnell ändert.


2021-09-05/CK