Raspberry Pi Roboter der eigenen Stimme folgen lassen (Teil 5)

13. Januar 2017
2 Comments

Als weiteres Feature wollen wir unseren kleinen Roboter nun zusätzlich dem Klang unserer Stimme folgen lassen. Ist der Modus aktiviert, so soll der Roboter automatisch in jene Richtung navigieren, aus der gerufen wurde.

Dazu gibt es kleine analoge Sound Erkennungssensoren, welche über einen MCP3008 ADC Wandler ausgelesen werden und dann der Raspberry Pi Roboter dementsprechend in diese Richtung lenkt.

Wie auch bei den meisten vorherigen Tutorials zum Raspberry Pi Roboter gilt, dass du diese überspringen bzw. anpassen kannst, wenn dein Roboter eine andere Funktionalität haben soll.

Benötigte Hardware

Solltest du dieses Tutorial nachbauen wollen, so werden folgende Bauteile benötigt:

Im Übrigen erleichtert Heißkleber auch weiterhin die Montage.

 

Aufbau und Verkabelung

Raspberry Pi MCP3008 Pinout

Auf der linken Seite des MCP3008 befinden sich die 8 analog auslesbaren Channels.

Als erstes schließen wir die Sensoren an. Dazu müssen je drei Jumper Kabel pro Sensor angeschlossen werden. Falls deine Sensoren 4 Pins haben, musst du nur VCC, GND und A0 anschließen. Nun können die Module einfach an die Karosserie geklebt werden. Bevor du sie allerdings endgültig (mit Heißkleber o.ä.) befestigst, solltest du erst die beste Position finden (dazu später mehr). Ich habe einen Sensor vorne angeschlossen, sowie einen rechts und links. Denkbar wäre es auch noch weitere Sound Detektoren z.B. hinten oder in 45° Position zu befestigen.

Raspberry Pi Robot Sounddetection

Als nächstes ist der MCP3008 dran. Die Kommunikation findet über SPI statt, lediglich die 3.3V Spannung bekommen wir von einem anderen, freien Pin:

RaspberryPiMCP3008
Pin 17 (3.3V)Pin 16 (VDD)
Pin 17 (3.3V)Pin 15 (VREF)
Pin 25 (GND)Pin 14 (AGND)
Pin 23 (SCLK)Pin 13 (CLK)
Pin 21 (MISO)Pin 12 (DOUT)
Pin 19 (MOSI)Pin 11 (DIN)
Pin 24 (CE0)Pin 10 (CS/SHDN)
Pin 25 (GND)Pin 9 (DGND)

Auf der anderen Seite befinden sich die 8 Channel, an denen analoge Sensoren (Data bzw. A0 Pin) angeschlossen werden können. An CH0 schließen wir den vorderen Sensor an, der rechte Sensor kommt an CH1 und der linke an CH2. Der VCC Pin von allen drei Modulen wird ebenfalls an 3.3V angeschlossen und GND an einen GND Anschluss vom Raspberry Pi.

Schematisch sieht der Aufbau (inkl. unserer vorherigen angeschlossenen Module, dann folgend aus:

 

MCP3008 ADC Wandler

Der Raspberry Pi kann ohne weiteres keine analogen Werte auslesen. Daher ist ein ADC wie der MCP3008 nötig. In einem vorherigen Tutorial habe ich die Funktionsweise eines ADCs inkl. nötiger Installationen beschrieben. Sollte noch nie ein Analog-Digital Wandler verwendet worden sein, empfiehlt es sich, dieses Tutorial durchzulesen. Ansonsten kann hier einfach fortgefahren werden.

Wir erstellen also im Ordner mit unseren weiteren Python Robot Dateien eine neue Datei, welche eine Klasse für den Analog-Digital Wandler enthält:

sudo nano MCP3008.py

Nun muss nur noch gespeichert (STRG+O) und der Editor beendet (STRG+X) werden.

 

Code erweitern

In unserer robot.py Datei importieren wir die erstelle Datei zu erst:

Am Ende der Klasse muss außerdem noch eine weitere Funktion erstellt werden, womit auf die Stimmerkennung reagiert werden kann. Folgenden Code fügen wir also hinzu:

Mit den Schwellwerten (ab welcher Lautstärke reagiert wird), kannst du experimentieren. Da die Motoren doch recht laut sind, habe ich den Schwellwert der seitlichen Mikrophone höher gestellt. Sobald du eine gute Position gefunden hast (oder die Schwellwerte entsprechend angepasst), können auch die Schalldetektoren an der Karosserie befestigt werden.

 

Ist die Datei entsprechend erweitert, können wir einen kleinen Test laufen lassen. Dazu öffnen wir die Python Konsole (sudo python) und geben folgenden Code ein:

Leider sind die Geräuschsensoren nicht all zu genau, weshalb das Folgen der Stimme nicht immer optimal funktioniert – als Spielerei sicherlich dennoch eine nette Sache.

 

Mit Hilfe der Infrarot Steuerung, welche wir davor erstellt haben, können wir z.B. eine Taste festlegen, welche den Modus zum Folgen der Stimme anschaltet.

Mit einem richtigen Mikrofon könnte man den Raspberry Pi Roboter sogar auf Sprachbefehle reagieren lassen. Dabei müsste nur auf bestimmte Codewörter reagiert werden (vorwärts, rechts, links, stop, etc.) und die entsprechenden Aktionen aufgerufen werden.

Im nächsten Teil lassen wir den Roboter noch per Xbox 360 Controller / Joystick fernsteuern.

2 Kommentare

    • Die Steuerung per Xbox 360 Controler ist geplant – die Software ist schon soweit. Tutorial kommt wohl nächste Woche. Wenn du es nicht verpassen willst, trag dich doch in den Newsletter ein 🙂

      Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!