Archiv der Kategorie: M5Stack

Meshtastic Kit for Experimentation

Die Seeed Studio XIAO-Serie ist eine Familie kompakter, leistungsstarker Mikrocontroller-Module (MCU), die speziell für platzsparende Projekte entwickelt wurden, die hohe Leistung und drahtlose Konnektivität erfordern.

Die Arduino-kompatible XIAO-Familie stellt Mikrocontroller-Module auf Basis verbreiteter Hardware wie Espressif ESP32-C3, ESP32-C6 & ESP32-S3, Renesas RA4M1, Raspberry Pi RP2350 & RP2040, Nordic nRF52840, Microchip SAMD21 und Silicon Labs MG MG24 zur Verfügung.

Der ESP32-S3 ist das erste Modul, das mit einem B2B-Connector (Board-zu-Board) ausgestattet ist und über diesen mit anderen Modulen erweitert werden kann.  Die folgende Abbildung zeigt eine Draufsicht auf das XIAO-ESP32-S3.

An der Unterkante des Moduls befinden sich der IPEX-Stecker für die WiFi-Antenne und daneben der 30-polige B2B-Connector.

The Seeed Studio XIAO series is a family of compact, high-performance microcontroller modules (MCU) designed explicitly for space-saving projects that require high performance, and wireless connectivity.

The Arduino-compatible XIAO family provides microcontroller modules based on popular hardware such as Espressif ESP32-C3, ESP32-C6 & ESP32-S3, Renesas RA4M1, Raspberry Pi RP2350 & RP2040, Nordic nRF52840, Microchip SAMD21, and Silicon Labs MG MG24.

The ESP32-S3 is the first module to be equipped with a B2B connector (board-to-board) and can be expanded with other modules via this connector. The following figure shows a top view of the XIAO-ESP32-S3.

The IPEX connector for the WiFi antenna is located on the bottom edge of the module, with the 30-pin B2B connector next to it.

XIAO ESP32-S3

Ein Wio-SX1262 Modul erweitert den ESP32-S3 zum Meshtastic Device und nutzt den B2B-Connector zur Verbindung der beiden Module. Die folgende Abbildung zeigt das über den B2B-Connector mit dem ESP32-S3 verbundene LoRa-Modul Wio-SX1262.

A Wio-SX1262 module expands the ESP32-S3 into a meshtastic device and uses the B2B connector to connect the two modules. The following figure shows the Wio-SX1262 LoRa module connected to the ESP32-S3 via the B2B connector.

Wio-SX1262 & ESP32-S3

Zum Experimentierumfeld braucht es aber weiterer Komponenten, die eine einfache Kontaktierung von Sensorik ermöglichen. Grove- und M5Stack-Sensoren weisen eine einheitliche (Grove-) Schnittstelle auf und sind deshalb ganz besonders geeignet.

Die aktuell von Meshtastic unterstützen Sensoren sind in der folgenden Tabelle gelistet. In den Spalten Grove und M5Stack sind die dazu passenden Grove- resp. M5Stack-Sensoren ergänzt. Die Detailinfomationen finden Sie auf den Herstellerseiten über die angegebenen Links.

However, the experimental environment requires additional components that enable the simple contacting of sensors. Grove and M5Stack sensors have a standardized (Grove) interface and are particularly suitable.

The sensors currently supported by Meshtastic are listed in the following table. The corresponding Grove and M5Stack sensors are added in the Grove and M5Stack columns. You can find detailed information on the manufacturer’s website via the links provided.

SensorI2C AddressData PointsGrove
seeedstudio.com
M5Stack
m5stack.com
BMP0850x76, 0x77Temperature and barometric pressure  
BMP1800x76, 0x77Temperature and barometric pressureGrove – Barometer Sensor(BMP180) 
BMP2800x76, 0x77Temperature and barometric pressureGrove – Temperature and Barometer Sensor (BMP280)ENV II Unit with Temperature Humidity Environment Sensor (SHT30+BMP280) ENV IV Unit with Temperature Humidity Air Pressure Sensor (SHT40+BMP280)
BME2800x76, 0x77Temperature, barometric pressure and humidityGrove -Temp&Humi&Barometer Sensor (BME280) 
BME68x0x76, 0x77Temperature, barometric pressure, humidity and air resistanceGrove – Temperature, Humidity, Pressure and Gas Sensor for Arduino – BME680 Grove – Air Quality Sensor(BME688) with built-in AI, High-Performance 4-in-1, Gas, Humidity, Pressure and Temperature sensorENV Pro Unit with Temperature, Humidity, Pressure and Gas Sensor (BME688)
MCP98080x18TemperatureGrove – I2C High Accuracy Temperature Sensor – MCP9808 
INA2600x40, 0x41, 0x43Current and Voltage  
INA2190x40, 0x41, 0x43Current and Voltage  
INA32210x423-channel Current and Voltage  
LPS220x5D, 0x5CBarometric pressure  
SHTC30x70Temperature and humidity  
SHT310x44Temperature and humidityGrove – Temperature&Humidity Sensor (SHT31) 
PMSA003I0x12Concentration units by size and particle counts by size  
DFROBOT_LARK0x42Temperature, barometric pressure, humidity, wind direction, wind speed  
MAX301020x57Heart Rate, Oxygen Saturation, and body temperature Mini Heart Rate Unit (MAX30100) Pulse Oximeter
MLX906140x5ABody temperatureGrove – Thermal Imaging Camera – MLX90641NCIR 2 Thermometer Unit (MLX90614)   NCIR Non-Contact Infrared Thermometer Sensor Unit (MLX90614)

Die XIAO-Familie bietet für die einfache Erweiterung mit den genannten Senoren über den I2C-Bus das XIAO-Expansionboard an.

Es stehen aber auch ein UART- und ein IO-Interface (A0, D0) zur Verfügung.

The XIAO family offers the XIAO expansion board for simple expansion with the above sensors via the I2C bus .

However, a UART and an IO interface (A0, D0) are also available.

XIAO Expansion Board

Das UART-Interface kann für den Anschluss eines GPS-Moduls, wie beispielsweise der in der folgenden Abbildung gezeigten M5Stack GPS Unit, verwendet werden.

You can use the UART interface to connect a GPS module, such as the M5Stack GPS Unit shown in the following figure.

Zusätzlich weist das Board noch ein OLED-Display und einen Batterieanschluss auf. Die Batterie kann über USB geladen werden. Ein Solaranschluss steht nicht zur Verfügung.

Ich habe die beiden Boards für das Meshtastic Device bei Seeedstudio (https://www.seeedstudio.com/Wio-SX1262-with-XIAO-ESP32S3-p-5982.html) bestellt und werde nach dem Eintreffen der Hardware das Kit zusammenstellen und die Inbetriebnahme hier dokumentieren.

The board also has an OLED display and a battery connection. You can charge the battery via USB. A solar connection is not available.


I have ordered the two boards for the Meshtastic Device from Seeedstudio (https://www.seeedstudio.com/Wio-SX1262-with-XIAO-ESP32S3-p-5982.html) and will assemble the kit once the hardware arrives and document the commissioning here.


2024-12-14/CK

M5Stack Stamp-C3U

Heute im Postkasten – M5Stamp-C3U.

Der M5Stamp-C3U basiert auf dem 32-Bit-RISC-V-Mikrocontroller ESP32-C3 – RV32IMC von Espressif und arbeitet mit einer maximalen Taktfrequenz von 160 MHz.

Heute geliefert – – M5Stamp-C3U.

Ein ESP32-C3-DEVKITM-1 und ein ESP32-C3-DEVKITC02 hatte ich zu je € 9.65 bei Schukat bestellt und im Juli 2021 getestet. Siehe hierzu meinen Blogbeitrag ESP32-C3 – RV32IMC von Espressif. Für $ 5.90 erhalten Sie die M5Stamp-C3U im M5Stack Store.

Interessant sind die verschiedenen Bestückungsvarianten (SMT, DIP, Flywire, Grove Interface), die durch das hoch-temperatur-beständige Plastikgehäuse gegeben sind. Mit diesem Gehäuse können die internen Komponenten einschliesslich der 3D-Antenne sehr gut geschützt werden.


2022-02-03/CK

Abgesetzter Wettersensor mit NB-IoT

Im Norden Deutschlands wird man schnell feststellen, dass die Abdeckung mit Gateways für TTS mit der in den Ballungszentren in der Mitte und im Süden Deutschlands in keiner Weise vergleichbar ist.

Was bleibt?

Entweder folgt man dem LoRaWAN-Community-Gedanken und nimmt ein eigenes Gateway in Betrieb und unterstützt die Community in Schwerin oder Rostock oder nutzt mit NB-IoT eine LPWAN-Alternative.

LoRaWAN ist eine verbreitete und unter bestimmten Bedingungen auch für jeden zugängliche Möglichkeit zur Übermittlung von Daten eines IoT-Knotens. Aber, LoRaWAN ist eine Möglichkeit und es gibt weitere, wie NB-IoT, Sigfox, LTE-M, Weightless, Symphony Link u.a.

Von den verfügbaren Technologien setzen sich LoRaWAN und NB-IoT deutlich ab. In der geschilderten Situation ist es also angebracht, sich auch mit NB-IoT auseinander zu setzen, um die Funktionen und Unterschiede der beiden Technologien zu verstehen.

LPWAN-Technologie NB-IoT

NB-IoT dient dem Senden und Empfangen kleiner Datenmengen (einige zehn oder hundert Bytes pro Tag), die von IoT-Geräten mit geringer Zahl an generierten Daten stammen. NB-IoT ist wie LoRaWAN nachrichtenbasiert, jedoch mit einer viel schnelleren Modulationsrate, die viel mehr Daten verarbeiten kann als LoRa.

NB-IoT ist für einfache Geräte gedacht, die über ein lizenziertes Frequenzspektrum eine Verbindung zu einem Betreibernetzwerk herstellen müssen.  Da NB-IoT-Geräte auf 4G (LTE)-Abdeckung angewiesen sind, profitieren sie von einer sehr guten Abdeckung und funktionieren in Innenräumen und in dichten städtischen Gebieten sehr gut. NB-IoT hat schnellere Reaktionszeiten als LoRaWAN und kann eine bessere Servicequalität garantieren.

Eine Gegenüberstellung der Hauptmerkmale beider LPWAN-Technologien zeigt die folgende Tabelle [1].

Technology ParametersLoRaWANNB-IoT
Bandwidth125 kHz180 kHz
Coverage165 dB164 dB
Battery Life15+ years10+ years
Peak Current32 mA120 mA
Sleep Current1 µA5 µA
Throughput50 Kbps60 Kbps
LatencyDevice Class Dependent<10 s
SecurityAES 128 bit3GPP (128 to 256 bit)
GeolocationYes (TDOA)Yes (In 3GPP Rel 14)
Cost EfficiencyHighMedium
LoRaWAN vs. NB-IoT [1]

Da NB-IoT auf 4G (LTE) angewiesen ist, ist der Anwender von NB-IoT auch an einen entsprechenden Provider gebunden, der die Netzabdeckung absichert. Für die deutsche Telekom und Vodafone sieht die Netzabdeckung für NB-IoT in Deutschland sehr gut aus, wenn es da auch noch Unterschiede gibt. Die folgende Abbildung zeigt die NB-IoT-Netzabdeckung der Telekom für Deutschland.

NB-IoT-Netzabdeckung der Telekom für Deutschland

Die NB-IoT-Abdeckung von Vodafone für Deutschland sieht ähnlich aus. Wenn Sie den angegebenen Links folgen, können Sie detaillierte Information für Ihre Umgebung erhalten.

Telekom (D)https://www.telekom.de/netz/mobilfunk-netzausbau
Vodafone (D)https://www.vodafone.de/hilfe/netzabdeckung.html
Swisscom (CH)https://scmplc.begasoft.ch/plcapp/pages/gis/netzabdeckung.jsf?netztyp=lte
A1 (A)https://www.a1.net/hilfe-support/netzabdeckung/frontend/main.html

Für die DACH-Region (D, A und CH) sind damit providerseitig alle Voraussetzungen für den Einsatz von NB-IoT gegeben. Roaming-Vereinbarungen, die beispielsweise von der Telekom mit zahlreichen Nachbarstaaten getroffen worden sind, ermöglichen einen länderübergreifenden Einsatz von NB-IoT.

Die für den NB-IoT-Zugriff erforderlichen SIM-Karten können von verschiedenen Anbietern bezogen werden. Ich verwende hier 1NCE (1nce.com) . Die 1NCE IoT Flat Rate ist ein Pre-Paid Modell für IoT Geräte.

Wettersensor mit NB-IoT

Für den Test von NB-IoT habe ich einen einfachen Wettersensor auf Basis einer M5Stack AtomDTU NB-IoT mit einem Atom Lite als Controller und einer M5Stack ENV.II Unit als Sensor aufgebaut.

Die ENV.II Unit umfasst einen SHT30 Sensor zur Messung von Temperatur und Luftfeuchtigkeit und einen BMP280 zur Messung von Temperatur und barometrischem Druck. Beide Komponenten werden über die Grove-Ports mit dem I2C-Bus miteinander verbunden.

Das über die Arduino IDE erstellte Anwendungsprogramm erfasst die Sensordaten und versendet diese über NB-IoT an einen MQTT-Broker. Die Basis für das Anwendungsprogramm ist auf GitHub unter der URL https://github.com/m5stack/ATOM_DTU_NB/tree/master/examples/MQTT.

Die Beschreibung der AT-Kommandos für das im AtomDTU NB-IoT eingesetzte SIMCom SIM7020 Modul finden Sie unter [2] und [3].

Ich verwendet hier den HiveMQ Public MQTT Broker und greife auf die Daten über einen Webclient zu.

Die Messwerte für Temperatur, relative Luftfeuchtigkeit und barometrischen Druck werden abgefragt und einer nach dem anderen im Minutentakt versendet (published).

Im Webclient habe ich den Topic atomdtu/# abonniert (subscribed) und sehe damit jede versendete Nachricht incl. deren Time Stamp.

Haben Sie keinen WLAN-Zugang ins Internet und zum MQTT-Broker, dann kann ein mobiler Zugriff vom Smartphone (hier über 4G) von einer MQTT Dashboard App aus erfolgen.

Mobiler Zugriff über MQTT Dashboard App

Referenzen


2022-01-19/CK

Tastaturerweiterung für M5StickC

Die Eingabemöglichkeiten über die zwei Tasten des M5StickC sind zwangsläufig limitiert. Möchte man eine voll ausgestatteten QWERTY-Tastatur für den M5StickC zur Verfügung haben, dann ist das CardKB HAT eine gute Möglichkeit.

Das CardKB HAT bietet auch Unterstützung für verschiedene Tastenkombinationen (Shift + Taste, Fn + Taste), mit denen praktisch viele verschiedene Tasten hinzugefügt werden können. Der Tastaturstatus wird mit einer RGB-LED angezeigt. Leider ist diese in der Ecke links oben nicht sehr günstig angeordnet, da sie durch den M5StickC abgedeckt wird. Das Keyboard meldet sich als I2C-Device mit der I2C-Adresse 0x5F.

Das die unten angezeigten Ausgaben erzeugende Testprogramm M5StickC_Keyboard.ino steht auf Github zum Download zur Verfügung. Die Tastatureingaben werden hier auf dem M5StickC-Display in grün dargestellt.

M5Stack Prototyping Platform

Im Blogbeitrag Rapid Prototyping mit M5Stack hatte ich die M5Stack Family als interessante Prototyping Platform vorgestellt.

Dieser Beitrag zeigt an Hand einer einfachen Wetterstation als Beispiel einer nahezu beliebigen IoT-Anwendung, wie mit M5Stack Komponenten schnell ein ansehnlicher Prototyp erstellt werden kann

Mit einem M5Stack Basic Core und einer ENV Unit zur Erfassung von Temperatur, rel. Luftfeuchte und Luftdruck sowie einem SIM800L Module zum Versenden der Daten über GPRS hat man schnell eine abgesetzte Wetterstation aufgebaut, die auch ohne WLAN Zugang autonom funktionieren kann.

Der M5Stack Core besitzt in seinem Unterteil nur einen 150 mAh. Will man die Akkuleistung, beispielsweise zur Pufferung, erhöhen, dann kann ein M5GO/FIRE Battery Bottom Charging Base als Unterteil eingesetzt werden.

M5Stack Basic Core

Die ENV Unit ist ein Umgebungssensor, der zur Messung von Temperatur, relativer Luftfeuchtigkeit und Luftdruck verwendet werden kann. Intern werden die Sensoren DHT12 und BMP280 verwendet.

Der DHT12 ist eine Weiterentwicklung des bekannten DHT11 Sensors, der nun präziser und mit einer I2C-Schnittstelle ausgestattet ist. Der BMP280 ist ein barometrischer Drucksensor, der speziell für mobile Anwendungen entwickelt wurde.

Kontaktiert wird die ENV Unit über den an der linken Seite des M5Stack Basic Core angeordneten Grove-PortA (i2C).

ENV Unit with Temperature Humidity Pressure Sensor (DHT12+BMP280)

SIM800L ist ein Mobiltelefonmodul auf Basis des SIM800L GSM / GPRS-Modul von SIMCOM,

GSM Module SIM800L with MIC & Headphone Jack

Mit diesen drei Komponenten wird die Wetterstation aufgebaut. Die Kosten der ansprechenden Anordnung belaufen sich dabei auf:

KomponentePreis
M5Stack Basic Core$ 27.95
ENV Unit$ 3.39
GSM Module SIM800L with MIC & Headphone Jack $ 9.95
Summe$ 41.29

Die folgenden Bilder zeigen den Ablauf vom Programmstart bis zum Abschluss der Übertragung des Temperaturmesswertes, der hier für die Evaluierung ausreichend erschient.

Initialisierung nach Programmstart
Messwerte erfasst – Versenden zum Thingspeak Server
Messwerte versendet

Der Quelltext für das Programm M5Stack_DHT12_Thingspeak ist auf Github unter https://github.com/ckuehnel/M5Stack/tree/master/M5Stack/M5Stack_DHT12_Thingspeak abgelegt. Anpassungen auf weitere Parameter und andere Displayausgaben können nach dem Download leicht vorgenommen werden. Programmiert wurde mit der Arduino IDE v1.8.9.

Das Ergebnis der abendlichen Abkühlung ist im folgenden Bild zu sehen.

Temperaturverlauf 6.08.2019 abends

Ein Wort noch zur Stromversorgung. Der SIM800L ist bekannt dafür, dass er in Spitzen bis zu 2 A Stromaufnahme verzeichnet. Die Spannungsversorgung kann beim M5Stack aber vernünftig nur über den USB-Anschluss erfolgen. Dadurch ist der zur Verfügung stehende Strom limitiert.

Ich habe einen D-Link DUB-H4 USB-Hub verwendet, der vier Downstream-USB-Anschlüsse Typ A (Buchse) inklusive Schnellladeanschluss besitzt und durch ein externes Netzteil gespeist wird.

Der fürs iPad u.a. stromhungrige Verbraucher gedachte Schnellladeanschluss dient hier zur Stromversorgung und die sporadischen Brown Out-Resets des ESP32 sind Vergangenheit.

Messung der Wassertemperatur

Auf meiner Website http://ckuehnel.ch/WetterVitte.html habe ich Temperaturangaben für Vitte auf der Insel Hiddensee.

Die Angaben aus dem Netz für die Wassertemperatur der Ostsee zeigen erhebliche Differenzen. Gelistet sind auf der Website Wassertemperaturen aus folgenden Quellen:

Mit dem im Post Rapid Prototyping mit M5Stack beschriebenen M5StickC und einem wasserdichten DS18B20-Temperatursensor mit einer Zuleitungslänge von 1 m habe ich ein portables Messgerät aufgebaut, mit dem die Wassertemperatur in 1 m Tiefe gemessen werden kann.

Die Messwerte für den Zeitraum 4.06. bis 13.06.2019 sind als Excel-Sheet abrufbar.

Gemessen wurde am Wasserrand nahe der Oberfläche und im Wasser (Strandnähe) bei 1 m Wassertiefe. Interessant sind für mich folgende Feststellungen:

  • die Messwerte schwanken viel stärker als vom BSH für Kloster angegeben
  • bei Ostwind sinkt die Wassertemperatur erheblich, was in den BSH Daten kaum sichtbar wird
  • bei Wellengang unterscheiden sich die Messwerte am Rand nur wenig von denen in 1 m Tiefe, was sich durch die Durchmischung des Wassers erklärt.
  • es erscheint dennoch recht schwierig, von solchen Messungen verallgemeinerungsfähige Aussagen abzuleiten
  • definierte Messbedingungen und die Einhaltung dieser sind unabdingbare Voraussetzungen für die Vergleichbarkeit solcher Messwerte
Lage der Messstelle

Rapid Prototyping mit M5Stack

Wem es bislang an Baugruppen mit einem vernünftigen Gehäuse für die Entwicklung seiner Prototypen gemangelt hat, dem wird mit M5Stack Komponenten eine ansprechende Lösung angeboten.

Hier sind aus dem Angebot von M5Stack zwei Core Module:

Generell weisen beide Core Module einen ESP32 als Controller auf.

Die M5Stack Komponenten werden von zahlreichen Lieferanten angeboten und sind nicht nur bei Bezug aus Fernost sehr preiswert.

KomponenteAliexpress
M5Stack CoreUS$ 27.60
M5StickCUS$ 9.90
ENV UnitUS$ 3.20

Ich habe mit dem M5StickC erste Versuche unternommen, um seine Eignung für ein portables Messgerät zu testen. Der M5StickC ist mit einem 80 mAh LiPo-Akku ausgerüstet, was keine großen Akkulaufzeit erwarten lässt.

Der M5StickC ist mit einem Power System Management Chip AXP192 ausgestattet, der ein USB-kompatibles Ladegerät, DC-DC-Wandler, Low-Dropout-Linearregler, Spannungs- /Strom- /Temperaturüberwachung und Multi-Kanal 12-Bit ADC aufweist. Die Überwachung des Ladezustand des LiPo-Akkus kann über diesen Chip erfolgen.

Der ESP32 weist zwei I2C-Busse auf. Über den ersten werden die internen Chips AXP32 (0x34), BM8563 (0x51) und SH200Q (0x6C) angesteuert. Der zweite I2C-Bus ist am GROVE-Connector verfügbar.

Für einen ersten Test schließe ich eine ENV Unit über den GROVE-Connector an. Dieses Modul beinhaltet einen DHT12 (0x5C) und einem BMP280 (0x76) Sensor und erfasst damit Temperatur, relative Luftfeuchte und barometrischen Druck.

Das Programmbeispiel M5StickC_ENV.ino erfüllt zwei Aufgaben:

  1. Erfassen von Temperatur, relativer Luftfeuchte und barometrischem Druck über die angeschlossene ENV Unit.
  2. Erfassen von Batteriespannung und Ladestrom für den LiPo-Akku

Das Programmbeispiel ist auf Github abgelegt.

Ausgehend von einem voll aufgeladenen LiPo-Akku habe ich die USB-Verbindung getrennt und das angegebene Programmbeispiel batterie-betrieben laufen lassen. Es hat sich folgender Entladevorgang gezeigt.

Nach reichlich 60 Minuten war die Kapazität des Akkus erschöpft und das System schaltete sich ab. Die folgenden Bilder demonstrieren diesen Vorgang.

Beginn mit voll aufgeladenem LiPo-Akku
Entladung nach 10 Minuten
Erneutes Aufladen des LiPo-Akkus

Es soll an dieser Stelle noch ausdrücklich darauf hingewiesen werden, dass für den Betrieb hier keine WiFi-Verbindung genutzt wurde. Eine WiFi-Verbindung erhöht den Stromverbrauch deutlich, so dass wesentlich geringere Laufzeiten erwartet werden müssen.