Archiv der Kategorie: ESP32

Walter: Kompaktes IoT-Modul mit ESP32-S3 und LTE-M/NB-IoT-Modem


Für IoT-Anwendungen stehen heute verschiedene Funktechnologien zur Verfügung. Alle namhaften Anbieter stellen LoRaWAN- oder LTE-M/NB-IoT-Module zur Verfügung und der Anwender bzw. die Applikation entscheidet, welche Technologie zum Einsatz kommt.

LTE-M (Cat-M1) und NB-IoT (Narrowband IoT) sind beides Mobilfunkstandards aus dem LTE-Umfeld und wurden speziell für das Internet der Dinge (IoT) entwickelt.

Unter der Marke QuickSpot, bietet das belgische Unternehmen DPTechnics BV eine Reihe von IoT-Bausteinen an, die den Anwender bei der Produktentwicklung unterstützen soll.
Ein bemerkenswertes Produkt ist Walter, ein Open-Source-Multifunk-IoT-System-on-Module (SoM), das einen ESP32-S3-Mikrocontroller mit einem Sequans GM02SP LTE-M/NB-IoT-Modem und einem GNSS-Empfänger kombiniert.

Walter unterstützt verschiedene Drahtlosoptionen, einschließlich WiFi, Bluetooth, LTE-M, NB-IoT und GPS, und ist für eine einfache Integration in IoT-Projekte konzipiert. Das Modul ist vollständig zertifiziert (CE, FCC, IC, UKCA, RCM) und wird mit Open-Source-Softwarebibliotheken für Plattformen wie Arduino, MicroPython und ESP-IDF geliefert.

Inbetriebnahme von Walter und Programmbeispiel zu WiFi- und LTE-M-Kommunikation sind in diesem eBook zusammengestellt.

Hier ist eine Zusammenfassung, was im Einzelnen behandelt wird:

Walter ist ein Open-Source-IoT-Modul von DPTechnics BV, das sich perfekt für Entwickler und Maker eignet, die Projekte mit LTE-M, NB-IoT, WiFi, Bluetooth und GPS umsetzen möchten – egal ob mobil, netzunabhängig oder energieeffizient.

Walter umfasst:

  • ESP32-S3 Mikrocontroller mit 16 MB Flash & 2 MB PSRAM
  • LTE-M/NB-IoT-Modem (Sequans GM02SP)
  • GNSS-Empfänger (GPS/Galileo)
  • Onboard-Antennen für WiFi & Bluetooth
  • Stromversorgung über USB-C oder Batterie (auch Solar)
  • 24 GPIOs & viele Schnittstellen (I2C, SPI, CAN, UART, etc.)

Die vorhandenen Schnittstellen lassen flexible Erweiterungen zu. I²C- und OneWire-Sensoren sind problemlos anschließbar (z. B. SHT31, DS18B20). Beispielprojekte zur Wetterdatenerfassung, Temperaturmessung in Bojen werden gezeigt.

Verbindung zu OpenWeatherMap, MQTT-Brokern (HiveMQ, ThingSpeak) oder einem UDP-Demoserver werden beschrieben. Beispielcode für WiFi- oder LTE-basierten Wetterdatenabruf und Cloud-Upload.

Die Programmierung von Walter kann mit der Arduino IDE, MicroPython & ESP-IDF erfolgen. Alle Libraries & Beispiele auf GitHub: github.com/QuickSpot. Die Programmbeispiele im eBook sind mit der Arduino IDE erstellt.

Ideal für mobile & energieeffiziente Projekte. Unterstützt DeepSleep & geschaltete Sensorversorgung. Ideal für Outdoor, Umweltmonitoring, Smart Farming, u. v. m.

Kurz gesagt:
Walter ist ein vielseitiges, sofort einsatzbereites LTE-IoT-Modul für Entwickler und Maker, die mit LTE-M bzw. NB-IoT eine Alternative zu WiFi oder LoRa/LoRaWAN suchen.

Ab dem 7.08.2025 gibt es auch einen Print der deutschen Ausgabe über Amazon.


2025-08-08/CK

Meshtastic – Erfassen, Versand und Visualisierung von Messwerten

Im Blogbeitrag „Meshtastic – Erfassung und Versand von Messwerten“ hatte ich die Erweiterung eines Meshtastic-Knotens mit Sensoren und den Versand der erfassten Messwerte betrachtet. Damit stehen die Messwerte im Meshtastic-Netzwerk zur Verfügung.

Sollen die erfassten Messwerte visualisiert oder anderweitig weiterverarbeitet werden, dann müssen sie außerhalb des Meshtastic-Netzwerks zur Verfügung gestellt werden. Ein mit einer MQTT-Schnittstelle ausgestatteter Meshtastic-Knoten kann die Verbindung ins Internet ermöglichen. Auf diese Weise lassen sich örtlich weit auseinanderliegende (lokale) Meshtastic-Netzwerke verbinden und/oder erfasste Daten zentral auswerten.

Der Off-Grid-Aspekt geht in diesem Fall allerdings verloren.

Bei den folgenden Betrachtungen gehe ich von dem in der Abbildung gezeigten Meshtastic-Netzwerk aus.

Meshtastic-Netzwerk

Mein Netzwerk besteht aus verbreiteten Meshtastic-Devices. Eine kommentierte Übersicht finden Sie unter Meshtastic Erfahrungen: Boards und Module.

Hervorzuheben sind hier der RAKwireless-Sensorknoten auf Basis eines Mikrocontrollers RAK4631 (nRF52840), der Messwerte über verschiedene Sensoren erfasst und diese im Meshtastic-Netzwerk zur Verfügung stellt, und der Heltec LoRa32 V3 Knoten auf Basis eines ESP32-S3, der eine WiFi-Schnittstelle zur Verbindung mit einem Router und über diesen mit dem Internet ermöglicht. Die anderen Meshtastic-Knoten (in der Abbildung nicht eingefärbt) empfangen die Nachrichten des Sensorknotens und dienen dem üblichen Nachrichtenaustausch.

Um den Meshtastic-Knoten autonom betreiben zu können, wird dieser über eine Solarzelle mit Batteriepufferung versorgt. Nachdem der ursprünglich vorgesehene Waveshare Solar Power Manager (B) nicht die erwarteten Ergebnisse gebracht hat, habe ich einen DFRobot Solar Power Manager 5 V eingesetzt (siehe Abbildung).

Speisung des Meshtastic-Knoten durch einen DFRobot Solar Power Manager 5 V

Der Ladezustand des eingesetzten NCR18650 Li-Ion-Akkus muss separat überwacht werden. Hierzu verwende ich einen INA219, der über den I2C-Bus mit dem Grove-Anschluss des RAK1920 Sensor Adapter Modul verbunden wird (siehe Abbildung).

Messung des Ladezustands des LiPo-Akkus mit einem INA219-Sensor

Der mit einem I2C-Interface ausgestattet SHTC3-Sensor zur Messung von Temperatur und relativer Feuchte kann über einen I2C-Hub (z.B. von M5Stack) mit dem Grove-Anschluss des RAK1920 Sensor Adapter Moduls verbunden werden.

Der Temperatursensor DS18B20 ist Bestandteil des im Blogbeitrag „Meshtastic – Erfassung und Versand von Messwerten“ beschriebenen externen Sensormoduls, welches über ein serielles Interface mit dem RAK1920 Sensor Adapter Modul verbunden wird.

Beide Mikrocontroller, der Meshtastic-Knoten und das externe Sensormodul, werden vom DFRobot Solar Power Manager 5 V über ein USB-A- zu 2x USB-C-Kabel mit Spannung versorgt.

Als MQTT-Broker verwende ich HiveMQ (https://broker.hivemq.com). Es ergibt sich damit die in der Abbildung gezeigte Zusammenstellung.

Vom Meshtastic-Gateway werden mit dem Token msh/2/json/LongFast verschiedene MQTT-Messages versendet (published). Ein MQTT-Client abonniert (subscribed) diese Tokens und kann damit die übermittelten Nachrichten weiterverarbeiten.

Ich habe auf dem PC den MQTT-Client MQTTX installiert und kann damit die empfangenen Messages anzeigen. Abgeleitet von den aktivierten Meshtastic-Modulen empfange ich vom Knoten 2692927950 (RAK1) die folgenden Messages:

Telemetry Message:

{
  "channel": 0,
  "from": 2692927950,
  "hop_start": 3,
  "hops_away": 0,
  "id": 587303572,
  "payload": {
    "barometric_pressure": 0,
    "current": -0.200000002980232,
    "gas_resistance": 0,
    "iaq": 0,
    "lux": 0,
    "radiation": 0,
    "relative_humidity": 29.2199993133545,
    "temperature": 24.4500007629395,
    "voltage": 4.19999980926514,
    "white_lux": 0,
    "wind_direction": 0,
    "wind_gust": 0,
    "wind_lull": 0,
    "wind_speed": 0
  },
  "rssi": -54,
  "sender": "!fa66367c",
  "snr": 6.75,
  "timestamp": 1740267577,
  "to": 4294967295,
  "type": "telemetry"
}

TextMessage:

{
  "channel": 0,
  "from": 2692927950,
  "hop_start": 3,
  "hops_away": 0,
  "id": 3687588499,
  "payload": {
    "text": "DS18B20 Temp =  24.8 °C\n"
  },
  "rssi": -54,
  "sender": "!fa66367c",
  "snr": 6.25,
  "timestamp": 1740267577,
  "to": 4294967295,
  "type": "text"
}

Position Message:

{
  "channel": 0,
  "from": 2692927950,
  "hop_start": 3,
  "hops_away": 0,
  "id": 1306258064,
  "payload": {
    "altitude": 423,
    "latitude_i": 471921490,
    "longitude_i": 88150580,
    "precision_bits": 32,
    "time": 1740266796
  },
  "rssi": -54,
  "sender": "!fa66367c",
  "snr": 5.75,
  "timestamp": 1740266796,
  "to": 4294967295,
  "type": "position"
}

In den drei Messages sind alle von den Sensoren erfassten Messwerte enthalten. Vom Sensor SHTC3 werden Temperatur (temperature) und rel. Luftfeuchtigkeit (relative_humidity) erfasst. Der Sensor INA219 erfasst den Ladezustand der Batterie mit Spannung (voltage) und Strom (current).

Der Temperaturmesswert des DS18B20 Sensors wird vom externen Sensormodul als Textstring übergeben und folglich auch als Textmessage (text) versendet.

Die Positionsdaten sind hier fest vorgegeben und werden in der Position Message (altitude, latitude_i, longitude_i) versendet.

Die MQTT-Messages enthalten weitere Daten, die bei Bedarf auch noch ausgewertet werden können.

Ich verwende zum Zugriff auf den MQTT-Broker und zur Visualisierung der erfassten Messwerte die IoT-Plattform Datacake. Datacake ist eine vielseitig einsetzbare Low-Code-IoT-Plattform, die keine Programmierkenntnisse und nur minimalen Zeitaufwand erfordert, um benutzerdefinierte IoT-Anwendungen für den Desktop oder Mobil Devices zu erstellen.

Die folgenden Abbildungen zeigen ein Dashboard für einen Desktop-PC und zwei Screenshots des Dashboards für ein Smartphone.

Dashboard für den Desktop
Dashboard für Smartphone-1
Dashboard für Smartphone-2

Die verwendete Software finden Sie unter https://github.com/ckuehnel/Meshtastic.

Über den öffentlichen Link können Sie
das Dashboard aufrufen.


Das Verhalten des Meshtastic-Knotens unter verschiedenen Umgebungsbedingungen beschreibe ich im Blogpost Solar-betriebener Meshtastic-Knoten.


2025-03-14/CK

Meshtastic Kit: Experimenting with XIAO ESP32-S3 & Wio-SX1262

Im Blogbeitrag Meshtastic Kit for Experimentation hatte ich Ihnen das XIAO ESP32S3 & Wio-SX1262 Kit vorgestellt.

Rechtzeitig vor dem Chinesischen Neujahrsfest kam heute meine Bestellung von Seeedstudio an.

Komponenten des XIAO ESP32S3 & Wio-SX1262 Kits

Durch die Kontaktierung der beiden Boards über den B2B-Connector entsteht ein kompaktes Meshtastic-Modul.

XIAO ESP32-S3 & Wio-SX1262 Modul

Ein Meshtastic Experimentierumfeld zeichnet sich dadurch aus, dass es den eigentlichen Meshtastic Knoten um für die Anwendung wichtige externe Komponenten erweitert. Das XIAO Expansionsboard bietet neben Grove-Connectoren ein OLED-Display, wodurch die komplette Infrastruktur für Meshtastic Experimente verfügbar ist.

XIAO ESP32-S3 & Wio-SX1262 Modul im XIAO Expansionsboard

Die Einrichtung des Meshtastic-Knotens erfolgt wie gewohnt über den WebFlasher und anschliessende Konfiguration.

Ich habe den Meshtastic-Knoten über den I2C-Port mit einer M5Stack ENV II Unit erweitert. Durch die in dieser Unit verbauten Sensoren 8sh

SHT30 & BMP280) können Temperatur und relative Feuchte sowie barometrischer Druck gemessen werden. Auf dem OLED-Display werden die Daten der empfangenen Meshtastic-Knoten angezeigt.

In der verbundenen Android App stellen sich die übermittelten Telemetriedaten dann gemäss dem folgenden Screenshot dar.

Screenshot Android App

2025-01-09/CK

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

SensorHub Weather Data on Meteologix

I have been using Kachelmannwetter’s information and following their weather forecast on YouTube for a long time.

Kachelmannwetter provides extensive weather and environmental data, as well as webcam recordings. Interested parties can also contribute weather data to complete the range of data on offer.

I have taken up the invitation and, as a new Citizen Scientist, I am now also making my SensorHub data available on the Meteologix platform.

The images below display the professional and amateur weather stations in my area. Additionally, the graph depicts the ambient temperature measured at a height of 2 meters over a 72-hour period.

Schon lange nutze ich die Informationen von Kachelmannwetter und verfolge die Wettervorhersage auf Youtube.

Neben der Bereitstellung umfangreicher Wetter- und Umweltdaten sowie Webcam-Aufnahmen können Interessenten Wetterdaten beisteuern und so das Angebot an Daten komplettieren.

Ich habe die Aufforderung aufgegriffen und stelle als neuer Citizen Scientist nun meine SensorHub Daten auch auf der Meteologix Plattform bereit.

In den folgenden Bildern sind die Profi- und Amateur-Wetterstationen meiner Gegend gezeigt. Abschließend ist der 72 h Verlauf der Umgebungstemperatur gemessen in 2 m Höhe gezeigt.

Profi Weather Stations
Amateur Weather Stations
SensorHub 72 h Weather Data

The program Oxocard_MQTT_Client_Weather_Portals uses an Oxocard Connect to retrieve the data from the TTN LNS and prepare it for upload.

The program covers both Meteologix and Weathercloud.

Das Programm Oxocard_MQTT_Client_Weather_Portals nutzt einen Oxocard Connect, um Daten vom TTN LNS abzurufen und für den Upload vorzubereiten.

Das Programm deckt sowohl Meteologix als auch Weathercloud ab.


Die Screenshots wurden mit freundlicher Genehmigung von der Website kachelmannwetter.com übernommen.


2024-02-15/CK

Oxocard Connect

In meinem Blogbeitrag Vermittlung digitaler Inhalte in der Schule hatte ich die das Informatikinteresse an den Schulen fördernden Mikrocontroller BBC micro:bit, Calliope mini, und Oxocard betrachtet.

Dieser Bereich ist nach wie vor in Bewegung, stellt doch die Digitalisierung in allen Lebensbereichen eine grosse Herausforderung dar.

Mit der Oxocard Mini Serie stellt die Schweizer Oxon AG Computerboards zur Verfügung, die das Eintauchen in Computergrafik und ihre zugrunde liegenden Algorithmen oder Spiele und Animationen mit ihren Quelltexten ermöglichen.

OxoCard (Mini) Science ist eine programmierbare Multisensorplatine, die mit Hilfe von sieben Sensoren die folgenden physikalischen Grössen erfasst: Licht/IR, Temperatur, Geräusche, Feuchte, Druck und flüchtige Kohlenstoffverbindungen (VoC, eCO2 und Ethanol). Auch hier steht der dokumentierte Quelltext zur Verfügung und eigene Experimente können gestartet werden.

Oxocard Science, Oxocard Galaxy & Oxocard Artwork

Das jüngste Kind der Oxocard-Familie ist Oxocard Connect – ein ebenfalls auf dem ESP32 aufbauendes und damit netzwerktaugliches Computermodul mit grafischem TFT-Display und einem Joystick für die Benutzer-Eingaben, welches durch seitlich einsteckbare Cartridges mit peripheren Komponenten, wie Sensoren etc., erweitert werden kann.

Oxocard Connect mit Air Cartridge

Die Programmierung kann wieder über den komfortablen Nanopy-Editor erfolgen. Zahlreiche Programmbeispiele und ausführliche Erläuterungen dienen der Einarbeitung und Auseinandersetzung mit diesem System. Zum näheren Kennenlernen möchte ich Sie auf den Beitrag von David Lee verweisen.

Ich möchte Oxocard Connect nicht mit Python programmieren, sondern diesen sehr ansprechend gestaltetem Controller mit der Arduino-IDE programmieren. Die zahlreichen Libraries ermöglichen die Erweiterung mit Sensoren und die Vernetzung sehr komfortabel. Mit dem Veroboard lassen sich Prototypen sehr einfach erstellen, bevor man mglw. eine anwendungsspezifische Cartridge erstellt.

Oxocard Connect Arduino Test

Für die Hardware-Konstellation habe ich ein Testprogramm erstellt, welches die folgenden Funktionen testet:

  • Ausgabe auf dem farbigen TFT-LCD mit 240 x 240 Pixel LH133T-IG01 mit ST7789VW LCD-Controller
  • Abfrage Joystick
  • LEDs über digitale IO
  • EEPROM über I2C-Bus

Auf der Cartridge stehen neben digitaler und analoger IO und I2C-Bus auch noch SPI zur Verfügung. Ausserdem kann die gesamte Schaltung auch extern mit 5V (VEXT) versorgt werden.

Der Einsatz eines so ansprechend gestalteten Controllers lässt schnell das oft vorhandene Drahtverhau mit seinen unsicheren Verbindungen vergessen.


Oxocard Connect Openweather Station

Oxocard Connect besitzt mit der vorhandenen Hardware alle Möglichkeiten, über das Internet auf Daten zuzugreifen und diese auf dem Display darzustellen.

Ich habe hier durch Abfrage der Wetterdaten von Openweathermap.org eine kleine Wetterstation als Anwendungsbeispiel erstellt.

Openweathermap.org stellt maximal 1000 Aufrufe pro Tag gratis zur Verfügung, weshalb hier der Abfragezyklus auf zwei Minuten eingestellt wurde. Werden die 1000 Aufrufe überschritten, dann kann ein blockierter Account die Folge sein.

Das Programm finden Sie auf GitHub unter https://github.com/ckuehnel/Arduino2023/tree/main/ESP32/Oxocard/Oxocard_OpenWeather


Oxocard Connect MQTT-Client

Simon Kemper beschreibt auf LinkedIn die Verbindung von Datacake und Slack zur Benachrichtigung bei kritischen Zuständen etc.

Unter Verwendung des TTN-internen MQTT-Servers bin ich einen anderen Weg gegangen.

Ich verwende Oxocard Connect als MQTT-Client und filtere nur die für das Monitoring erforderlichen Größen aus den Upload-Messages zur Anzeige auf dem Display.

Konkret überwache ich die Batteriekapazität eines solar-gepufferten SensorHubs von RAKwireless. Gerade jetzt in der dunklen Jahreszeit möchte ich den Ladezustand der Batterie überwachen, um die Nachladung tagsüber zu verifizieren.

Der SensorHub sendet die erfassten Umweltdaten zum TTS (CE) LNS, der diese an ein Datacake Dashboard zur Visualisierung weiterleitet. Sie finden dieses Dashboard über diesen Public Link.

Der Oxocard Connect MQTT-Client „subscribed“ die Upload-Messages des SensorHubs, filtert die Batteriekapazität aus der umfangreichen Upload-Message und bringt sie auf dem Display zur Anzeige. Die Aktualisierung des Displayinhalts erfolgt mit jeder neuen Upload-Message vom SensorHub.

Ein Screenshot des Consolen Outputs zeigt die empfangene Payload vor und nach der Filterung und die Extraktion der Daten. Auf dem Display wird aber nur die aktuelle Batteriekapazität angezeigt.

Consolen Output

2023-12-01/CK

ESP32Forth – eine alternative Programmierumgebung

Für den ESP32 steht mit MicroPython eine interaktive Programmiersprache zur Verfügung. Das ist aber nicht die einzige Möglichkeit der interaktiven Programmierung, denn mit ESP32Forth steht auch eine Portierung von eForth (Arduino and eForth) für den ESP32 zur Verfügung.

Wenn Ihnen Forth unbekannt sein sollte, dann erlätert ChatGPT Ihnen FORTH wie folgt:

Die Programmiersprache FORTH ist eine ungewöhnliche und spezielle Programmiersprache, die sich von C++ und MicroPython in vielerlei Hinsicht unterscheidet, insbesondere beim Einsatz auf Mikrocontrollern. Hier sind einige der wichtigsten Eigenschaften und Unterschiede:

Eigenschaften von FORTH:

  1. Stack-basierte Sprache: FORTH verwendet einen Stapelspeicher (Stack) als zentrales Konzept. Operationen und Daten werden auf den Stapel verschoben und von dort verarbeitet. Dies macht FORTH sehr leichtgewichtig und effizient.
  2. Interaktivität: FORTH ist eine interaktive Programmiersprache. Sie können Code direkt in die FORTH-Umgebung eingeben und ausführen, was sie ideal für den schnellen Prototypenbau und das Debugging macht.
  3. Minimalistische Syntax: Die Syntax von FORTH ist extrem einfach, bestehend aus Wörtern (FORTH-Befehlen), die von Leerzeichen getrennt sind. Dies führt zu sehr kompaktem Code.
  4. Keine strikte Typisierung: FORTH ist schwach typisiert und flexibel. Dies kann sowohl ein Vor- als auch ein Nachteil sein, je nach Anwendungsfall.
  5. Direkter Hardwarezugriff: FORTH ermöglicht einen sehr direkten Zugriff auf die Hardware, was in eingebetteten Systemen nützlich sein kann.

Unterschiede zu C++:

  1. Sprachparadigma: C++ ist eine objektorientierte Programmiersprache, während FORTH als stapelbasierte Programmiersprache betrachtet wird. Dies bedeutet, dass die Herangehensweise an die Programmierung grundlegend unterschiedlich ist.
  2. Komplexität: C++ ist eine umfangreiche und komplexe Sprache mit einer Vielzahl von Funktionen und Bibliotheken. FORTH hingegen ist extrem minimalistisch und erfordert oft mehr Zeilen Code, um ähnliche Aufgaben zu erledigen.
  3. Typisierung: C++ ist stark typisiert, was bedeutet, dass Datentypen streng überprüft werden. FORTH ist schwach typisiert und erlaubt mehr Flexibilität bei der Verwendung von Daten.

Unterschiede zu MicroPython:

  1. Syntax: MicroPython ist eine Python-Variante für Mikrocontroller und verwendet eine Python-ähnliche Syntax, während FORTH seine eigene einzigartige Syntax hat.
  2. Abstraktionsebene: MicroPython bietet eine höhere Abstraktionsebene und mehr Konventionalität im Vergleich zu FORTH. Das macht MicroPython oft einfacher zu erlernen und zu verwenden.
  3. Gemeinschaft und Bibliotheken: MicroPython hat eine aktive Gemeinschaft und eine breite Palette von Bibliotheken und Modulen, die speziell für Mikrocontroller entwickelt wurden. FORTH hat weniger Ressourcen und Unterstützung in dieser Hinsicht.
  4. Entwicklungsumgebungen: MicroPython wird oft mit modernen integrierten Entwicklungsumgebungen (IDEs) verwendet, die die Entwicklung und das Debugging erleichtern. FORTH erfordert häufig eine tiefere Einarbeitung in die Arbeitsweise des Stapels und der FORTH-Umgebung.

Insgesamt hängt die Wahl zwischen FORTH, C++ und MicroPython für Mikrocontroller-Anwendungen von den spezifischen Anforderungen Ihres Projekts, Ihrer Programmierpräferenz und Ihrer Erfahrung ab. FORTH ist eine leistungsfähige, aber unkonventionelle Option, die für bestimmte Anwendungen geeignet sein kann, während C++ und MicroPython aufgrund ihrer weitverbreiteten Akzeptanz und ihrer Entwicklungsunterstützung oft bevorzugt werden.

OpenAI. (2023). ChatGPT (August 3 Version) [Large language model]. https://chat.openai.com

Wenn Sie sich mit ESP32Forth auseinandersetzen wollen, dann finden Sie die notwendigen Informationen von Installation bis hin zur Anwendung unter https://esp32.forth2020.org/ oder https://www.facebook.com/groups/esp32forth/

Ich möchte Ihnen hier zwei Beispiele zur Arbeit mit ESP32Forth zeigen, die vielleicht helfen Neugier zu wecken.

Benchmarks sind eine beliebte Vergleichsmöglichkeit für Hard- und Software. Um einen Eindruck von der Performance von ESP32Forth auf einem ESP32 zu bekommen, habe ich den DDBench(mark) herangezogen (https://theultimatebenchmark.org/).

Das Resultat des Benchmarks sind eine Laufzeit von 5.5 Sekunden.

Vergleichen Sie das Resultat mit den unter https://theultimatebenchmark.org/ veröffentlichten Daten, dann können Sie sich ein Bild von der Leistungsfähigkeit dieser Hard- und Softwarekombination machen.

Im Blogpost ESP32 ADC & DAC hatte ich die Performance des DAC-ADC-Subsystems des ESP32 untersucht.

Wenige Zeilen ESP32Forth Code ermöglichen die Ansteuerung eines DACs und das Erfassen dessen Ausgangsspannung durch einen Kanal des ADC. GPIO25 und GPIO33 werden hierzu miteinander verbunden.

( Test ESP32-DAC-ADC-Subsystem w/ ESP32Forth )

25 CONSTANT DAC1 \ GPIO25
33 CONSTANT ADC1_CH5 \ GPIO33

: wait100ms 100 ms ;
: readADC1_CH5 ADC1_CH5 adc . ;
: readADC readADC1_CH5 ;
: writeDAC1 DAC1 swap dacWrite ; ( 0-255 -- )
: test dup writeDAC1 wait100ms readADC . cr ; ( 0-255 -- )
: testloop 255 for i test next ;

Die seriellen Ausgaben habe ich geloggt, um diese für die folgenden Grafiken aufzubereiten.

Das Verhalten des analogen Subsystems entspricht den Erwartungen und ist ohne Anpassungen nur bedingt einsatzfähig.

Der einfache Test mit dieser interaktiven Programmierumgebungen wird aber deutlich.


2023-09-14/CK

IoT Projects for Makers – Update

The title „IoT Projects for Makers“ was published at the end of June, and the first update follows.

Link: https://www.amazon.de/dp/B0C8VCF4DF

Via Aliexpress, I found a Modbus sensor (and many comparable devices) for temperature and humidity measurement at low prices. Modbus RTU via RS-485 is still a common interface in industrial applications. This sensor uses a Sensirion SHTC3 sensor, which allows precise results.

This industrial sensor for temperature and humidity with Modbus RTU via RS-485 has been added to the sensors considered so far.

WiFi is utilized to connect to a router that provides Internet access.

The message containing the measuring results is sent to the Pushover server, which forwards it to the corresponding end devices, an Android mobile phone here.

In the application here, a message with measured values is sent every 15 minutes. This is first an arbitrary assumption and can also be state-based.


2023-07-19/CK

Messung der Wassertemperatur

Weil ich mit den Angaben zur Wassertemperatur der Ostsee während eines zurückliegenden Ferienaufenthaltes nicht so recht zufrieden war, hatte ich mit M5Stack-Komponenten und einem abgesetzten Temperatursensor ein Thermometer aufgebaut und in einem Blogpost vorgestellt. Mit dem abgesetzten DS18B20-Temperatursensor habe ich die Wassertemperatur in einem Meter Tiefe gemessen.

Nun rücken die Ferien wieder näher und die Meldung vom BSH zeigt Ende Mai immer noch sehr kühles Wasser an.

Um der Entwicklung der Wassertemperatur zu folgen und vor größeren Überraschungen gefeit zu sein, habe ich das vorgestellte Thermometer etwas erweitert.

Wegen des etwas größeren Displays habe ich den #M5StickC durch einen M5StickC+ ersetzt und verwende einen M5StickC 18650C, um die Batteriekapazität zu vergrößern. Hinzu kommt, dass das Thermometer wesentlich besser gehandhabt werde kann.

Damit ich die Messwerte auf meinem Mobilphone zur Verfügung habe, nutze ich es als mobilen Hotspot und sende die Messwerte vom M5StickC+ über WiFi an das Mobilphone, welches dann die Daten an den Pushover Server sendet. Von da werden die Daten dann an die gewählten Endgeräte verteilt.

Die folgenden beiden Bilder zeigen die Messeinrichtung und eine über Pushover versendete Message auf dem Mobilphone. Auf GitHub ist das betreffende Programm zu finden.

Ich werde mit dieser Einrichtung die Wassertemperatur nicht beeinflussen, kann sie aber schriftlich festhalten. Und wenn es so kalt bleibt, dann kann ich mein Heldentum dokumentieren.


Die Messungen funktionieren, wie erwartet. Ich fasse die einzelnen, über Pushover gesendeten Messwerte in einer Tabelle zusammen und veranschauliche die Werte in der folgenden Grafik.

Vom 3.06. bis zum 9.06. waren die Wassertemperaturen im Erwartungsbereich. Am 9.06. drehte dann der Wind nach Ost und das bedeutet hier einen deutlichen Abschwung der Wassertemperatur. Die Temperaturen zwischen 14 °C und 15 °C blieben dann auch bis zum Drehen des Windes am 14.06. auf NNO, was eine leichten Temperaturanstieg zu Folge hatte.

Damit ist die Messreihe abgeschlossen und die Art der Messung bestätigt. Bei Interesse an der Lösung für einen Nachbau oder Verbesserungen reicht ein Kommentar zu diesem Post.


Bei unserem Aufenthalt im August/September 2023 führe ich die Tests weiter. Bereits im Juni konnte die Messeinrichtung ihre Bewährungsprüfung erfolgreich absolvieren.

Wenn eine feste Installation für eine solche Messeinrichtung möglich ist, kann diese solar-gepuffert vollkommen autonom betrieben werden. Lesen Sie hierzu den Beitrag unter https://ckarduino.blog/2022/03/01/rak-wisblock/.


2023-09-17/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