M5StickC PLUS ist ein ESP32 mit 1 Zoll Display

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/


, ,