M5Stack BugC #1 – Programmieren und erster Test

In diesem Beitrag möchte ich dir in einem ersten Test zeigen wie du den M5Stack BugC Programmieren kannst.

M5Stack BugC - programmieren in M5Flow

Was ist der M5Stack BugC?

Der M5Stack BugC ist ein kleiner Roboter welcher über folgende Features verfügt:

  • an jeder Seite über einen Motor,
  • vorne zwei RGB LEDs,
  • unten eine LiPo Batterie vom Typ ICR16340 (3.7V)

Bezug des BugC

Meinen kleinen Roboter habe ich im Shop RobotShop für knapp 16 € zzgl. Versandkosten erstanden. Natürlich findest du diesen auch auf den einschlägigen Portalen wie ebay.de oder banggood.com jedoch zu einem deutlich höheren Preis.

M5Stack BugC - Verpackung
M5Stack BugC – Verpackung

Der Lieferumfang des BugC ist recht überschaulich, denn dieser wird fertig aufgebaut geliefert und in meinem Fall war sogar die LiPo Batterie bereits eingesteckt. Somit kann man nach dem Auspacken bereits loslegen.

Vorsicht beim Umgang mit LiPo Batterien

Beim Umgang mit der LiPo Batterie gibt es einiges zu beachten.

  • Eine LiPo Batterie darf nicht verpolt geladen werden!
  • Keinen Kurzschluss verursachen!
  • Keine extremen Temperaturen aussetzen!
    (idealler Temperaturbereich 10° C bis 40° C)
  • Nicht ins Feuer werfen!
    (generell bei Akkus & Batterien keine gute Idee)
  • Keinem Wasser aussetzen!
LiPo Batterie Typ 16340 & M5Stack BugC
LiPo Batterie Typ 16340 & M5Stack BugC

M5Stack BugC & M5StickC

Der M5StickC verfügt über eine 8polige Buchsenleiste und der BugC über eine passende 8polige Steckerleiste. (Bauartbedingt kann man den M5StickC nicht verkehrt einstecken.)

Der Mikrocontroller M5StickC sitz recht stramm auf dem BugC und kann nicht ohne weiteres runterfallen.

Programmieren des M5Stack BugC in M5Flow

Der BugC lässt sich in der Software M5Flow recht einfach programmieren bzw. über den Block-Editor konfigurieren.

Auf dem GitHub Repository StefanDraeger / m5Stack findest du alle nachfolgenden Beispiele zum Download.

Du kannst dir die Software entweder unter https://shop.m5stack.com/pages/download herunterladen oder aber auch direkt im Browser arbeiten. Beide Versionen habe ich probiert und funktionieren mit diesem Roboter inkl. M5StickC.

Für die Programmierung im Browser benötigst du den API KEY, dieser wird dir auf dem M5StickC nach dem Start auf dem Display angezeigt.

Wenn du wie ich, hier die IDE als lokale Kopie auf dem Computer verwendest, dann musst du lediglich den COM-Port auswählen.

M5Flow - lokale Installation , Auswahl des COM-Ports
M5Flow – lokale Installation, Auswahl des COM-Ports

Einrichten des BugC in M5Flow

Zunächst müssen wir den BugC in der Software M5Flow einrichten. Dazu klicken wir auf den Text „HAT“ danach auf das Pluszeichen, es öffnet sich nun ein neues Fenster in welchem die verfügbaren HATs aufgelistet sind.

M5Flow - Schritte zum hinzufügen eines HAT Devices
M5Flow – Schritte zum Hinzufügen eines HAT Devices

Aus dieser Liste wählen wir nun den BugC aus und bestätigen die Auswahl mit der Schaltfläche „OK“.

M5Flow - Auswahl des BugC HAT
M5Flow – Auswahl des BugC HAT

Es wird nun ein zusätzlicher Menüpunkt „BugC“ unter „C-HAT“ angezeigt, wo du die 5 verschiedenen Elemente zum steuern des kleinen Roboters findest.

M5Flow - Menü - Elemente zum Steuern des BugC
M5Flow – Menü – Elemente zum Steuern des BugC

Wechselblinken der RGB LEDs

Wie bereits erwähnt, sind auf dem BugC zwei RGB LEDs verbaut, welche man recht einfach zum Wechselblinken bringen kann.

M5Flow - M5Stack BugC, RGB Wechselblinker
M5Flow – M5Stack BugC, RGB Wechselblinker

Theoretisch kann man auch einen RGB Wert setzen und somit aus der 32-bit Farbpalette einen beliebigen Farbwert wählen. Jedoch sind die RGB LEDs nicht so gut als dass man wirklich feine Unterschiede erkennen kann. Also beschränkt man sich hier auf die Grundtöne.

Im nachfolgenden Code habe ich 3 Schleifen ineinander verschachtelt und kann somit die RGB Farbtöne auf den RGB LEDs anzeigen.

Auf dem Display des M5StickC wird dabei der RGB Wert ausgegeben.

from m5stack import *
from m5ui import *
from uiflow import *
import hat
import time

setScreenColor(0x111111)

hat_bugc0 = hat.get(hat.BUGC)

label0 = M5TextBox(45, 7, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=90)

steps = 35

while True:
  for red in range(0,256, steps):
    for green in range(0,256, steps):
      for blue in range(0, 256, steps):
        hat_bugc0.SetAllRGB((red << 16) | (green << 8) | blue)
        text = "rgb ("+ str(red) + "," + str(green) + "," + str(blue) + ")"
        label0.setText(text)
        time.sleep(0.015)

Steuern der Motoren des BugC über M5Flow

An jeder Ecke des BugC ist ein kleiner Motor verbaut, welcher einzeln angesteuert werden kann. Für das ansteuern der Motoren benötigen wir den jeweiligen Index des Motors.

Indexe der Motoren am M5Stack BugC
Indexe der Motoren am M5Stack BugC

Für die Steuerung der Motoren gibt es zwei verschiedene Elemente in M5Flow.

M5Stack HAT BugC - Element "SetPulse"
M5Stack HAT BugC – Element „SetPulse“
M5Stack HAT BugC - Element "SetAllPulse"
M5Stack HAT BugC – Element „SetAllPulse“

Das Element „SetPulse“ kann einen Motor steuern, wobei wir den Index übergeben müssen. Im Element „SetAllPulse“ können wir alle 4 Motoren gleichzeitig einen Wert zuordnen.

Als Werte sind positive und negative Zahlen möglich. Wobei wir bei einer Bewegung immer die entgegen gesetzten Motoren mit jeweils positiven / negativen Zahlen setzen.

M5Stack BugC - einfaches wackeln
M5Stack BugC – einfaches wackeln

Mit diesem kleinen Stück Code können wir nun den BugC einmal hin und her wackeln lassen.

Im Hintergrund kann man recht gut hören, dass ich das Programm mehrmals starte und der Roboter sich dann über den Tisch bewegt.

Fazit & Ausblick

Für den ersten Test dieses bis hier ausreichen. Als Nächstes möchte ich nun schauen, wie dieser kleine Roboter gesteuert werden kann.

Der M5StickC verfügt über eine WiFi sowie noch eine freie Grove Schnittstelle und somit haben wir die Möglichkeit über zbsp. einem IR Empfänger und einer entsprechenden Fernbedienung diesen kleinen Roboter zu steuern.

Kommentar hinterlassen

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