M5StickC – Ein ESP32 Zwerg mit nützlichen onboard Funktionen in einem coolen Gehäuse

In diesem Beitrag möchte ich dir den Microcontroller M5StickC vorstellen. Dieser kleine Microcontroller kommt in einem Gehäuse daher und verfügt über diverse Schnittstellen und Sensoren (dazu aber später mehr).

Bezug

Den M5StickC erhältst du im offiziellen Shop unter https://m5stack.com/products/stick-c  für ca. 9,9$ (8,4€ , stand 08.08.2020) aber auch in diversen Shops dabei gehen die Preise sehr weit auseinander. 

Shop Preis
ebay.de 21,39€
amazon.de 28,79€
aliexpress.com 16,89$
banggood.com 16,99$

Bei den beiden Portalen aliexpress.com & banggood.com kommen ggf. noch sehr hohe Versandkosten und eine lange Lieferdauer hinzu.

Odysee der Bestellung

Das mir vorliegende Modell habe ich über aliexpress.com für besagten Preis bestellt und nach ca. 3 Wochen erhalten. Meine erste Bestellung zu diesem Microcontroller habe ich im November 2019 auf der Plattform ebay.de aufgegeben jedoch habe ich das Paket nie erhalten somit habe noch bei 2 weiteren Verkäufern versucht diesen geliefert zu bekommen. Im April 2020 habe ich dann über aliexpress.com die Bestellung aufgegeben und konnte mich schon nach 3 Wochen freuen das Gerät endlich in den Händen zu halten.

Lieferumfang

Den M5StickC erhältst du einzeln inkl. USB Typ C Datenkabel oder aber auch als Set mit einem Armband und einpaar Adapter. Ich habe mir das Set geholt und möchte dir dieses in diesem Beitrag etwas näher vorstellen.

Technische Daten des M5StickC

  • CPU – 240 MHz dual core, 600 DMIPS
  • Speicher
    • SRAM – 520 KB,
    • Flash Memory – 4MB
  • Schnittstellen
    • USB Type C,
    • 1x Grove (I2C, I/O, UART)
    • 1x Infrarot
  • LCD Display
    • 0,96 Zoll, 80×160 TFT LCD Typ „ST7735S“
  • Akku – 95 mAh mit 3.7V
  • Antenne – 2.4G, 3D Antenne
  • bevorzugte Umgebungstemperatur – 0°C bis +40°C
  • Gewicht
    • Netto (ohne Gehäuse) – 15,1 g
    • Brutto (inkl. Gehäuse) – 33g
  • Abmaße (L x B x H) – 48,2mm x 25,5mm x 13,7mm

Aufbau des M5StickC

Der M5StickC ist in einem einfachen Plastikgehäuse (PC – Polycarbonate) untergebracht. Auf den beiden langen Seiten ist jeweils ein Taster untergebracht welcher frei Programmiert werden kann. In den beiden kurzen Seiten sind die Schnittstellen (USB-Typ C, Grove) sowie eine im Raster von 2,54mm, 8 polige Buchsenleiste für Breadboardkabel verbaut. Eine kurze Beschreibung zum Microcontroller selber findest du auf der Rückseite dort ist auch die Pinbelegung der Buchsenleiste sowie die GPIO Pins der einzelnen Sensoren vermerkt.

Aufbau des Microcontrollers "M5StickC"
Aufbau des Microcontrollers „M5StickC“

verbaute Sensoren

In dem M5StickC sind folgende sehr nützliche Sensoren verbaut:

  • MPU6886 – 6 Achsen Lagesensor
  • SPM1423 – digitales Mikrofon
  • BM8563 – Real Time Clock

Des Weiteren ist verbaut eine kleine rote LED sowie 2 Buttons welche frei programmiert werden können.

Schnittstellen

Der M5StickC verfügt wie bereits erwähnt über

  • USB Typ C,
  • Grove,
  • Buchsenleiste,
  • Bluethoot Low Energy,
  • Infrarot

Pinout der Buchsenleiste des M5StickC

Der Microcontroller verfügt über eine 8 polige Buchsenleiste über welche man diverse Pins abgreifen und für eigene Schaltungen verwenden kann.

Pin Beschreibung
GND  Ground , Minus Pol
5V > 5V , Ausgangsspannung
G26 GPIO 26
G36 GPIO 36
G0 GPIO 0
BAT Verbindung zur internen Lithium Ionen Batterie
3V3 3,3V , Ausgangsspannung
5V < 5V , Eingangsspannung

Defaultprogramm auf dem M5StickC

Der M5StickC wird mit einem kleinen Programm ausgeliefert welches einige Funktionen auf dem Display anzeigt. 

Vorstellung M5StickC Defaultsketch & Sensoren
Dieses Video ansehen auf YouTube.

 

Programmieren des M5StickC mit der Arduino IDE

Wer meinen Blog schon länger verfolgt wird mitbekommen haben das ich die Arduino IDE bevorzuge. Dieses liegt zum einen daran das die Programmierung in C/C++ mit dem „Framework“ für Microcontroller recht einfach ist und zum anderen diese nicht überladen ist es genau auf das Minimum reduziert was man zum programmieren braucht.

Damit du den M5StickC mit der Arduino IDE programmieren kannst musst du zunächst den Treiber für den ESP32 installieren. Damit du dieses wiederum machen kannst musst du unter den Voreinstellungen folgende zusätzliche Boardverwalter URL hinzufügen:

https://dl.espressif.com/dl/package_esp32_index.json
installieren der ESP Bibliothek für den M5StickC in der Arduino IDE
Dieses Video ansehen auf YouTube.

 

Nachdem nun die ESP Bibliothek bzw. das ESP Paket installiert ist können wir mit der Programmierung beginnen.

Für die Programmierung der vorhandenen Sensoren & Aktoren benötigst du die Pinbelegung.
Auf der Rückseite des M5StickC findest du eine kleine Infografik mit den wichtigsten Pinbelegungen.

Rückseite mit Infografik des M5StickC
Rückseite mit Infografik des M5StickC

LED mit dem Taster „M5“ aufleuchten lassen

Zunächst wollen wir ein ganz einfaches Programm schreiben und die interne, rote LED mit dem Taster „M5“ (auf der Front des Microcontrollers) steuern. 

Die LED ist am GPIO G10 und der Taster am GPIO G37 angeschlossen.

Sketch

#include <Bounce2.h>

//rote LED am GPIO 10 angeschlossen
#define led G10

//Taster mit der Auschrift "M5" am GPIO 37 angeschlossen
#define btnGr G37

Bounce btnBounce = Bounce(btnGr, 50);

void setup() {
  //definieren das der GPIO als Ausgang dient
  pinMode(led, OUTPUT);
  //definieren daas der GPIO 37 für den Taster über
  //einen internen Pull UP Widerstand verläuft und
  //als Eingang dient  
  pinMode(btnGr, INPUT_PULLUP);
}

void loop() {
  //aktualisieren des Tasters
  btnBounce.update();

  //Wenn der Taster losgelassen wird dann...
  if(btnBounce.fell()){
    //LED deaktivieren
    digitalWrite(led, LOW);
  //Wenn der Taster gedrückt wird dann...  
  } else if(btnBounce.rose()){
    //LED aktivieren
    digitalWrite(led, HIGH);
  }

  //kleine Pause von 150ms.
  delay(150);
}

Konsolenausgabe der Arduino IDE

Der Sketch verwendet 207705 Bytes (15%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 15228 Bytes (4%) des dynamischen Speichers, 312452 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.
esptool.py v2.6
Serial port COM17
Connecting....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None
MAC: d8:a0:1d:57:3c:30
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 1500000
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 4096.0 kbit/s)...
Hash of data verified.
Compressed 15856 bytes to 10276...
Wrote 15856 bytes (10276 compressed) at 0x00001000 in 0.1 seconds (effective 998.8 kbit/s)...
Hash of data verified.
Compressed 207824 bytes to 105392...
Wrote 207824 bytes (105392 compressed) at 0x00010000 in 1.6 seconds (effective 1028.2 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 1536.0 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Video

 

Fazit & Ausblick

Dieser kleine Microcontroller bietet schon einige nette Sensoren & Aktoren und mit der vorhandenen Grove Schnittstelle kann man noch weitere elektrische Bauteile anschließen. Da ich bereits einige Shields / Module mit einer Grove Schnittstelle besitze werde ich dir zum M5StickC einige kleine Projekte präsentieren welche du recht günstig und schnell nachprogrammieren kannst.

7 Gedanken zu „M5StickC – Ein ESP32 Zwerg mit nützlichen onboard Funktionen in einem coolen Gehäuse

  • 17. August 2020 um 18:43
    Permalink

    Bin per Zufall auf Deinen Blog gestoßen. Als Informatiker and DIY Liebhaber gefällt mir der Inhalt.

    Werde mal ein wenig herumstöbern.

    LG Bernhard

    Antwort
  • Pingback:Ausgeben der Temperaturwerte des DS18B20 Sensors auf dem M5StickC - Technik Blog

  • Pingback:eine digitale Wasserwaage mit dem M5StickC - Technik Blog

  • 5. Oktober 2020 um 19:47
    Permalink

    Cooles Teil, Leider gerade nicht lieferbar ( nur teuer)

    Antwort
    • 7. Oktober 2020 um 07:37
      Permalink

      Hi,

      du findest auch gute Angebote auf aliexpress.com.

      Gruß,

      Stefan

      Antwort
  • 15. November 2020 um 16:14
    Permalink

    Hallo,

    wo kann man die flash-size vergrössern bei M5StackC (max. 1310720 bytes).
    Nutze platformio mit vscode. Da müsste doch in der platformio.ini irgend ein flag gesetzt werden können?

    habe folgende Fehlermeldung:
    Error: The program size (1537363 bytes) is greater than maximum allowed (1310720 bytes)
    Flash: [======*** [checkprogsize] Explicit exit, status 1
    ====] 117.3% (used 1537363 bytes from 1310720 bytes)

    Danke & Gruss
    Aleks

    Antwort
    • 15. November 2020 um 19:03
      Permalink

      Hi,
      die Meldung besagt das dein Programm zu groß für den Speicher auf dem Microcontroller ist. D.h. du musst wohl leider deinen Code etwas optimieren so das dieser auf den Microcontroller geschrieben werden kann.

      Gruß,

      Stefan Draeger

      Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.