Archiv für den Monat August 2019

Maixduino – Arduino-kompatibel auf Basis RISC-V

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.

File -> Preferences: Eintrag der URL http://dl.sipeed.com/MAIX/Maixduino/package_Maixduino_k210_index.json unter Additional Boards Manager URLs. Einträge durch Komma separieren.

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:

CoreMark 1.0 ist ein vom EEMBC empfohlener Test und zudem an die Arduino-Umgebung angepasst ( https://www.eembc.org/coremark/ ). Beide Benchmarks stehen unter https://github.com/ckuehnel/newArduino/tree/master/Maixduino zum Download zur Verfügung.

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.

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.