movemini
deutsch   english   

ARBEITSBLATT 2: MOVEmini

 

 

ZUSAMMENBAU UND FUNKTIONSWEISE

 

Den Bausatz des MOVEMini kannst du in kurzer Zeit zusammenbauen. Eine Bauanleitung findest du hier. Schau dir auch dieses YouTube-Video an.

Wie du beim Zusammenbau siehst, erfolgt der Antrieb mit zwei kleinen Servomotoren, wie man sie oft im Modellbau einsetzt. Diese werden an der Zusatzplatine angeschlossen, die mit den Pins P0, P1, P2, 3V und GND des micro:bits verbunden ist. Der rechte Motor wird über P1 und der linke Motor über P2 angesteuert und auf der Zusatzplatine befindet sich ein Stromverstärker für die Servomotoren.

 

Oben an der Platine siehst du 5 Farb-LEDs, die man NeoPixels nennt. Diese werden über P0 angesteuert.  

Orientiere dich im Internet, wie solche Farb-LEDs funktionieren und wo sie überall verbaut werden (z.B. in LED-Strips).

 

 

ERSTE INBETRIEBNAHME

 


NeoPixels

Es ist immer spannend, ein Gerät das erste Mal in Betrieb zu setzen. Dabei führst du kleine Tests aus, um das richtige Funktionieren einzelner Komponenten zu überprüfen. Beginne mit den NeoPixels. Um diese mit einem Python-Programm anzusteuern, musst du zusätzlich zum Module microbit noch das Modul neopixel importieren und du erzeugst dann  eine Variable mit dem Namen np (der Name ist gleichgültig),

from neopixel import *
np = NeoPixel(pin0, 5)

Die Parameterwerte legen fest, dass die Neopixels an P0 angeschlossen sind und dass du 5 Pixels verwendest. Nachher kannst du sehr einfach die RGB-Farbe jedes Pixels einzeln setzen, indem du wie bei einer Liste mit np[i] das Pixel auswählst (i = 0..4) und ihm in einem Tupel den RGB-Werte (3 Zahlen zwischen 0 und 255) zuweist, also beispielsweise um die grüne LED des Pixel mit i = 1 auf den Wert 10 zu stellen:

np[1] = (0, 10, 0)

Damit die LED mit dieser Farbe leuchtet, musst du nach der Zuweisung immer

np.show()

aufrufen. Schreibe das Programm und führe es aus.

Wenn du Lust hast, so kannst du schon jetzt oder auch später mit den Pixels noch ein wenig spielen, beispielsweise:

Alle Pixels in irgendeiner Farbe blinken lassen
Lauflicht erstellen, d.h. die Pixel werden der Reihe nach ein- und wieder ausgeschaltet
Farbenspiel: die Pixels leuchten jede Sekunde mit anderen zufälligen Farben

Beachte: Wenn deine Pixels nicht leuchten, hast du wahrscheinlich np.show() vergessen!

Motoren
Grundsätzlich steuert man Servomotoren mit einem PWM-Signal an. Orientiere dich im Kapitel 8: Fahrende Roboter oder im Internet, was man darunter versteht und was der duty_cycle (eine Zahl zwischen 0 und 1 = 100% ist. Allerdings rotieren Servomotoren üblicherweise nicht ständig, sondern nur bis zu einer bestimmten Position, die vom duty_cycle abhängt. Bei deinen Motoren ist das aber anders: der duty_cycle bestimmt hier die Geschwindigkeit des Motors, besser gesagt seine Tourenzahl und ob er in der einen oder anderen Richtung dreht.

Ein PWM-Signal auf Pin1 (rechter Motor) erzeugst du mit

pin1.write_analog(duty_cycle)

wobei aber hier der duty_cycle nicht in Prozent, sondern als Zahl zwischen 0 und 1023 angegeben wird. Deine Servomotoren laufen für Werte zwischen 73 und hinauf auf 93 immer schneller vorwärts und für Werte zwischen 73 und hinunter auf 63 immer schneller rückwärts.

Erstelle ein Programm, dass den rechten Motor je 1 Sekunde mit dem duty_cycle 63 bis 73 laufen lässt. Am Schluss solltest du den Motor mit write_analog(0) stoppen. Schreibe den duty_cycle im Terminalfenster aus.

Mache denselben Test mit dem linken Motor.

 

 

VORWÄRTS FAHREN UND ABBIEGEN

 

Um vorwärts zu fahren, müssen beide Räder gleich schnell drehen. Die Motoren sind aber entgegengesetzt angeordnet, so dass ihre Laufrichtungen entgegengesetzt seien müssen, um vorwärts zu fahren. Das ist nicht exakt realisierbar, aber so ungefähr. Um links zu drehen, stoppst du das linke Rad.

Es ist sinnvoll, ein paar Funktionen zu definieren, zum Beispiel:

Programm:

from microbit import *

def forward(speed):
    pin1.write_analog(72 - speed)
    pin2.write_analog(72 + speed)

def left(speed):
    pin1.write_analog(72 - speed)
    pin2.write_digital(0)

def stop():
    pin1.write_digital(0)
    pin2.write_digital(0)
► In Zwischenablage kopieren

Den Wert 72 musst du mit einigen Versuchen anpassen.

Erstelle ein Programm so, dass der Roboter vier Mal hintereinander 3 Sekunden lang vorwärts fährt und dann 0.7 s links steuert. Am Ende soll er stoppen.

Ergänze die Funktionssammlung mit backward() und right() und führe einige weitere Testläufe durch.

 

 

MIT BELEUCHTUNG  UND FAHRRICHTUNGSANZEIGER FAHREN

 

Jetzt kannst du deine Kenntnisse kombinieren und lustige Roboteranwendungen programmieren. Ein Vorschlag:

Der Roboter soll nach Programmstart endlos ungefähr ein Quadrat abfahren, bis man den Button A klickt. Dabei sollen bei der Vorwärtsfahrt die drei mittleren Pixels weiss und beim Drehen der entsprechende äusserste Pixel wie Fahrrichtungsblinker gelb leuchten.

Verbessere das Programm so, dass der gelbe Fahrrichtungsblinker tatsächlich blinkt
Verbessere es, dass das Programm möglichst rasch beendet wird, wenn du den Button klickst
Verbessere das Programm, dass du es mit Klick auf den Button B immer wieder neu starten kannst
Verbessere das Programm so, dass es sinnvolle Ausgaben auf dem 5x5 LED Display ausgibt
Erweitere das Programm so, dass der Roboter Links- und Rechtsdrehungen macht.
 

 

 

ROBOTER FERNSTEUERN

 

Mit einem zweiten micro:bit willst du den Roboter fernsteuern, und zwar wie folgt:

Kein Button gedrückt → angehalten
Linker Button gedrückt → links fahren
Rechter Button gedrückt → rechts fahren
beide Buttons gedrückt → geradeaus fahren

Orientiere dich im Kapitel 7. Bluetooth, wie du die Kommunikation zwischen der Fernsteuerung und dem Roboter programmierst.