In diesem Beitrag möchte ich dir den Mikrocontroller M5StickC vorstellen.
Dieser kleine Mikrocontroller 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.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
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 Mikrocontroller 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 ein paar 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 – 4 MB
- 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,2 mm x 25,5 mm x 13,7 mm
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,54 mm, 8 polige Buchsenleiste für Breadboardkabel verbaut. Eine kurze Beschreibung zum Mikrocontroller selber findest du auf der Rückseite dort ist auch die Pinbelegung der Buchsenleiste sowie die GPIO Pins der einzelnen Sensoren vermerkt.
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 Mikrocontroller 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.
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 Mikrocontroller 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
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.
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 Mikrocontrollers) 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 Mikrocontroller 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.
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
Cooles Teil, Leider gerade nicht lieferbar ( nur teuer)
Hi,
du findest auch gute Angebote auf aliexpress.com.
Gruß,
Stefan
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
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