Inhaltsverzeichnis:

Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version - Gunook
Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version - Gunook

Video: Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version - Gunook

Video: Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version - Gunook
Video: WuLi bot 4 Follow Master Principle 2024, November
Anonim
Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version
Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version
Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version
Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version
Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version
Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version
Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version
Ein sprachgesteuerter Jumping Jack - Google Voice AIY Version

Sie haben also das AIY-Voice-Kit zu Weihnachten bekommen und haben damit gespielt, indem Sie die Anweisungen befolgen. Es ist lustig, aber jetzt?

Das im Folgenden beschriebene Projekt stellt ein einfaches Gerät vor, das mit dem AIY voice HAT für den Raspberry Pi gebaut werden kann. Es verwendet das Google-Spracherkennungssystem, um LEDs und zwei Servos zu steuern und die Arme und Beine eines Hampelmanns durch ein sehr einfaches Getriebe anzutreiben.

Die im Hintergrund arbeitende Software ist eine Modifikation des servo_demo.py Skripts, wie es im AIY Voice Kit Handbuch beschrieben wurde. Folgen Sie einfach den dort angegebenen Anweisungen, um Hard- und Software einzurichten. Das Gerät selbst ist einfach aufzubauen und erfordert nicht viel handwerkliches Geschick. Außerdem wären ein Cuttermesser, ein Bohrer und ein Lötkolben hilfreich.

Wenn Sie das Spracherkennungssystem mit einem Handzwinkern aktivieren und "Hände hoch" sagen, hebt der Hampelmann Hände und Beine, "Hands Center" bewegt beide Servos in die mittlere Position und bei "Hände nach unten" werden Hände und Beine abgesenkt werden. Bei „links oben“werden die linke Hand und Beine angehoben und bei „rechts unten“die rechten abgesenkt, bei „rechts oben“umgekehrt. "Dance", wird es zum Tanzen bringen, zumindest irgendwie. Es spricht auch, bitte sehen Sie sich das angehängte Video an.

So kannst du mit wenig Aufwand deinen eigenen tanzenden, chatten und singenden Roboter bauen.

Um die Bedienung insbesondere für kleinere Kinder zu vereinfachen und den „Magie“-Faktor zu verstärken, wurde der Knopf an der AIY-Box als Auslöser durch einen Näherungssensor ersetzt. Der Einfachheit halber habe ich einen digitalen Distanzsensor-Breakout von Pololu verwendet, der erkennt, ob ein Objekt näher als 5 cm ist und sich sehr ähnlich wie ein Knopf bedienen lässt. LEDs zeigen an, wenn das Gerät auf Bestellungen wartet, zuhört oder „denkt“. Servos, Sensor und LEDs werden von der GPIOZero-Softwarebibliothek gesteuert.

Der Prototyp wurde aus Forex, PVC-Schaumplatten gebaut, die sich sehr einfach mit einem Cuttermesser schneiden und verkleben lassen, aber auch recht stabil ist. Sie können gerne eine größere, schönere, verbesserte oder ausgefallenere Version erstellen, aber es wäre nett, wenn Sie Ihre Verbesserungen dokumentieren und präsentieren würden.

Sie können beide Seiten des Korpus nutzen, je nachdem ob Sie das Fahrwerk präsentieren oder ein schönes, kinderfreundliches Layout haben möchten. ---------"Hampelmann" ist der deutsche Begriff für "Jumping Jack" und hat bestimmte Konnotationen.

Schritt 1: Verwendete Materialien

Verwendete Materialien
Verwendete Materialien
Verwendete Materialien
Verwendete Materialien

Himbeer-Pi 3; 32 £ bei Pimoroni, UK

AIY Voice-Kit; 25 £ bei Pimoroni, UK

Pololu digitaler Distanzsensor Breakout mit Sharp-Sensor, 5 cm; 5,90 € bei Exp-tec.de

Zwei 9g Servos

Zwei weiße LEDs und ein Widerstand

Einige Header und Überbrückungskabel

Eine 2 mm Forex-Platte, 250 x 500 mm; 1,70 € bei Modulor, Berlin, Deutschland

M3-Schrauben, Muttern und Unterlegscheiben, um alle beweglichen Teile zu verbinden. Ich habe sechs 10 und vier 16 mm Nylonschrauben verwendet.

Sechs M2 Schrauben und Muttern, um die Servos an den Platten zu befestigen und die Servoarme und Zahnräder zu verbinden.

Ein paar Tropfen Plastikkleber

Schritt 2: Montage und Verwendung des Geräts

Montage und Verwendung des Gerätes
Montage und Verwendung des Gerätes
Montage und Verwendung des Gerätes
Montage und Verwendung des Gerätes
Montage und Verwendung des Gerätes
Montage und Verwendung des Gerätes

Bezüglich des AIY Voice-Kits selbst folgen Sie einfach den Anweisungen in der Beschreibung, die dem Kit beiliegt, einschließlich des Abschnitts über das Servo. Ich würde empfehlen, mehrere 3-Pin-Header an die Servo-Ports des AIY Voice Breakout zu löten, damit Sie Servos, Sensoren und LEDs sehr einfach mit dem HAT verbinden können.

Bezüglich des Hampelmanns können Sie entweder die Zeichnungen, die ich hier als SVG- und PDF-Dateien zur Verfügung gestellt habe, als Vorlage verwenden oder einfach nach Ihren eigenen Vorstellungen modifizieren. Sie können die Grundanordnung des Getriebes, das die Beine und den Arm des Hampelmanns antreibt, beibehalten und sicherstellen, dass der Abstand zwischen dem Drehpunkt und dem Getriebe an Servo, Arm und Bein gleich ist.

Alternativ können Sie auch eine Version konstruieren, bei der Arme und Beine direkt von vier separaten Servos oder von einem fortschrittlicheren Getriebe angetrieben werden.

Schneiden Sie die Teile anhand der Zeichnung aus einer Forex-, Karton- oder Sperrholzplatte und bohren Sie die Löcher an den entsprechenden Stellen. Kleben Sie die Distanzstücke an die Drehpunkte von Armen und Beinen, um eine gute Ausrichtung der Löcher zu gewährleisten.

Befestigen Sie die Servos und die beweglichen Teile an der Grundplatte. Fügen Sie den Distanzsensor und die LED wie angegeben hinzu. Die Servos werden mit M2-Schrauben befestigt, alle beweglichen Teile mit M3-Schrauben. Ich habe Nylon M3-Schrauben verwendet, aber nur aus ästhetischen Gründen.

Prüfen Sie, ob sich die Servoarme in der Mittelstellung befinden. Servoarme und Zahnräder verbinden, dazu habe ich M2-Schrauben verwendet.

Befestigen Sie Servos, LEDs und den Abstandssensor an den Servoanschlüssen auf der AIY-Platine. Möglicherweise benötigen Sie einige Verlängerungs-/Überbrückungskabel. Ich habe das linke Servo an „servo0“(GPIO 26), das rechte Servo an „servo2“(GPIO 13), die LEDs an „servo5“(GPIO 24) und den Sensor an „servo3“(GPIO 5) am AIY. angeschlossen Stimme HUT.

Kopieren Sie die bereitgestellte Datei „Hampelmann.py“in den AIY-Unterordner „src“und machen Sie sie für jedermann direkt ausführbar. Wählen Sie dazu die Datei im Dateimanager aus, klicken Sie mit der rechten Maustaste und wählen Sie Eigenschaften, wählen Sie Berechtigungen, gehen Sie zu Ausführen, wählen Sie ~ jeder aus. Oder schreiben Sie „chmod +x src/Hampelmann.py“in die Entwicklerkonsole.

Prüfen Sie, ob alles aufgesetzt und fixiert oder bei Bedarf beweglich ist. Öffnen Sie die Dev-Kommandozeile, geben Sie „src/Hampelmann.py“ein und starten Sie das Programm. Wenn Sie Ihre Hand oder Ihre Finger vor den Distanzsensor bewegen, fragt das AIY-Gerät nach Befehlen und die LEDs blinken. Umgesetzte Befehle sind „rechts/links/Hände oben/unten/Mitte“, „tanzen“, „LED an/aus“und „auf Wiedersehen“.

Spiel. Bewegen Sie Ihre Hand vor den Sensor, sprechen Sie, wenn Sie gefragt werden, und geben Sie dem Gerät ein wenig Zeit zum Reagieren. Die Latenz ist ziemlich hoch. Strg+C oder „Auf Wiedersehen“stoppt das Programm.

Sie können die Datei mit Nano oder einem anderen einfachen Texteditor ändern.

Anmerkungen: Bitte beachten Sie, dass einige Wörter und Begriffe als Wörter, die mit einem Großbuchstaben beginnen, als „Mitte“oder „Rechte Mitte“erkannt werden, andere nicht, z. B. 'richtig auf'. Sie müssen das genaue Formular verwenden, das vom Spracherkennungsmodul zurückgegeben wird, um eine Aktion auszulösen.

Schritt 3: Das Python-Skript

Wie bereits erwähnt, basiert das Skript mit einigen Ergänzungen auf dem Skript servo_demo.py aus den AIY-Sprachanweisungen. Die erste Version ist die Hampelmann.py-Datei, die Sie im Anhang finden. AngularServo von GPIOZero erlaubt es, den Aktionsbereich des Servos einzuschränken und genau zu definieren, wie weit er sich bewegen soll. Aber ich bevorzuge die britische Stimme gegenüber dem Original. Und das Gerät kann auch Englisch, Deutsch, Italienisch, Französisch und Spanisch sprechen, aber nicht verstehen (?). Unten finden Sie das Hampelmann2.py-Skript mit britischer Stimme und etwas Italienisch und Deutsch. Bitte beachten Sie, dass Sie die Skripte ausführbar machen müssen, um sie auszuführen.

#!/usr/bin/env python3# Dieses Skript ist eine Adaption des servo_demo.py-Skripts für den AIY voice HAT, # optimiert für den AIY Jumping Jack import aiy.audio import aiy.cloudspeech import aiy.voicehat from gpiozero import LED from gpiozero import AngularServo from gpiozero import Button from time import sleep def main():cognizer = aiy.cloudspeech.get_recognizer()cognizer.expect_phrase('rechts oben')cognizer.expect_phrase('rechts unten')cognizer.expect_phrase('rechts Center') # die Großbuchstaben sind absichtlich dacognizer.expect_phrase('left up')cognizer.expect_phrase('left down')cognizer.expect_phrase('left center')cognizer.expect_phrase('hands up')cognizer.expect_phrase ('hands down')cognizer.expect_phrase('hands Center')cognizer.expect_phrase('Dance')cognizer.expect_phrase('LED on')cognizer.expect_phrase('LED off')cognizer.expect_phrase('goodbye') aiy.audio.get_recorder().start() servo0 = AngularServo(26, min_angle=-40, max_angle=40) # 1. Verbindung oder, GPIO 26 servo2 = AngularServo(13, min_angle=-40, max_angle=40) # 3. Anschluss, GPIO 13 led0 = LED(24) # LEDs sind mit Servo5/GPIO 24 verbunden distance= Button(5) # Distanzsensor angeschlossen to servo3/GPIO 05 # other: GPIO 6 at servo1, 12 at servo4 aiy.audio.say("Hallo!",) aiy.audio.say("Um zu beginnen, bewege deine Hand in die Nähe des Sensors",) während True: led0.on() # LEDs on print("Um die Spracherkennung zu aktivieren, bewegen Sie eine Hand in die Nähe des Distanzsensors und sprechen Sie dann") print('Erwartete Schlüsselwörter sind: Hände/links/rechts oben/unten/Mitte, ') print('LED an/aus, tanzen und auf Wiedersehen.') print() distance.wait_for_press() print('Listening…') aiy.audio.say("Bitte geben Sie Ihre Bestellungen",) led0.blink() # light blink text =cognizer.recognize() if text is None: aiy.audio.say('Entschuldigung, ich habe dich nicht gehört.',) else: print('Du hast "', text, '"') # Lässt dich Überprüfen Sie die Systeminterpretation, wenn 'rechts oben' im Text: print('Servo0 in die maximale Position bewegen') servo0.angle=35 elif 'rechts unten' im Text: print('Servo0 bewegen to minimum position') servo0.angle=-35 elif 'Right Center' im Text: #korrekte Großbuchstaben sind kritisch print('Servo0 in die mittlere Position verschieben') servo0.angle=0 elif 'left up' im Text: print(' Servo2 in die maximale Position bewegen') servo2.angle=-35 elif 'links unten' im Text: print('Servo2 in die minimale Position bewegen') servo2.angle=35 elif 'linke Mitte' im Text: print('Servo2 in Position verschieben) mittlere Position') servo2.angle=0 elif 'Hände hoch' im Text: print('Servo2 in maximale Position bewegen') servo2.angle=-35 servo0.angle=35 elif 'Hände runter' im Text: print('Bewegt servo2 auf Minimalposition') servo2.angle=35 servo0.angle=-35 elif 'Hands Center' im Text: print('Servo2 in Mittelstellung bewegen') servo2.angle=0 servo0.angle=0 elif 'LED aus' im Text: print ('externe LED 0 ausschalten') led0.off() elif 'LED an' im Text: print ('externe LED 0 einschalten') led0.on() # light elif 'tanzen' im Text: print ('wir führen jetzt Tanz Nummer eins auf') aiy.audio.say("Nun, ich werde mein Bestes geben!",) led0.on() # leuchtet an für i im Bereich (3): servo0.angle=0 servo2.angle=0 sleep(1) servo0.angle=35 servo2.angle=-35 sleep(1) servo0.angle=0 servo2.angle=-35 sleep(1) servo0.angle=-25 servo2.angle=0 sleep(1) servo0.angle=30 servo2.angle=20 sleep(1) servo0.angle=0 servo2.angle=0 led0.off() # light off elif 'Auf Wiedersehen' im Text: aiy.audio.say("Auf Wiedersehen",) aiy.audio.say('Arrivederci',) aiy.audio.say('Auf Wiedersehen',) servo0.angle=0 servo2.angle=0 led0.off() sleep (3) print('tschüss!') break else: print('kein Schlüsselwort erkannt!') aiy.audio.say("Entschuldigung, ich habe dich nicht verstanden",) if _name_ == ' _Haupt Haupt()

Empfohlen: