Der ESP32-S2 ist ein Single-Core-System mit einer Harvard Architecture Xtensa® LX7-CPU mit einer umfangreichen Peripherie.
ESP32-S2 Blockdiagramm
ESP32-S2-Saola-1 ist ein kleines ESP32-S2-basiertes Entwicklungsboard von Espressif, von der Bauform her mit den ESP32-DevKits vergleichbar. Die technischen Daten können in der 764 Seite umfassenden Technical Reference nachgelesen werden.
ESP RainMaker ist eine End-to-End-Plattform, mit der Hersteller ihre IoT-Ideen mit dem ESP32-S2-SoC von Espressif schneller umsetzen können, ohne die an diesem Prozess beteiligte Infrastruktur verwalten zu müssen. ESP RainMaker bietet ein Geräte-SDK, selbstanpassende Telefon-Apps, transparente Cloud-Middleware und Host-Dienstprogramme, die die Komplexität der Entwicklung reduzieren.
Die Installation in der Arduino-Umgebung ist zur Zeit noch etwas umständlich. Folgen Sie der Anleitung von Adafruit, dann ist eine erfolgreiche Installation sicher.
M5Paper ist das jüngste Mitglied der M5Stack-Familie. Gesteuert wird M5Paper durch einen ESP32-DOWDQ6-V3 (16 MB Flash und 8 MB PS-RAM). Das 4.7″ 4-Bit-Graustufen-eINK-Display mit einer Auflösung von 540 x 960 Pixeln ermöglich eine komfortable und stromsparende Anzeige. Darüber hinaus steuert ein GT911-Chip die Touchscreen-Funktionalität. Ein 1150-mAh-Lipo-Akku hält das Gerät über lange Zeit in Betrieb und die Akkulaufzeit kann RTC-gesteuert (BM8563) in den Tiefschlaf versetzt und bei Bedarf wieder aktiviert werden. Das folgende Diagramm zeigt die zur Verfügung stehenden Ressourcen.
Aktuell teste ich die Laufzeit des LiPo-Akkus mit einem Programm, welches im Takt von 30 min den internen SHT30 Sensor abfragt, eine WiFi-Verbindung zum Router aufbaut und eine Meldung mit den Messwerten an einen Telegram Bot sendet.
CoreInk ist ein neuer M5Stack Core mit einem 1,54 „s/w-E-Ink-Display. Ein ESP32-PICO-D4 steuert ein umfangreiche On-Board Peripherie. Über den Bus Connector kann der CoreInk erweitert werden. CoreInk ist mit einem LiPo-Akku mit 390 mAh ausgestattet, der in einem gewissen Rahmen den Aufbau eines batteriebetriebenen Controllers ermöglicht. Ist die Kapazität nicht ausreichend, dann kann über den USB-Anschluss auch eine Nachladung über Solar erfolgen.
CoreInk Block Diagram
Die CoreInk Rückseite weist alle erforderlichen Beschriftungen für die einzelnen Komponenten des CoreInk sowie der Interfaces nach aussen auf.
Das 200 x 200 Pixel umfassende E-Ink-Display erhält seine darzustellenden Informationen auch im stromlosen Zustand. Alle weiteren Informationen sind unter https://docs.m5stack.com/#/en/core/coreink?id=coreink zu finden.
Um die Eignung des CoreInk als batteriebetriebenen IoT-Knoten zu untersuchen, habe ich eine ENV II Unit über das Grove-Port mit dem CoreInk verbunden und messe Temperatur und relative Feuchte über diesen Sensor und die interne Batteriespannung. Die Batteriespannung ist nicht direkt zugänglich. Die Spannungsmessung erfolgt offenbar nach dem SY7088 und liegt bei etwa 4.8 V. Diese Spannung kann aber als Indikator für eine ausreichende Batteriespannung angesehen werden.
Die erhobenen Daten werden durch das E-Ink-Display angezeigt und als Message an einen Telegram Bot gesendet. Nach einer solchen Messung wird CoreInk für 30 min schlafen gelegt, um danach den Vorgang zu wiederholen.
CoreInk Messwertanzeige
Ausgaben Telegram Bot
Während der Testphase können die Daten auf @CoreInk_message_bot verfolgt werden.
Sensirion SGPxx ist eine digitale Multi-Pixel-Gassensorplattform, die für die einfache Integration in Luftreiniger, bedarfsgesteuerte Belüftung und IoT-Anwendungen entwickelt wurde. Der SGP30 verfügt über zwei kalibrierte Luftqualitätssignale und On-Chip-Feuchtigkeitskompensation.
Das CO2eq-Ausgangssignal basiert auf einer Wasserstoffmessung. Der SGP30 ist deshalb nicht für Anwendungen geeignet, bei denen eine echte CO2-Detektion erforderlich ist, wohl aber die Luftqualität bewertet werden soll.
CO2-Monitor mit M5StickC Puls und M5Stack M5Stack TVOC/eCO2 Gas Sensor Unit SGP30
Den SGP30 Sensor gibt es als M5Stack TVOC/eCO2 Gas Sensor Unit SGP30 wodurch mit einem M5StickC Plus sehr einfach ein CO2-Monitor aufgebaut werden kann. Die oben genannten Einschränkungen gelten natürlich weiter. Will man den CO2-Monitor im Sinne einer CO2-Ample zur bedarfsgerechten Lüftung einsetzen, dann spielt die Genauigkeit des absoluten CO2-Werts aber eine untergeordnete Rolle.
Die folgenden Bilder demonstrieren das Verhalten des CO2-Monitors bei Unterschreiten resp. Überschreiten eines vorgebbaren Limits. Die blinkende Anzeige „Ventilation required!“ wird durch einen Piepton ergänzt.
Eine Anpassung an den genaueren, nach dem Non-Dispersive Infrared (NDIR) Verfahren arbeitende CO2-Sensor SCD30 von Sensirion folgt. Die Grundlagen waren bereits im Beitrag CO2-Ampel beschrieben.
Sparsam ausgestattet Mikrocontroller mit kleinen Grafikdisplays müssen nicht auf die Darstellung von Bildern o.ä. verzichten.
Das Anzeigen eines Eröffnungsscreens beim Programmstart oder eines Bilds als Hintergrund ist bei der Gestaltung eines grafischen User-Interfaces (GUI) sehr verbreitet. Die Libraries zu den beliebten M5StickC/C Plus unterstützten die Darstellung von Bitmaps. Die folgende Abbildung zeigt ein Beispiel für den Eröffnungsscreen eines Programms zur Messung der Wassertemperatur.
In meinem Blogbeitrag Messung der Wassertemperatur habe mit einem M5StickC und einem wasserdichten DS18B20-Temperatursensor mit einer Zuleitungslänge von 1 m ein portables Messgerät aufgebaut, mit dem die Wassertemperatur in 1 m Tiefe gemessen werden kann.
Neben einer numerischen Anzeige der gemessenen Wassertemperatur ist es schön, wenn sich auf der Anzeige des Thermometers nach dem Einschalten ein sogenannter Eröffnungsscreen zeigt, der beispielsweise die Initialisierung o.ä. überbrückt.
Anzeige des Temperaturmesswertes und des Batteriestatus
Was ist also zu tun, um das nebenstehende Bild als Eröffnungsscreen auf dem M5StickC/C Plus zur Verfügung zu stellen?
Komplexer ausgestattete Mikrocontroller haben oft eine microSD-Card, auf die Grafikdateien als BMP oder JPG ausgelagert werden können. Der M5StickC/C Plus weist keine solche microSD-Card auf, weshalb das darzustellende Bild im Codebereich gespeichert werden muss. Hierzu gibt es mit dem LCD Image Converter ein sehr komfortables Tool, welches die Bilddaten in Quelltext konvertiert.
Anhand des oben gezeigten Bildes möchte ich das Vorgehen schrittweise erläutern. Das Bild selbst habe ich als JPG-Datei mit einem Bildverarbeitungsprogramm in der Dimension 80 x 160 Pixel, also passend für das LCD des M5StickC erstellt. Beim M5StickC Plus wären hier 135 x 240 Pixel möglich. Die Unterschiede in der grafischen Darstellung der beiden Displays können Sie unter M5StickC Plus vs. M5StickC betrachten.
Nach dem Herunterladen und Entpacken des LCD Image Converters kann dieser gestartet werden. Nach dem Start öffnet sich das folgende Fenster und die Option New Image ist auszuwählen.
Im nächsten Schritt ist dem neu zu erzeugenden Bild ein Name zu geben. Der Einfachheit halber nenne ich das Bild image.
Durch den Import der vorgängig erzeugten JPG-Datei werden dem LCD Image Converter die zu bearbeitenden Daten zur Verfügung gestellt.
Mit der Darstellung des geladenen Bilds im LCD Image Converter sind alle Vorkehrungen getroffen und die Konvertierung kann noch konfiguriert werden.
Nach Auswahl des Menus Options>Conversion sind im Tab Prepare die ersten Schritte der Konfiguration zu sehen. Ich habe die zu setzenden Optionen eingerahmt.
Im Tab Image werden die nächsten Schritte der Konfiguration vorgenommen. Ich habe die zu setzenden Optionen wiederum eingerahmt. Die Einhaltung dieser Optionen ist wichtig, da sonst die im M5StickC-Anwendungsprogramm verwendete Funktion drawBMP() nicht erwartungsgemäß arbeiten kann.
Nach diesen Vorbereitungen kann die Konvertierung gestartet und das Ergebnis als Datei image.c abgespeichert werden.
Die erzeugte Datei ist stark gekürzt im folgenden Listing wiedergegeben. Für uns von weiterem Interesse sind nur die im Array image_data_image[12800] abgelegten Bilddaten, die nun in das M5StickC-Anwendungsprogramm eingearbeitet werden können.
Im Anwendungsprogramm ist die Integration der Bilddaten selbst sehr einfach. Wie der folgende Quelltext zeigt, sind nach der Initialisierung nur zwei Instruktionen dafür vorhanden. Mit der ersten Instruktion M5.Lcd.fillScreen(TFT_BLACK) wird der Bildschirm gelöscht. Die zweite Instruktion M5.Lcd.drawBitmap(0, 0, image_width, image_height, image) stellt die Bilddaten beginnend oben links auf dem LCD dar. Die Bilddaten sind in der Datei bmp.h abgelegt, die in der ersten Zeile eingebunden wurde.
In der Datei bmp.h sind die durch den LCD Image Converter erzeugten Bilddaten im Array image[] abgelegt. Diese umfangreichen statischen Daten werden durch PROGMEM im Flash abgelegt. Außerdem sind noch die Dimensionen des Bildes in den beiden #defines abgelegt. Damit sind in der Datei bmp.h alle für die Instruktion M5.Lcd.drawBitmap(0, 0, image_width, image_height, image) erforderlichen Daten vorhanden.
Mit den ESP8266- und ESP32-basierten Mikrocontrollermodulen lassen sich wegen der vorhandenen WiFi-Konnektivität recht schnell die unterschiedlichsten IoT-Anwendungen erstellen.
AZ-Touch ist ein Touchscreen-Gehäuseset, das speziell für die Wandmontage entwickelt wurde. Der interne Print ist vorbereitet für NodeMCU Amica (ESP8266), AZ-Delivery D1 Mini (ESP8266) and ESP32 DEV KIT C.
AZ-Touch wird in einem schönen Gehäuse für die Wandmontage zusammen mit einem resistiven 2,4-Zoll-Touchscreen geliefert und ermöglicht es Ihnen, Ihr Projekt dauerhaft im Wohnbereich oder Büro zu montieren.
Auf der Seite des Herstellers Zihatec finde Sie alle erforderlichen Informationen für die Bestellung und die Inbetriebnahme des AZ-Touch.
Um die Eigenschaften der Kombination ESP32-Mikrocontroller und ILI9341-TFT-Display habe ich die Anzeige mit dem Programm TFT_graphictest_PDQ.ino aus der TFT_eSPI-Library von Bodmer getestet. Das Programm steht auf Github zum Download bereit.
TFT Benchmark ESP32-ILI9341
Der TFT-Benchmark ist controller- und library-spezifisch und hier nicht weiter optimiert. Aus den einzelnen Zeiten wird aber deutlich, dass Display und zugehörige Library eine sehr ordentliche Performance in dieser Leistungsklasse aufweisen. Um eine bessere Vorstellung zu bekommen, zeigt das Video weiter unten die Bildinhalte des TFT-Benchmarks.
Für den Aufbau einer CO2-Ampel oder anderer Anwendungen zur Messwerterfassung von Umweltdaten sind zuverlässige Sensoren erforderlich.
Mit dem SCD30 von Sensirion habe ich bereits Messwerte für Temperatur, relative Luftfeuchtigkeit und CO2 erfasst und zur Anzeige gebracht.
Für kompakte Anzeigemodule habe ich den Sensor CCS811 von AMS/ScioSense ausprobiert, der von verschiedenen Herstellern als Breakout Board angeboten wird. Das DFRobot Environmental Module ist eine Kombination mit einem BME280 als Breakout Board, was ich einem ersten Test unterzogen habe.
Von Sensirion ist der SCD40 angekündigt, den ich ebenfalls einem Test unterziehen werde.
Im Arduino Handbuch stelle ich Ihnen u.a. die Hutschienen-Gehäuse für den Arduino von Zihatec sowie ein passendes OLED-Shield vor. Zihatec bietet nun eine Weiterentwicklung des OLED-Shields an.
Das OLED-Shield weist drei Taster und drei LEDs auf. Die Größe des OLED-Displays wurde auf 1.3 Zoll erhöht. Darüber hinaus enthält das Shield jetzt auch einen Summer, um eine akustische Ausgabe zu ermöglichen.
Du muss angemeldet sein, um einen Kommentar zu veröffentlichen.