Tutorials

Externe Sensoren & Aktoren

  • Infos zu Stromversorgung und GPIO-Pins
  • Ansteuern von externen Aktoren mit Makecode
  • Einlesen von externen Sensoren in Makecode
  • Anschluss externer Sensoren und Aktoren an der Robo4earth
  • Programmierbeispiele mit externen Aktoren und Sensoren in Makecode
  • Stromversorgung & Anschlüsse
    • Versorgung externer Bauteile
    • Micro:bit GPIOs
    • Break Out Board Anschlüsse
    • I²C Schnittstelle
  • Vorbereiten & Besorgen
    • Benötigtes Zubehör
    • I²C- und 3V-Anschluss durch Stiftleisten
    • Sensoren & Aktoren
  • Projekte
    • Servo
      • Verkabelung
      • Makecode Programm
      • Links
    • RGB-LED
      • Verkabelung
      • RGB-LED Modul
      • Links
    • Ultraschallsensor
      • Verkabelung
      • Makecode Programm
      • Links
    • Infrarot Modul zur Hinderniserkennung
      • Verkabelung
      • Makecode Programm
      • Links
  • Fortgeschrittene Projekte
    • LCD-Modul
      • Verkabelung
      • Programmieren des LCDs
      • Formatierte Sensorwertausgabe
    • IR-Fernbedienung
      • Verkabelung
      • Makecode Programm
      • Links
    • Linien-Folger
    • Elektrische Wasserpumpe
    • Arduino via I²C verbinden
  • Weiterführende Links
Header Image Robo4eart Educational Robotics

Tutorials

Externe Sensoren & Aktoren

  • Infos zu Stromversorgung und GPIO-Pins
  • Ansteuern von externen Aktoren mit Makecode
  • Einlesen von externen Sensoren in Makecode
  • Anschluss externer Sensoren und Aktoren an der Robo4earth
  • Programmierbeispiele mit externen Aktoren und Sensoren in Makecode
  • Stromversorgung & Anschlüsse
    • Versorgung externer Bauteile
    • Micro:bit GPIOs
    • Break Out Board Anschlüsse
    • I²C Schnittstelle
  • Vorbereiten & Besorgen
    • Benötigtes Zubehör
    • I²C- und 3V-Anschluss durch Stiftleisten
    • Sensoren & Aktoren
  • Projekte
    • Servo
      • Verkabelung
      • Makecode Programm
      • Links
    • RGB-LED
      • Verkabelung
      • RGB-LED Modul
      • Links
    • Ultraschallsensor
      • Verkabelung
      • Makecode Programm
      • Links
    • Infrarot Modul zur Hinderniserkennung
      • Verkabelung
      • Makecode Programm
      • Links
  • Fortgeschrittene Projekte
    • LCD-Modul
      • Verkabelung
      • Programmieren des LCDs
      • Formatierte Sensorwertausgabe
    • IR-Fernbedienung
      • Verkabelung
      • Makecode Programm
      • Links
    • Linien-Folger
    • Elektrische Wasserpumpe
    • Arduino via I²C verbinden
  • Weiterführende Links

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.

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).

Pinbelegung Micro:bit V1 vs V2
Quelle: tech.microbit.org/hardware/edgeconnector/#pins-and-signals

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.

Verwendbare GPIO-Pins am Micro:bit
schwarz markiert: Frei verwendbare digitale I/O Pins
grün markiert: Frei verwendbare analoge I/O Pins
rot markiert: I2C Pins / eingeschränkt nutzbare I/O Pins

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

I2C Programmierung in Makecode

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

Großes und kleines Breatboard

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.

Eine sehr gute und genaue Erklärung, wie ein Breadboard aufgebaut ist und wie es verwendet wird, gibt es auf dem YouTube Kanal Embsys (Embedded Systems): www.youtube.com/watch?v=d1V1gwQsm8Y&ab_channel=EmbSys

Jumper Wires Foto: Female = Buchsen und Male = Stecker-Anschlüsse

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.

Bild von Krokodilklemmen

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.

Beschichtete Drähte

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.

Kabelbinder

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.

9V Batterieclip zur Stromversorgung des Breadboards

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

Waveshare Board

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.

Stiftleisten

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.

Bild Stifte an Board löten (1)
Bild Stifte an Board löten (2)

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!)
  • 2x Linienfolger SEN-11769 von SparkFun
  • 1x Infrarot Modul zur Hinderniserkennung
  • 1x Infrarot Empfänger Modul von Sunfounder
  • 1x Infrarot Fernbedienung von Sunfounder
Aktoren
  • RGB-LED oder RGB-LED Modul von Sunfounder
  • Micro Servo 5V
  • I2C LCD1602 Module von Sunfounder

Viele der verwendeten Bauteile haben wir aus dem Sunfounder Starter Kit für Arduino -Beginner Level (LCD, IR-Empfänger und Fernbedienung, Servomotor, RGB-LED). Den Ultraschallsensor sowie die beiden Line Follower Sensoren haben wir von https://www.mouser.at/


Projekte


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.

Servomotor

Hier lernst du Servomotoren, einschließlich deren Funktionsweise, Anwendungsmöglichkeiten und praktische Tipps zur Programmierung genauer kennen.

Springe zu ...

Bild von einem Servomotor

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

Servomotor verbunden mit Pin 0 am Waveshare Motor Driver

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

Screenshot der Kategorie 'Pins' in Makecode

Zur Programmierung der Servomotoren können die Servo-Anweisungsblöcke der Kategorie Pins verwendet werden.

Screenshot des beschriebenen Programms in Makecode

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.

Beispielprogramm mit Servo Erweiterung

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.

Die aktuelle Position wird in der Variable Winkel gespeichert.

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.

RGB-LED

Hier lernst du die Ansteuerung von RGB-LEDs kennen, denn mit diesen ist es möglich verschiedene Farben zu erzeugen.

Springe zu ...

Du brauchst:

  • 1x RGB LED
  • 4x Jumper Wires Male-Female
  • 3x Widerstand 220 Ohm
LED für Micro:bit Roboter

Eine RGB-LED ist eine Kombination aus 3 LEDs: einer roten LED, einer grünen LED und einer blauen LED.

Verbindungen einer RGB-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

Bild der Verkabelung LED Licht auf der Robo4earth

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.

  1. Biege das längste Füßchen der RGB-LED nach hinten und stecke es in die lange, horizontale Kontaktleiste.
  2. Stecke das schwarze Kabel für GND in die gleiche lange Leiste.
  3. Stecke die kürzeren Füßchen der 3 LEDs nebeneinander in das Breadboard in je eine kurze, vertikale Kontaktleiste.
  4. Stecke je einen Widerstand wie am Bild gezeigt in die vertikalen Kontaktleisten, die mit den LED-Füßchen verbunden sind.
  5. 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.
  6. Am Motorboard, verbinde die anderen Enden der Kabel folgendermaßen:

    LEDs nun an Motorboard angeschlossen
    • 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.

Das fertige RGB-LED Programm findest du hier

Variablen definieren

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.

Dauerhaft-Schleife

In der dauerhaft-Schleife setzen wir den Ausgangspin aller LEDs auf den Wert, der in der Variable gespeichert ist.

Wert der Variable ändern

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.

An (1) und Aus (0) erklärt

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.

Rückgabewert Block Makecode Robo4earth

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

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 +.

LED Modul an Motorboard anschließen

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.

RGB Modul verbinden

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 dasselbe wie bei dem letzten Abschnitt RGB-LED

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.

Springe zu ...

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.

Bild einer Robo4earth mit Ultraschallsensor

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:

Ultraschallsensor mit der Robo4earth verbinden
  • Trig an P0 am Motorboard
  • Echo an P1 am Motorboard
  • Gnd zu GND am Motorboard
  • Vcc zu 3V oder 5V am Motorboard
3V Pin am Motordriverboard

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

Makecode Programm Ultraschallsensor (Robo4earth)

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.

Makecode Programm für Ultraschallsensor (Robo4earth)
  1. 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.
  2. Im Sonar-Block setze
    • ping trig auf P0
    • echo auf P1
    • unit auf cm.
  3. Erstelle eine Variable Distanz, hole einen setze Distanz auf <> Block in den Arbeitsbereich und setze den Sonar-Block als Wert in die Funktion ein.
  4. Setze den Block in die dauerhaft-Schleife ein.
  5. Lass dir die Distanz als Zahl ausgeben, wenn Distanz nicht 0 ist. Der Sensor springt zwischen den Messungen nämlich auf 0.
  6. 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.
  7. 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

Sensoren zur Hinderniserkennung (Robo4earth)

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?

  1. 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.
    Sensoren zur Hinderniserkennung programmieren in Makecode
  2. Setze die Blöcke zusammen und füge die neue Bedingung in die dauerhaft-Schleife ein. Sensoren zur Hinderniserkennung programmieren in Makecode
  3. 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).
  4. Dann baue die beiden zeige Symbol Blöcke in die Wenn Bedingung ein und wähle unterschiedliche Symbole aus.
  5. Setze noch einen Pausiere 100 ms Block unten in die dauerhaft-Schleife ein.
  6. Lade das Programm auf den Micro:bit und teste es.
Hinderniserkennung mit der Robo4earth

Im nächsten Schritt können wir die Robo4earth fahren lassen, wenn kein Hindernis da ist und stoppen lassen, wenn ein Hindernis vorhanden ist.

  1. 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
  2. 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.
  3. Damit die Robo4earth stoppt, wenn sie ein Hindernis erkennt, füge auch einen stoppe Bewegung Block in die Wenn Bedingung ein.
  4. Setze einen setze Distanz auf (1) in den beim Start Block ein, damit die Robo4earth beim Einschalten nicht sofort losfährt.
  5. 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.

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:

Infrarot Hindernissensor
  • 1x Infrarot Modul zur Hinderniserkennung
  • 3x Jumper Wires Female-Female

Verkabelung

Die 3 Stecker des IR-Sensors werden mit Jumper Wires folgendermaßen verbunden:

Verkabelung Infrarot-Hinderniserkennungssensor Robo4earth
  • 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:

  1. Hole einen Block digitale Werte von <> aus der Kategorie Fortgeschritten -> Pins.
  2. Ändere den Pin zu P2.
  3. Setze den Block in einen zeige Zahl <> Block ein.
  4. Pausiere eine halbe Sekunde, damit du die ausgegebene Zahl gut lesen kannst
Testprogramm für den Infrarotsensor

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?

Sensortest Robo4earth

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

Robo4earth mit Infrarotsensor Anleitung
  1. Lade die Robo4earth Erweiterung: Klicke auf +Erweiterungen und gib diesen Link ins Suchfeld ein https://github.com/zimdaustria/pxt-robo4earth
  2. Erstelle eine Variable wegFrei
  3. 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)
  4. 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.
  5. 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.
  6. 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.
  7. Füge einen stoppe Bewegung Block aus der Robo4earth Kategorie in die Wenn Bedingung ein, da, wo wegFrei falsch ist.
  8. Ändere den Wert im Pausiere Block auf 50 ms, damit die Robo4earth schnell reagieren kann und rechtzeitig stoppt, wenn ein Hindernis erkannt wird.
  9. 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