Die Anleitung richtet sich an fortgeschrittene Programmierer*innen, daher wird auf grundsätzliche Begriffe aus der Programmierung wie Funktionen, Variablen, usw. hier nicht näher eingegangen.
Stromversorgung und Anschlüsse
Hier findest du wichtige Informationen zur Pinbelegung des Micro.bit V2 und dessen Schnittstellen, sowie zu einem hilfreichen externen Bauteil für die Stromversorgung weiterer Sensoren und Aktoren.
Versorgung ext. Bauteile
Micro:bit GPIOs
Break Out Board Anschlüsse
I²C-Schnittstelle
Stromversorgung externer Bauteile
Der Micro:bit V2 kann externe Aktoren und Sensoren mit 3V und bis zu maximal 190mA insgesamt versorgen (tech.microbit.org/hardware/powersupply/). Das ist für kleine Projekte ausreichend.
Für die Versorgung von Bauteilen, die mehr Spannung oder mehr Strom benötigen, muss man eine externe Stromversorgung benutzen. Dies geht am einfachsten über ein Erweiterungsmodul, auch Break Out Board genannt. Das ist ein kleines Board mit einer Steckverbindung für den Micro:bit (Edge Connector), welches den Micro:bit um bestimmte Funktionalitäten erweitert.
Im Falle der Robo4earth wird das Waveshare Motor Driver Board verwendet. Dieses liefert die Stromversorgung für die beiden DC-Motoren (6V-12V Eingangsspannung, 3A Ausgangsstrom) und versorgt auch den Micro:bit mit 3V. Das Board hat noch freie Steckverbindungen für 3 Servomotoren (Signal, 5V, GND) und Lötanschlüsse für I2C, 3V und GND. Das heißt, man kann noch weitere, externe Motoren, Sensoren oder Schaltungen daran anschließen.
Micro:bit GPIOs
GPIO steht für General Purpose Input/Output. GPIO-Pins sind Mehrzweck-Eingangs/Ausgangs-Anschlüsse an einem Mikrocontroller. An diese kann man Sensoren oder Aktoren anschließen. Der Micro:bit hat digitale und analoge GPIOs. Analoge GPIOs können digitale und analoge Signale verarbeiten, digitale GPIOs nur digitale Signale. Neben den GPIOs bietet der Micro:bit auch Pins für +3V Versorgung und GND (Ground).
Die Pinbelegung am Micro:bit V1 und V2 ist sehr ähnlich, es gibt am Micro:bit V2 einen freien digitalen GPIO-Pin mehr (Pin 9). Frei bedeutet, dass der Pin verwendet werden kann, ohne Funktionalitäten des Micro:bit einzuschränken.
Die rot markierten I2C Pins können nur verwendet werden, wenn die I2C Schnittstelle des Micro:bit nicht von einem angeschlossenen Erweiterungsmodul verwendet wird. Die unterstützten Motorboards der Robo4earth verwenden die I2C Schnittstelle nicht. An einer I2C Schnittstelle kann man Geräte oder integrierte Schaltungen anbinden, dazu mehr im Abschnitt I2C.
Pins, die nicht als frei markiert wurden, sind Pins, die an Funktionalitäten des Micro:bit gekoppelt sind. LED Col Pins sind mit einer Spalte der LED-Matrix verknüpft und BUTTON Pins mit den Buttons des Micro:bit. Wenn man diese Pins verwenden möchte, kann man die entsprechenden Funktionalitäten des Micro:bit nicht gleichzeitig verwenden. Man kann diese Pins zum Beispiel benutzen, um die entsprechende Micro:bit Hardware mit einem Signal zu koppeln.
Die großen Pins (P0, P1, P2, 3V, GND) kann man direkt verwenden, indem man Krokodilklemmen daran anschließt. Um die kleineren Pins zu verwenden, benötigt man ein Erweiterungsmodul.
Breakout-Board Anschlüsse
In der Robo4earth verwenden wir das Motor Driver Board von Waveshare. Falls die geplante Anwendung es erfordert, kann man das Waveshare Board durch ein anderes Board ersetzen. Bisher unterstützt Robo4earth neben dem Motor Driver Board die beiden Boards Keyestudio Ks0308 und Elecfreaks Motor:bit V1.8.
Alle 3 Boards können mit der Robo4earth App verwendet werden. Dafür gibt es eigene HEX Dateien, die von unserem Github Repository bezogen werden können.
Die Robo4earth Extension für Makecode kann mit dem Waveshare Board und dem Keyestudio Board genutzt werden. Für den Motor:bit von Elecfreaks gibt es eine eigene, offizielle Makecode Erweiterung.
Folgende Tabelle zeigt, welche Pins an den Break Out Boards verfügbar sind und welche davon man ohne Löten mit Steckverbindungen verwenden kann. Alle Boards bieten neben den 3V Ausgängen des Micro:bit zusätzlich 5V Pins an.
Freie Pins
Waveshare Motor Driver
Keystudio Ks0308
Elecfreaks Motor:bit V1.8
Pins | Buchse
Pins | Buchse
Pins | Buchse
P0
Frei | Servo S0
Frei
Frei
P1
Frei | Servo S1
Belegt
Belegt
P2
Frei | Servo S2
Belegt
Belegt
P8
Belegt
Frei
Belegt
P9 (Micro:bit V2)
Nicht vorhanden
Frei
Frei
P13
Belegt
Belegt
Frei
P14
Belegt
Belegt
Frei
P15
Belegt
Belegt
Frei
P16
Belegt
Belegt
Frei
P19
I2C
I2C
I2C
P20
I2C
I2C
I2C
3V
Ja
I2C
Für Pins 13-20 gemeinsam zwischen 3V3 und 5V umschaltbar
5V
Ja
Ja
Legende
Nicht vorhanden
Verfügbar ohne Steckverbindung
Frei verfügbarer digitaler Pin mit Steckverbindung
Frei verfügbarer analoger Pin mit Steckverbindung
Beim Waveshare Motor Driver sind die drei analogen GPIOs P0, P1 und P2 uneingeschränkt nutzbar. Werden mehr als 3 Ein- oder Ausgänge gebraucht oder 3V Spannung für ein Bauteil benötigt, müssen dafür extra Kabel oder Steckverbindungen angelötet werden.
Die beiden anderen Boards bieten mehr, mit Jumper-Kabeln nutzbare digitale Pins und 3V Ausgänge, aber weniger freie, analoge Pins.
Man kann auch ein anderes Board verwenden und die Motosteuerung selbst schreiben oder vorhandene Makecode Erweiterungen verwenden. Die Robo4earth Makecode Erweiterung wird dann nicht benötigt.
I²C-Schnittstelle
Mit der I2C Bus Schnittstelle (auch I²C geschrieben, gesprochen: “I-Quadrat-C") kann der Micro:bit mit verbundenen Geräten oder integrierten Schaltkreisen (ICs) kommunizieren. Es können mehrere Geräte gleichzeitig mit dem Micro:bit verbunden sein, und jedes hat eine eigene, eindeutige Adresse, die entweder für das Gerät festgelegt ist oder darauf konfiguriert werden muss. Damit kann man sehr viele zusätzliche Bauteile einbinden. Zum Beispiel kann man über I2C mit einem Arduino kommunizieren, an den Sensoren und Aktoren angeschlossen sind.
Zur Programmierung der I2C Schnittstelle gibt es Blöcke in der fortgeschrittenen Kategorie Pins unter "...mehr".
Vorbereiten und Besorgen
Hier sind nützliche Anleitungen und Informationen beschrieben, die dir dabei helfen dich für die Verkabelung und im weiteren Schritt für die Programmierung von eletrnischen Bauteilen wie Sensoren und Aktoren vorbereiten und wie du die benötigten Materialien beschaffen kannst.
Benötigtes Zubehör
I2C- & 3V-Anschlüsse
Sensoren & Aktoren
Benötigtes Zubehör
Breadboards (Steckplatinen) sind praktisch zum Experimentieren. Man kann auf einem Breadboard Schaltungen zusammenstecken, ohne zu löten und externe Stromquellen einfach anschließen. Zur Verwendung am Roboter empfiehlt sich die Verwendung eines kleinen Breadboards mit Löchern für die Montage.
Bei einem Breadboard sind Metallstreifen eingelassen. Diese verbinden die Stecklöcher miteinander.
Es gibt normalerweise ein bis zwei horizontale Kontakte über die ganze Länge des Boards am oberen und unteren Rand des Steckbretts. Diese werden für V+ und GND/- genutzt. Bei vielen Boards sind diese Kontakte schon mit einem roten Plus und einem blauen Minus markiert. Dazwischen liegen mehrere vertikale Kontakte, die einmal in der Mitte getrennt sind.
Jumper Wires (Verbindungskabel) werden benötigt, um Schaltungen auf einem Breadboard zu stecken und um Bauteile an den Pins des Motorboards anzuschließen. Es gibt sie mit Buchsen (Female)- und Stecker-Anschlüssen (Male).
Besonders oft benötigt man Female-Female Jumper-Kabel für den Anschluss von Bauteilen an den Pins des Motor Driver Boards. Wenn man mit dem Breadboard arbeiten will, braucht man auch Female-Male und Male-Male Jumper-Kabel oder Drahtbrücken. Es ist praktisch jeweils einen Satz kurze Kabel (10cm) und einen Satz lange Kabel (15-20cm) von jeder Variante zu haben.
Krokodilklemmen sind immer eine praktische Ergänzung und können helfen, wenn man mal nicht das richtige Verbindungskabel zur Hand hat. Man kann sie auch verwenden, um Bauteile direkt mit dem Micro:bit zu verbinden und um zu experimentieren.
Kabelbinder oder beschichtete Drähte zum Befestigen der Sensoren und Aktoren am Roboter Fahrgestell. Man kann auch M3 Schrauben und M3 Muttern verwenden, um Bauteile am Fahrgestell zu montieren. Diese benötigt man auch für den Zusammenbau des Robo4earth Fahrgestells.
Die beschichteten Drähte, die oft in Verpackungen verwendet werden, eignen sich sehr gut, um die Positionierung von Bauteilen an der Robo4earth auszuprobieren oder als wiederverwendbare Alternative zu den Kabelbindern aus Plastik.
Eine Stromversorgung fürs Breadboard braucht man eher für fortgeschrittene Projekte. In den Tutorials hier wird ein 9V Batterie-Clip verwendet, um einen Arduino zu versorgen, der über I2C mit dem Micro:bit kommuniziert. Wenn man viele Motoren anschließen möchte, oder einen Sensor verwendet, der empfindlich auf Stromschwankungen reagiert, bietet sich auch eine extra Stromversorgung an.
I2C- und 3V-Anschluss
Wenn du den 3V Anschluss am Motor Driver benötigst, oder die I2C Schnittstelle des Micro:bit verwenden willst, kannst du entweder Litzen oder Drahtbrücken an den Pins an der Vorderseite des Waveshare Boards anlöten oder eine Stiftleiste anlöten.
Stiftleisten sind Reihen kleiner Stecker, die man an Pins anlöten kann. An diesen Stiften kann man dann Jumper Wires anstecken oder Krokodilklemmen anklemmen. Sie werden auch an Bauteile angelötet, um diese in ein Breadboard stecken zu können.
Schneide die benötigte Anzahl an Stiften (als Block) von einer einreihigen Stiftleiste ab und löte sie mit den kurzen Seiten an der Rückseite des Boards an.
Für die hier gezeigten Beispiele haben wir Stifte an die Pins 19, 20, GND, 3V und 5V angelötet.
Sensoren & Aktoren
Sensoren sind elektronische Bauteile, die Robotern ermöglichen, ihre Umgebung wahrzunehmen. Mithilfe von Sensoren können sich Roboter im Raum lokalisieren und ihre unmittelbare Umgebung wahrnehmen. Sie können zum Beispiel Temperatur, Licht, Wärme, Schall oder Erschütterungen wahrnehmen und Hindernisse erkennen.
Aktoren sind elektronische Bauteile, mit denen sich Roboter im Raum bewegen können, Dinge in ihrer Umgebung manipulieren oder etwas ausdrücken können. Mit Aktoren können Roboter Dinge tun.
In unseren Beispielen verwenden wir:
1x Ultraschallsensor RCWL-1601 von Adafruit (funktioniert mit 3V!)
Hier findest du eine Vielzahl von spannenden Projekten mit verschiedenen Aktoren und Sensoren. Für jedes Projekt gibt es eine Aufbauanleitung mit Programmcode und Angabe zum benötigten Zubehör.
Servo
RGB-LED
Ultraschallsensor
Infrarotmodul
Servomotor
Hier lernst du Servomotoren, einschließlich deren Funktionsweise, Anwendungsmöglichkeiten und praktische Tipps zur Programmierung genauer kennen.
Servomotoren sind Motoren, die sich auf eine vorgegebene Position zwischen 0 und 180 Grad drehen können. Sie werden in der Robotik zum Beispiel in Greifern eingesetzt. Man kann bis zu 3 Servomotoren an den dafür vorgesehenen Steckverbindungen am Waveshare Motor Driver anschließen
Beim gleichzeitigen Einsatz von mehreren Motoren sollte man darauf achten, dass der maximale Ausgangsstrom des Boards von 3A nicht überschritten wird. Servomotoren, die zusätzlich zu den beiden, schon angebrachten DC-Motoren am Motorboard angeschlossen werden, sollten daher nur eingesetzt werden, wenn die Robo4earth steht.
Verkabelung
Der Servomotor aus dem Beispiel ist ein Micro Servo. Er benötigt eine 5V Verbindung (rotes Kabel zu rotem Pin 5V am Board), eine Verbindung zu Ground (braunes Kabel zu schwarzem Pin GND am Board) und eine Verbindung zu einem analogen Signal-Ausgang (oranges Kabel zu gelbem Pin P0).
Makecode Programm
Zur Programmierung der Servomotoren können die Servo-Anweisungsblöcke der Kategorie Pins verwendet werden.
Wenn man mehr Funktionalitäten benötigt, kann man die Servo Erweiterung unter Erweiterungen laden. Dafür auf die Kategorie Erweiterungen klicken und Servo im Suchfeld eingeben. Die Servos-Erweiterung auswählen und laden.
Am Anfang eines Programms muss ein Servomotor kalibriert oder in eine bestimmte Ausgangsposition gesetzt werden, damit das Programm richtig funktioniert.
Im Folgenden sieht man ein kurzes Testprogramm. Der Puls des Servos wird hier auf 1200 Microsekunden gesetzt. Dieser Wert wurde durch Googlen des verwendeten Servos ermittelt und dann durch Ausprobieren angepasst. Die Ausgangsposition des Servos wird auf 180° gesetzt. Durch Drücken der Knöpfe A und B am Micro:bit, kann der Servomotor zu den Positionen 180° und 90° bewegt werden.
Beim nächsten Programm wird eine selbst erstellte Variable Winkel verwendet, um sich den aktuellen Winkel des Servomotors zu merken. Der Servomotor kann dann mit der Taste B zwischen zwei Positionen umgestellt werden.
Eine RGB-LED ist eine Kombination aus 3 LEDs: einer roten LED, einer grünen LED und einer blauen LED.
Es gibt RGB-LEDs mit gemeinsamer Kathode (-) und RGB-LEDs mit gemeinsamer Anode (+). Wir verwenden eine RGB-LED mit gemeinsamer Kathode. Für die Verkabelung der Anoden RGB-LED, schau dir das Tutorial für das RGB-LED Modul an.
Verkabelung
Jede LED benötigt einen Vorwiderstand. Für die RGB-LED Schaltung verwenden wir 3 Widerstände mit 220 Ohm und 4 Jumper-Kabel Female-Male, am besten in schwarz, orange, grün und blau. Orange verwenden wir statt rot, weil rote und schwarze Kabel nur für V/+ und GND/- verwendet werden sollten.
Biege das längste Füßchen der RGB-LED nach hinten und stecke es in die lange, horizontale Kontaktleiste.
Stecke das schwarze Kabel für GND in die gleiche lange Leiste.
Stecke die kürzeren Füßchen der 3 LEDs nebeneinander in das Breadboard in je eine kurze, vertikale Kontaktleiste.
Stecke je einen Widerstand wie am Bild gezeigt in die vertikalen Kontaktleisten, die mit den LED-Füßchen verbunden sind.
Stecke die 3 farbigen Jumper-Wires in das Breadboard unter die Widerstände, sodass diese in der gleichen vertikalen Kontaktleiste verbunden sind: Orange an die rote LED, Grün an die grüne LED und Blau an die blaue LED.
Am Motorboard, verbinde die anderen Enden der Kabel folgendermaßen:
Das schwarze Kabel stecken wir an einen GND Pin
Rote LED (Orange) an P0
Grüne LED (Grün) an P1
Blaue LED (Blau) an P2
Makecode Programm
Mit dem folgenden Programm kannst du die LEDs der RGB einzeln mithilfe der Taster des Micro:bit umschalten.
Erstelle 3 Variablen: rot, gruen und blau, in denen der Status der jeweiligen LED gespeichert wird. 1 für An und 0 für Aus. Beim Start setzen wir diese Variablen auf 0.
In der dauerhaft-Schleife setzen wir den Ausgangspin aller LEDs auf den Wert, der in der Variable gespeichert ist.
Wenn ein Button gedrückt wird (oder das Logo) wird der Wert der Variable umgeschaltet (also von 1 zu 0 oder von 0 zu 1 geändert). Da das 3 mal im Code vorkommt, haben wir dafür eine Funktion schalteLED erstellt, die als Eingangsparameter den Status der LED bekommt und als Ausgangswert den geänderten Wert zurückgibt.
Die Funktion schalteLED schaltet wie ein Schalter zwischen An und Aus (1 und 0) um. Der neue Wert wird in der Hilfsvariable LED gespeichert und von der Funktion zurückgegeben.
Einen Rückgabewert Block kannst du aus der Kategorie Funktionen per Drag & Drop in deine Funktion hineinziehen. Dann erscheint ein abgerundeter Block ohne Kerben in den Funktionen, den du als Wert in deinem Programm verwenden kannst.
RGB-LED Modul
Wenn du keine Schaltung aufbauen willst, kannst du auch ein RGB-LED Modul verwenden, welches die benötigten Vorwiderstände für die LEDs schon integriert hat. Wir verwenden das RGB-LED Modul von Sunfounder. Es enthält eine RGB-LED mit gemeinsamer Anode +.
Schließe das RGB-LED Modul direkt mit 4 Jumper-Kabeln (Female-Female) an das Motorboard an. Weil das RGB-LED Modul eine gemeinsame Anode (+) hat, steckst du ein rotes Kabel an einen 5V-Stecker am Motorboard, die anderen drei Kabel werden folgendermaßen verbunden: Orange an P0, Grün an P1 und Blau an P2.
Am RGB-LED Modul verbinden wir die Kabel der Farbe nach:
Rot an VCC, Orange an R, Grün an G und Blau an B.
Das Programm ist das gleiche wie bei der RGB-LED. Beim Start sollten allerdings die Pins auf 1 gesetzt werden, da die RGB-LEDs des Moduls eine gemeinsame Anode haben. Probiere aus, was passiert, wenn es umgekehrt ist.
Ultraschallsensor
Hier lernst du wie man einen Ultraschallsensor verwendet, programmiert und Anwendungsmöglichkeiten kennen.
Mit Hilfe eines Ultraschallsensors kann die Distanz zu einem Hindernis gemessen werden. Wir verwenden den RCWL-1601 Ultraschallsensor von Adafruit. Dieser funktioniert bei 3V-5V.
Am besten solltest du einen Ultraschallsensor verwenden, der ab 3V funktioniert. Dann kannst du ihn auch ohne Motorboard direkt mit dem Micro:bit verwenden und er funktioniert auch, wenn die Robo4earth fährt. Achte darauf, dass die Batterien deiner Robo4earth voll sind! Ultraschallsensoren die 5V brauchen, wie der HC-SR04 funktionieren zwar auch, aber nicht, wenn die Robo4earth fährt. Dafür müsstest du einen Akku oder eine Batterie mit 9V-12V am Motorboard anhängen anstatt der 4 1,6V Akkus.
Verkabelung
Der Ultraschallsensor hat 4 Pins: Vcc, Trig, Echo und Gnd. Vcc und Gnd sind die beiden Anschlüsse für 3V/5V und Ground (GND). Trig und Echo sind Signal-Anschlüsse. Du brauchst 4 Jumper Kabel (Female-Female). Je ein rotes und ein schwarzes für 3V und GND und 2 in anderen Farben, wir haben orange und gelb gewählt.
Verbinde die 4 Pins des Ultraschallsensors folgendermaßen:
Trig an P0 am Motorboard
Echo an P1 am Motorboard
Gnd zu GND am Motorboard
Vcc zu 3V oder 5V am Motorboard
Wenn du den Sensor an 3V Pin am Motor Driver Board anschließen willst, musst du einen Stift daran anlöten. Dies wird hier gezeigt: I2C- und 3C-Anschluss durch Stiftleisten.
Alternativ kannst du den Ultraschallsensor an 5V und GND neben einem Signal-Pin anstecken, wie auf dem nachfolgenden Bild gezeigt.
Im nächsten Schritt schreiben wir ein Testprogramm für unseren Ultraschallsensor.
Makecode Programm
TRIG für Trigger ist ein Ausgangssignal und Echo ist ein Eingangssignal. Ein Ultraschallsensor sendet Audiowellen im Ultraschallbereich aus. Wenn sie auf ein Hindernis treffen, werden die Wellen zurückreflektiert. Der Sensor erfasst dieses Echo und misst die Zeit, die zwischen dem Ausgang des Trigger Signals und dem Eingang des Echo Signals liegt. Damit kann man ausrechnen, wie weit das Hindernis entfernt ist.
Die Erweiterung Sonar hat einen Block, der die Entfernung zum Hindernis aus den Signalen des Sensors fix fertig für uns ausrechnet und sie uns wahlweise in Mikrosekunden, cm oder Inch zurückgibt.
Füge die Erweiterung Sonar zu deinen Kategorien hinzu. Klicke dafür auf + Erweiterungen, gib Sonar im Suchfeld ein und wähle die Erweiterung aus.
Im Sonar-Block setze
ping trig auf P0
echo auf P1
unit auf cm.
Erstelle eine Variable Distanz, hole einen setze Distanz auf <> Block in den Arbeitsbereich und setze den Sonar-Block als Wert in die Funktion ein.
Setze den Block in die dauerhaft-Schleife ein.
Lass dir die Distanz als Zahl ausgeben, wenn Distanz nicht 0 ist. Der Sensor springt zwischen den Messungen nämlich auf 0.
Pausiere für eine halbe Sekunde, bevor die Distanz erneut gesetzt wird. Dadurch bleibt Zeit auch eine mehrstellige Zahl über den Bildschirm zu scrollen. Du kannst diese Zeit auch verkürzen damit der Sensor schneller reagiert.
Im beim Start Block zeigen wir ein U für 2 Sekunden an, damit wir wissen, dass das Ultraschall Programm auf dem Micro:bit läuft.
Lade das Programm auf deinen Micro:bit und warte ungefähr eine halbe Minute damit sich der Sensor kalibrieren kann. Teste dann ausgiebig mit Gegenständen oder deiner Hand die Funktion des Sensors. Probiere auch aus was passiert, wenn du Hindernisse mit unterschiedlichen Oberflächen verwendest. Wie funktioniert der Sensor bei weichen, schallabsorbierenden Oberflächen, zum Beispiel bei einer Strickmütze?
Robo4earth mit Hinderniserkennung
Wenn der Sensor funktioniert, können wir die Robo4earth nun vor nahenden Hindernissen warnen, wenn sie fährt. Zuerst ändern wir das Testprogramm ein wenig, um zu sehen, wenn ein Hindernis vorhanden ist.
Wir wollen nun wissen, ob die Distanz kleiner oder größer 10cm ist. Wenn die Distanz zwischen 1 und 10 liegt, wird ein Kreuz am Bildschirm angezeigt. Wenn die Distanz größer als 10 ist, ist der Weg frei und es wird ein “Hakerl” am Bildschirm anzeigen. Im Bild oben ist ein Fehler, denn was passiert, wenn die Distanz genau 10 ist?
Tausche die Bedingung Distanz ist ungleich 0 durch Distanz ist größer als 0 und Distanz ist kleiner/gleich 10 aus. Du brauchst dafür auch einen und Block aus der Kategorie Logik.
Setze die Blöcke zusammen und füge die neue Bedingung in die dauerhaft-Schleife ein.
Wenn die Distanz größer als 10 ist, wollen wir ein “Hakerl” zeigen. Wir brauchen dafür noch eine Bedingung in ansonsten: Wenn Distanz größer 10 (sie könnte ja auch 0 sein oder negativ, wenn der Sensor nicht richtig funktioniert).
Dann baue die beiden zeige Symbol Blöcke in die Wenn Bedingung ein und wähle unterschiedliche Symbole aus.
Setze noch einen Pausiere 100 ms Block unten in die dauerhaft-Schleife ein.
Lade das Programm auf den Micro:bit und teste es.
Im nächsten Schritt können wir die Robo4earth fahren lassen, wenn kein Hindernis da ist und stoppen lassen, wenn ein Hindernis vorhanden ist.
Lade die Robo4earth Erweiterung: Klicke auf +Erweiterungen und suche nach robo4earth. Wenn das keine Ergebnisse bringt, gib diesen Link ins Suchfeld ein: https://github.com/zimdaustria/pxt-robo4earth
Füge die Ereignisse: wenn Knopf A geklickt und wenn Knopf B geklickt ein und lasse die Robo4earth mit langsamem Tempo fahren, wenn A gedrückt wird und stoppen, wenn B gedrückt wird.
Damit die Robo4earth stoppt, wenn sie ein Hindernis erkennt, füge auch einen stoppe Bewegung Block in die Wenn Bedingung ein.
Setze einen setze Distanz auf (1) in den beim Start Block ein, damit die Robo4earth beim Einschalten nicht sofort losfährt.
Erhöhe den Abstandswert in den Bedingungen von 10 cm auf 15 cm, damit die Robo4earth genug Zeit zu bremsen hat.
Überprüfe das Programm noch einmal und lade es auf die Robo4earth. Teste es ausgiebig.
Um die Robo4earth fahren zu lassen drücke den Button A. Um sie zu stoppen, halte deine Hand vor den Sensor oder lasse sie (möglichst gerade) auf ein Hindernis zusteuern. Wenn das nicht klappt, stoppe sie mit Button B und überprüfe dein Programm. Verringere zum Beispiel die Geschwindigkeit oder erhöhe den Abstandswert und probiere es wieder aus.
Links
🇩🇪 Deutschsprachige Quellen
Hier findest du eine kleine Sammlung von Links, die wir Tüftler*innen empfehlen, die daran interessiert sind, mehr aus ihrem Micro:bit herauszuholen.
Das fertige Programm für den Ultraschallsensor mit der Robo4earth findest du ... hier
Infrarot Modul zur Hinderniserkennung
Hier lernst du das Infrarot Modul kennen, um es zur Hinderniserkennung zu nutzen.
Ein IR-Hindernissensor beruht auf einem ähnlichen Prinzip wie der Ultraschallsensor aber mit Infrarotlicht anstatt Ultraschallwellen. Er enthält eine IR-LED, welche infrarotes Licht emittiert und einer IR-Receiver Diode, die auf das reflektierte IR-Licht reagiert. IR-Hindernissensoren haben eine geringere Reichweite als Ultraschallsensoren, reichen aber für einen vergleichsweise langsamen Roboter zur Hinderniserkennung aus. Mit der Stellschraube am IR-Sensor Modul kannst du die Empfindlichkeit des Sensors vorsichtig verstellen und an die Umgebungshelligkeit anpassen wenn nötig.
Du brauchst:
1x Infrarot Modul zur Hinderniserkennung
3x Jumper Wires Female-Female
Verkabelung
Die 3 Stecker des IR-Sensors werden mit Jumper Wires folgendermaßen verbunden:
OUT (oranges Kabel) zum gelben Signal-Pin P2
GND (braunes Kabel) zu schwarzem GND-Pin
VCC (rotes Kabel) zu rotem 5V-Pin am Motorboard.
Makecode Programm
Um herauszufinden, was der Sensor ausgibt, erstelle das folgende Testprogramm:
Hole einen Block digitale Werte von <> aus der Kategorie Fortgeschritten -> Pins.
Ändere den Pin zu P2.
Setze den Block in einen zeige Zahl <> Block ein.
Pausiere eine halbe Sekunde, damit du die ausgegebene Zahl gut lesen kannst
Lade das Programm auf den Micro:bit und schaue was passiert, wenn du etwas vor den Sensor hältst. Ab welcher Entfernung reagiert der Sensor? Was gibt er aus, wenn ein Hindernis erkannt wird?
Der von uns verwendete Sensor gibt 0 aus, wenn ein Hindernis erkannt wird und 1, wenn kein Hindernis vorhanden ist. Der Sensor schlägt bei ungefähr 15 cm an, je nach dem Winkel, in dem sich das Hindernis nähert. Dieses Wissen verwenden wir jetzt in unserem Programm.
Robo4earth mit Infrarotsensor
Lade die Robo4earth Erweiterung: Klicke auf +Erweiterungen und gib diesen Link ins Suchfeld ein https://github.com/zimdaustria/pxt-robo4earth
In Zwischenablage kopiert!
Erstelle eine Variable wegFrei
Füge eine Wenn Bedingung in die dauerhaft-Schleife ein und frage ab, ob der Sensor ein Hindernis erkennt. Bei uns im Programm ist das (digitaler Wert von Pin P2 = 0)
Wenn der Sensor ein Hindernis erkennt, setze die Variable wegFrei auf falsch. Den wahr/falsch Block findest du in der Kategorie Logik. Damit wird wegFrei automatisch zu einer booleschen Variable. Sie kann nur wahr oder falsch sein. Diese Variable kannst du direkt als Bedingung in eine Wenn Schleife setzen.
Hole einen Wenn Knopf (A) geklickt Block in den Arbeitsbereich und füge eine Wenn Bedingung ein. Als Bedingung setze nun die Variable wegFrei ein.
Wenn der Weg frei ist, soll die Robo4earth vorwärtsfahren, bis ein Hindernis erkannt wird. Setze also einen fahre vorwärts mit Tempo (5) Block aus der Robo4earth Kategorie in die Wenn Bedingung ein.
Füge einen stoppe Bewegung Block aus der Robo4earth Kategorie in die Wenn Bedingung ein, da, wo wegFrei falsch ist.
Ändere den Wert im Pausiere Block auf 50 ms, damit die Robo4earth schnell reagieren kann und rechtzeitig stoppt, wenn ein Hindernis erkannt wird.
Lade das Programm auf den Micro:bit und teste es.
Befestige den Sensor mit einem Kabelbinder zum Beispiel an deiner Robo4earth. Montiere ihn so, dass die beiden IR-Dioden (sehen aus wie normale LEDs) frei liegen und in die Richtung zeigen, in die die Robo4earth fährt.
Überprüfe das Programm noch einmal und lade es auf die Robo4earth. Teste es ausgiebig.
Links
🇩🇪 Deutschsprachige Quellen
Hier findest du eine kleine Sammlung von Links, die wir Tüftler*innen empfehlen, die daran interessiert sind, mehr aus ihrem Micro:bit herauszuholen.
Link zum fertigen Programm mit IR-Hinderniserkennung und Robo4earth ... hier
Nützliche Links
🇩🇪 Deutschsprachige Quellen
Youtube Kanal von DigiMe
Hier gibt es viele Video-Tutorials für den Micro:bit mit Sensoren und Aktoren sowie für deren Programmierung in Makecode.