Der M5StickC hat einen internen LiPo-Akku mit einer Kapazität von 80 mAh, der dem mobilen Einsatz dann doch gewisse Grenzen setzt. Bei meinen Experimenten zur Messung der Wassertemperatur hatte ich das zu berücksichtigen.
Kurz vor dem Jahresende 2019 kam Post aus Shenzen mit dem 18650C HAT, einem Batterieteil für den M5SticKC mit integriertem wiederaufladbaren LiPo-Akku 18650 mit einer Kapazität von 2000 mAh.
Das Batterieteil ist mit den Steckern der HAT-Serie ausgestattet, mit denen eine zuverlässige Verbindung zum M5StickC hergestellt werden kann. Die Unterseite ist mit einer USB-Ladeschnittstelle ausgestattet. Der USB-C-Anschluss des Batterieteils wird nur als Ladeschnittstelle verwendet und hat keine UART-Funktion. Auf der Rückseite des Batterieteils befinden sich zahlreiche Befestigungslöcher, die eine einfache Befestigung des gesamten Devices ermöglicht.
Handheld-Thermometer
Ich habe mit dem ENV Hat und dem M5StickC ein Handheld-Thermometer aufgebaut.
Über den BMP280 im ENV Hat werden Temperatur, relative Luftfeuchte und barometrischer Druck gemessen und im Sekundentakt auf dem M5StickC Display zur Anzeige gebracht.
Ich werde die Laufzeit einer Batterieladung in der Folge testen und hier berichten.
Überwachungsmassnahmen für den Batteriezustand sind nicht implementiert.
Damit sich eine neue Befehlssatzarchitektur für Controller oder Prozessoren durchsetzt, ist viel Aufwand erforderlich. Hardware-Hersteller müssen überzeugt, Entwicklungswerkzeuge müssen angepasst und Entwickler eingearbeitet werden. Entsprechend selten kommt ein neuer Befehlssatz auf den Markt. Aber RISC-V hat die Anfangshürden genommen und ist auf dem Weg zum Erfolg.
Unter dem Titel „Neustart mit RISC-V“ ist eine Beitrag zu RISC-V in der Zeitschrift Design & Elektronik Heft 1/2020 angekündigt.
Um die Performance des Maixduino, einem Arduino-kompatiblen Kendryte K210 Dual-Core 64-bit RISC-V Prozessor (RV64IMAFDC), gegenüber anderen Arduinos resp. Arduino-kompatiblen Mikrocontrollern zu vergleichen, habe ich zwei Benchmarks laufen lassen:
Sieve of Eratosthenes
CoreMark
Den ersten Benchmark habe ich zu Vergleichszwecken verwendet, da ich in der Vergangenheit damit bereits zahlreiche Tests vorgenommen habe.
Die Resultate der beiden Benchmarks zeigen die folgenden Abbildungen. Verglichen wurden ein Arduino Due (AT91SAM3X8E@84 MHz), ein ESPduino-32 (ESP-Wroom-32@80 MHz) und ein Maixduino (Kendryte K210 RISC-V@400 MHz).
Wie die Elektronik Praxis berichtet zieht die RISC-V Foundation wegen des andauernden Handelsstreits zwischen den USA und China aus den USA in die Schweiz.
Die RISC-V Foundation und die ETH mit dem Institut für Integrierte Systeme – speziell die Abteilung Digitale Schaltungen und Systeme und Prof. Luca Benini, die ein wichtiger Entwicklungsstandort für RISC-V-Prozessoren sind, kommen nun auch örtlich enger zueinander.
Die an der ETH entwickelte PULP-Prozessorplattform (PULP: Parallel Ultra Low Power) wurde als Cluster konzipiert – mit zahlreichen energieeffizienten RISC-V-Kernen. Details zu PULP sind hier zu finden,
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.
Mit dem Teensy 4.0 steht ein kompaktes, aber dennoch handliches Boards mit NXP’s i.MX RT1062 (Arm Cortex-M7), einem sogenannten Crossover Processor (Kombination aus Mikrocontroller & Application Processor) , zur Evaluation bereit.
Die Ausstattungsliste im Datenblatt liest sich wie der Wunschzettel eines Embedded Entwicklers in der Vor-Weihnachtszeit. Ein Blick ins Datenblatt (https://www.nxp.com/part/MIMXRT1062CVL5A ) zeigt das.
Paul Stoffregen hat dafür gesorgt, dass der Teensy 4.0 auch als Arduino-kompatibler Mikrocontroller gehandhabt werden kann ( https://www.pjrc.com/teensy-4-0/ ) und somit der derzeit wohl leistungsfähigste Arduino zu einem sehr moderaten Preis von USD 19.95 zur Verfügung steht.
Verglichen wurden eine Arduino Due (AT91SAM3X8E@ 84 MHz), eine ESPduino-32 (ESP-Wroom-32@80 MHz), ein Maixduino (Kendryte K210 RISC-V@400 MHz) und ein Teensy 4.0 ( i.MX RT1062@600 MHz). Hier sind die Resultate der beiden Benchmarks:
Benchmarkergebnisse Sieve of Erastothenes
Benchmarkergebnisse Coremark 1.0
Wie die beiden Benchmarks deutlich zeigen, hat Teensy 4.0 mit seinem mit 600 MHz getakteten i.MX RT1062 die Performance des Maixduino wesentlich überboten und kann als derzeit leistungsfähigster Arduino-kompatibler Mikrocontroller (oder eben als Crossover Processor) angesehen werden.
Das ganze $23.90 kostende Sipeed Maixduino Kit for RISC-V AI + IoT ist seit geraume Zeit im Haus und hat auf die Inbetriebnahme gewartet. Ziel für mich war, das Board in der Arduino-Umgebung in Betrieb zu nehmen, um einen direkten Vergleich zu anderen Arduinos zu bekommen.
Zum Lieferumfang des Maixduino Kits gehören die folgenden Komponenten:
Maixduino Board (rechts)
2.4 inch TFT Display (Mitte)
OV2640 camera module (links)
Komponenten des Maixduino Kits
Die Frontseite des Maixduino Boards zeigt an Hand der Buchsenleisten Kompatibilität zum Arduino-Formfaktor und die Rückseite zeigt in einem Blockdiagramm die zur Verfügung stehenden Ressourcen.
Neben der eigentlichen Inbetriebnahme in der Arduino IDE hat mich vor allem die zu erwartende Performance interessiert.
Um das Maixduino Board der Arduino IDE bekannt zu machen ist der folgende Eintrag in den Preferences vorzunehmen.
Im Boards Manager dann Maixduino (K210) selektieren und die folgenden Board Settings einstellen:
Board: Maixduino
Burn Tool Firmware: open-ec
Burn Baudrate: 1.5 M
Port: Serial port
Programmer: k-flash
Die Programmer Software k-flash wird vom Norton SONAR entfernt. Norton muss hier entsprechend eingerichtet resp. „entschärft“ werden. Die komplette Installation ist unter https://maixduino.sipeed.com/en/get_started/install.html beschrieben.
Um die Performance des Maixduino gegenüber anderen Arduinos resp. Arduino-kompatiblen Mikrocontrollern zu vergleichen, habe ich zwei Benchmarks laufen lassen:
Sieve of Eratosthenes
CoreMark
Den ersten Benchmark habe ich zu Vergleichszwecken verwendet, da ich in der Vergangenheit damit bereits zahlreiche Tests vorgenommen habe:
Hier nun die Resultate der beiden Benchmarks. Verglichen wurden eine Arduino Due (AT91SAM3X8E@ 84 MHz), eine ESPduino-32 (ESP-Wroom-32@80 MHz) und ein Maixduino (Kendryte K210 RISC-V@400 MHz):
Benchmarkergebnisse Sieve of Erastothenes
Benchmarkergebnisse Coremark 1.0
Gegenüber dem Arduino Due hatte der ESP-32 bereits eine deutliche Verbesserung der Performance gezeigt, die aber vom Maixduino noch wesentlich überboten wird. Damit dürfte der Maixduino derzeit der leistungsfähigste Arduino-kompatible Mikrocontroller sein.
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:
Komponente
Preis
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.
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-Sheetabrufbar.
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
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.
Vor wenigen Tagen war nun das über Mouser bestellte und von CrowdSupply gelieferte HiFive1 Rev. B Board im Postkasten.
HiFive1 Rev. B
Das HiFive1 Rev, B Board weist die folgenden Features auf:
MCU – SiFive Freedom E310-G0002 32-Bit RV32IMAC processor @ bis zu 320+ MHz (1.61 DMIPS/MHz)
Storage – 32 MBit SPI Flash
Connectivity – ESP32-SOLO-1 WiFi & Bluetooth module
I/Os (19 x Digital I/O Pins, 19 x external Interrupt Pins, 1 x external Wakeup Pin, 9 x PWM Pins, 1/3 SPI Controllers/HW CS Pins)
I/O Voltages – 3.3 V
USB – 1 x micro USB Port für Power, Programming und Debugging (via Segger J-Link)
Power Supply – 5 V via USB oder 7 – 12V via DC Jack; Operating Voltage: 3.3 V und 1.8 V
Dimensions – 68 mm x 51 mm
Gewicht– 22 g
Zur Programmierung kann das Freedom-E SDK herangezogen werden, was allerdings einen Linux-Rechner erfordert. Alle Informationen hierzu sind unter https://github.com/sifive/freedom-e-sdk zu finden.
Die beim HiFive1 vorhanden Unterstützung der Arduino IDE wurde nicht weitergeführt.
Das Eclipse-basierte, wesentlich komplexere Freedom Studio läuft auch auf Windows.
Eine erste Idee von der Performance des HiFive1 Rev. B bekommt man über den Dhrystone Benchmark.
Resultat Dhrystone Benchmark (Out of the Box) (Das Ergebnis ist noch falsch – Bild wird ersetzt)
Mit diesem Ergebnis liegt der HiFive1 Rev. B in der Nähe von Cortex-M3/M4/A5.