Der M5StickC PLUS wird von ESP32-PICO-D4 Dual-Core-Prozessor angetrieben und hat somit Wi-Fi und Bluetooth mit an Board. Er ist ein Upgrade des ursprünglichen M5StickC nur mit einem größeren 1,14 Zoll LCD-Bildschirm (Auflösung von 135 * 240) und höherer Akkukapazität.
Dieses daumengroße Open-Source-IoT-Entwicklungsboard ermöglicht es „winzige“ Ideen zu verwirklichen und ist dabei auch noch Portabel da er mit einem 120 mAh Lithium-Polymer-Akku ausgestattet ist. Das Power Managment (PMU) wird geregelt mit dem AXP192 Chip.
Im kompakte Gehäuse sind für diverse Projekte auch noch folgende Hardware-Ressourcen untergebracht:
- IMU MPU-6886: Ein 6-Achsen-Bewegungssensor (Gyroskop und Beschleunigungsmesser) GPIO 21,22
- Mikrofon: SPM-1423 für Audioeingaben (GPIO 34,0)
- RTC BM8563: Echtzeituhr für zeitkritische Anwendungen.
- Infrarotsender: Für Fernsteuerungsanwendungen (GPIO 9)
- Tasten: Zwei benutzerdefinierte Tasten und eine Powertaste
- LED: Eine rote LED für Statusanzeigen (GPIO 10)
- Summer: Für akustische Signale (GPIO 2)
- einige extern erreichbare GPIO Pins
- Anschluss für 4-polige Stecker mit dem von Seeed Studio entwickelten Grove Standard mit VCC, GND und zwei Datenleitungen (GPIO 32,33) z. B. für analoge, digitale, UART- oder I²C-Signale

Vorbereitung in der Entwicklungsumgebung Arduino IDE 2.x:
dann Board Library M5Stack installieren, danach M5StickCPlus

Einige Tutorials von m5-docs getestet.
Erster Test: Text auf Display:
#include <M5StickCPlus.h>
void setup() {
M5.begin();
M5.Lcd.setTextColor(RED, WHITE);
M5.Lcd.println("Hallo, Prilchen!!");
}
void loop() {
}
Beispiel: QR Code
#include <M5StickCPlus.h>
void setup() {
M5.begin();
M5.Lcd.qrcode("https://prilchen.de", 0, 0,135);
}
void loop() {
}

oder das ein Tasten Spiel Flappy:


Beispiel Bildschirmtest:

Beispiel WLAN Accesspoint Finder:

Beispiel Würfel neue Werte durch Schütteln:

Beispiel: Bewegungssensor auslesen:
Mit diesem Sketch kann man den internen MPU6886 (IMU-Sensor) des M5StickC PLUS testen.
Der IMU-Sensor enthält ein Gyroskop und einen Beschleunigungssensor, mit dem du Bewegungen und Neigungen erfassen kannst.
#include <M5StickCPlus.h> // M5StickC PLUS Bibliothek
float accX, accY, accZ; // Beschleunigung
float gyroX, gyroY, gyroZ; // Gyroskop
void setup() {
M5.begin(); // M5StickC PLUS starten
M5.Lcd.setRotation(3); // Display richtig ausrichten
M5.Lcd.fillScreen(BLACK); // Bildschirm leeren
M5.IMU.Init(); // MPU6886 initialisieren
Serial.begin(115200);
}
void loop() {
// Sensorwerte auslesen
M5.IMU.getAccelData(&accX, &accY, &accZ);
M5.IMU.getGyroData(&gyroX, &gyroY, &gyroZ);
// Serieller Monitor
Serial.print("Acc X: "); Serial.print(accX);
Serial.print(" | Y: "); Serial.print(accY);
Serial.print(" | Z: "); Serial.println(accZ);
Serial.print("Gyro X: "); Serial.print(gyroX);
Serial.print(" | Y: "); Serial.print(gyroY);
Serial.print(" | Z: "); Serial.println(gyroZ);
// Anzeige auf dem Display
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(10, 10);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.println("MPU6886 Test");
M5.Lcd.setCursor(10, 40);
M5.Lcd.print("Acc X: "); M5.Lcd.println(accX, 2);
M5.Lcd.print("Acc Y: "); M5.Lcd.println(accY, 2);
M5.Lcd.print("Acc Z: "); M5.Lcd.println(accZ, 2);
M5.Lcd.setCursor(10, 100);
M5.Lcd.print("Gyro X: "); M5.Lcd.println(gyroX, 2);
M5.Lcd.print("Gyro Y: "); M5.Lcd.println(gyroY, 2);
M5.Lcd.print("Gyro Z: "); M5.Lcd.println(gyroZ, 2);
delay(500); // Kurze Pause
}

Beispiel Helligkeit messen mit LDR über GPIO Anschlüsse:
- Verbinde ein Ende des LDR mit 3,3V.
- Verbinde das andere Ende des LDR mit einem Analogpin 26 des M5StickC Plus und an einem Ende des 1k Ohm Widerstands.
- Verbinde das andere Ende des 1k Ohm Widerstands mit GND.

#include <M5StickCPlus.h> // M5StickC Plus Bibliothek
const int ldrPin = 26; // ADC-Pin für den LDR
void setup() {
M5.begin(); // M5StickC Plus starten
M5.Lcd.setRotation(3); // Display richtig ausrichten
M5.Lcd.fillScreen(BLACK); // Hintergrund schwarz setzen
Serial.begin(115200);
}
void loop() {
int sensorWert = analogRead(ldrPin); // Lese den LDR-Wert (0-4095)
float spannung = sensorWert * (3.3 / 4095.0); // Umrechnung auf 3,3V Skala
// Bildschirm aktualisieren
M5.Lcd.fillScreen(BLACK); // Lösche vorherige Werte
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(10, 10);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.print("LDR-Wert: ");
M5.Lcd.println(sensorWert);
M5.Lcd.setCursor(10, 40);
M5.Lcd.print("Spannung: ");
M5.Lcd.print(spannung, 2);
M5.Lcd.println("V");
// Balkendiagramm für Helligkeit (Skala 0-100%)
int helligkeit = map(sensorWert, 0, 4095, 0, 100);
M5.Lcd.setCursor(10, 70);
M5.Lcd.print("Helligkeit: ");
M5.Lcd.print(helligkeit);
M5.Lcd.println("%");
// Zeichne einen Balken als visuelle Anzeige
int balkenLaenge = map(helligkeit, 0, 100, 0, 200);
M5.Lcd.fillRect(10, 100, balkenLaenge, 20, GREEN);
delay(500); // Kurze Pause
}
Weitere Details und Quellen:
https://docs.m5stack.com/en/core/m5stickc_plus
https://docs.m5stack.com/en/quick_start/m5stickc_plus/arduino
https://docs.m5stack.com/en/arduino/arduino_development
Online Entwicklungsumgebung:
https://flow.m5stack.com/