Spisu treści:

Sterowany głosem skok do skakania-wersja Google Voice AIY: 3 kroki
Sterowany głosem skok do skakania-wersja Google Voice AIY: 3 kroki

Wideo: Sterowany głosem skok do skakania-wersja Google Voice AIY: 3 kroki

Wideo: Sterowany głosem skok do skakania-wersja Google Voice AIY: 3 kroki
Wideo: Super Mario Bros. ROM Hacks - But does it work on Real Hardware? 2024, Lipiec
Anonim
Sterowany głosem skok do skakania - wersja Google Voice AIY
Sterowany głosem skok do skakania - wersja Google Voice AIY
Sterowany głosem skok do skakania - wersja Google Voice AIY
Sterowany głosem skok do skakania - wersja Google Voice AIY
Sterowany głosem skok do skakania - wersja Google Voice AIY
Sterowany głosem skok do skakania - wersja Google Voice AIY
Sterowany głosem skok do skakania - wersja Google Voice AIY
Sterowany głosem skok do skakania - wersja Google Voice AIY

Więc masz zestaw głosowy AIY na Boże Narodzenie i bawisz się nim, postępując zgodnie z instrukcjami. To zabawne, ale teraz?

Opisany poniżej projekt przedstawia proste urządzenie, które można zbudować za pomocą nakładki głosowej AIY dla Raspberry Pi. Wykorzystuje system rozpoznawania głosu Google do sterowania diodami LED i dwoma serwomechanizmami, napędzając ramiona i nogi skaczącego podnośnika za pomocą bardzo prostego mechanizmu.

Oprogramowanie pracujące w tle jest modyfikacją skryptu servo_demo.py, tak jak zostało to opisane w instrukcji zestawu głosowego AIY. Wystarczy postępować zgodnie z podanymi tam instrukcjami, aby skonfigurować sprzęt i oprogramowanie. Samo urządzenie jest łatwe w budowie i nie wymaga dużych umiejętności rzemieślniczych. Dodatkowo przydałby się nóż do cięcia, wiertarka i lutownica.

Jeśli aktywujesz system rozpoznawania głosu mrugnięciem ręki i powiesz „ręce do góry”, pajacyk podniesie ręce i nogi, „środek rąk” przesunie oba serwa do pozycji środkowej, a „ręce w dół” ręce i nogi będą być obniżona. Na „lewo do góry” lewa ręka i nogi zostaną uniesione, na „prawo w dół” prawe opuszczone, na „prawo do góry” odwrotnie. „Taniec” sprawi, że będzie tańczyć, przynajmniej w pewnym sensie. To też mówi, proszę spojrzeć na załączony film.

Więc przy niewielkim wysiłku możesz zbudować własnego robota tańczącego, rozmawiającego i śpiewającego.

Aby uprościć jego użytkowanie, zwłaszcza przez mniejsze dzieci, i zwiększyć czynnik „magii”, przycisk na pudełku AIY został zastąpiony jako wyzwalacz przez czujnik zbliżeniowy. Dla uproszczenia użyłem cyfrowego czujnika odległości firmy Pololu, który rozpoznaje, czy obiekt znajduje się bliżej niż 5 cm i może być używany bardzo podobnie jak przycisk. Diody LED wskazują, kiedy urządzenie czeka na rozkazy, słucha lub „myśli”. Serwa, czujnik i diody LED są sterowane przez bibliotekę oprogramowania GPIOZero.

Prototyp został zbudowany z Forex, płyt z pianki PCV, które można bardzo łatwo ciąć nożem i sklejać, ale jest również dość stabilny. Możesz stworzyć większą, ładniejszą, ulepszoną lub bardziej wymyślną wersję, ale byłoby miło, gdybyś udokumentował i przedstawił swoje ulepszenia.

Możesz użyć obu stron korpusu, w zależności od tego, czy chcesz zaprezentować ruchomy sprzęt, czy też mieć ładny, przyjazny dzieciom układ. ---------"Hampelmann" to niemiecki termin oznaczający "podskok", mający pewne konotacje.

Krok 1: Użyte materiały

Użyte materiały
Użyte materiały
Użyte materiały
Użyte materiały

Raspberry Pi 3; 32 £ w Pimoroni, Wielka Brytania

Zestaw głosowy AIY; 25 £ w Pimoroni, Wielka Brytania

Przebicie cyfrowego czujnika odległości Pololu z czujnikiem Sharp, 5 cm; 5,90 € w Exp-tec.de

Dwa serwa 9g

Dwie białe diody LED i rezystor

Niektóre nagłówki i kable rozruchowe

Płyta Forex 2 mm, 250 x 500 mm; 1,70 € w Modulor, Berlin, Niemcy

Śruby M3, nakrętki i podkładki do łączenia wszystkich ruchomych części. Użyłem sześciu śrub nylonowych 10 i czterech 16 mm.

Sześć śrub i nakrętek M2 do mocowania serw do płyt oraz łączenia ramion i kół zębatych serw.

Kilka kropli plastikowego kleju

Krok 2: Montaż i użytkowanie urządzenia

Montaż i użytkowanie urządzenia
Montaż i użytkowanie urządzenia
Montaż i użytkowanie urządzenia
Montaż i użytkowanie urządzenia
Montaż i użytkowanie urządzenia
Montaż i użytkowanie urządzenia

Jeśli chodzi o sam zestaw głosowy AIY, po prostu postępuj zgodnie z instrukcjami w opisie dołączonym do zestawu, w tym w sekcji o serwo. Polecam przylutować kilka złączy trzypinowych do portów serwo na wyjściu głosowym AIY, dzięki czemu można bardzo łatwo podłączyć serwa, czujnik i diody LED do HAT.

Jeśli chodzi o pajacyk, możesz użyć rysunków, które udostępniłem tutaj jako pliki svg i PDF jako szablonu, lub po prostu zmodyfikować je zgodnie z własnymi pomysłami. Możesz zachować podstawowy układ kół zębatych napędzających nogi i ramię skoczka, upewniając się, że odległość między punktem obrotowym a zębatką jest taka sama na serwo, ramieniu i nodze.

Alternatywnie można również skonstruować wersję, w której ramiona i nogi są napędzane bezpośrednio czterema oddzielnymi serwomechanizmami lub bardziej zaawansowaną przekładnią.

Korzystając z rysunku, wytnij kawałki z płyty Forex, tektury lub sklejki i wywierć otwory w odpowiednich pozycjach. Przyklej elementy dystansowe do punktów obrotowych ramion i nóg, zapewniając dobre wyrównanie otworów.

Przymocuj serwa i ruchome części do płyty podstawy. Dodaj czujnik odległości i diodę LED, jak wskazano. Serwa są mocowane śrubami M2, wszystkie ruchome części śrubami M3. Użyłem śrub Nylon M3, ale tylko ze względów estetycznych.

Sprawdź, czy ramiona serwa znajdują się w środkowej pozycji. Połącz ramiona serw i zębatki, do tego celu użyłem śrub M2.

Podłącz serwa, diody LED i czujnik odległości do złączy serwo na płycie AIY. Możesz potrzebować kabli przedłużających / połączeniowych. Podłączyłem lewe serwo do „servo0” (GPIO 26), prawe serwo do „servo2” (GPIO 13), diody do „servo5” (GPIO 24), a czujnik do „servo3” (GPIO 5) na AIY głos KAPELUSZ.

Skopiuj dostarczony plik „Hampelmann.py” do podfolderu AIY „src” i spraw, aby był bezpośrednio wykonywalny dla każdego. Aby to zrobić, możesz wybrać plik w menedżerze plików, a następnie kliknąć prawym przyciskiem myszy i wybrać Właściwości, wybrać Uprawnienia, przejść do Wykonaj, wybrać ~ kogokolwiek. Lub napisz „chmod +x src/Hampelmann.py” w konsoli dewelopera.

Sprawdź, czy wszystko jest na swoim miejscu i naprawione lub ruchome, gdy jest to wymagane. Otwórz wiersz poleceń Dev, wpisz „src/Hampelmann.py” i uruchom program. Jeśli przesuniesz rękę lub palce przed czujnik odległości, jednostka AIY poprosi o rozkazy, a diody LED będą migać. Realizowane rozkazy to „prawo/lewo/ręce góra/dół/środek”, „taniec”, „włączanie/wyłączanie diody” i „do widzenia”.

Bawić się. Przesuń rękę przed czujnik, mów, gdy zostaniesz o to poproszony, i daj urządzeniu trochę czasu na reakcję. Opóźnienie jest dość wysokie. Crtl+C lub „Do widzenia” zatrzyma program.

Możesz zmodyfikować plik za pomocą Nano lub innego prostego edytora tekstu.

Uwagi: Należy pamiętać, że niektóre słowa i terminy są rozpoznawane jako słowa zaczynające się od dużej litery, jako „Centrum” lub „Prawy środek”, podczas gdy inne nie, np. 'już zaraz'. Aby wywołać jakąś akcję, musisz użyć dokładnego formularza zwróconego przez moduł rozpoznawania głosu.

Krok 3: Skrypt Pythona

Jak wspomniano wcześniej, skrypt bazuje na skrypcie servo_demo.py z instrukcji głosowych AIY, z pewnymi dodatkami. Pierwsza wersja to plik Hampelmann.py, który znajdziesz w załączeniu. AngularServo firmy GPIOZero pozwala ograniczyć zasięg działania serwomechanizmu i dokładnie określić, jak daleko ma się poruszać. Ale wolę głos brytyjski od oryginalnego. Urządzenie może również mówić, ale nie rozumie (?), po angielsku, niemiecku, włosku, francusku i hiszpańsku. Poniżej znajduje się skrypt Hampelmann2.py, z brytyjskim głosem, z odrobiną włoskiego i niemieckiego. Pamiętaj, że musisz sprawić, aby skrypty były wykonywalne, aby je uruchomić.

#!/usr/bin/env python3# Ten skrypt jest adaptacją skryptu servo_demo.py dla AIY voice HAT, # zoptymalizowanym dla AIY jumping jack import aiy.audio import aiy.cloudspeech import aiy.voicehat z gpiozero import LED z gpiozero import AngularServo z gpiozero import Przycisk od czasu import sleep def main(): rozpoznawanie = aiy.cloudspeech.get_recognizer() rozpoznawanie.expect_phrase('w prawo w górę') rozpoznanie.expect_phrase('w prawo w dół') rozpoznanie.expect_phrase('w prawo Na środku') # wielkie litery są celowo resolver.expect_phrase('w lewo w górę') resolver.expect_phrase('w lewo w dół') resolver.expect_phrase('w lewo w srodku') resolver.expect_phrase('ręce w górę')cognizer.expect_phrase ('ręce w dół') resolver.expect_phrase('Centrum rąk')cognizr.expect_phrase('Taniec')cognizr.expect_phrase('LED włączona') resolver.expect_phrase('LED wyłączona')cognizer.expect_phrase('do widzenia') aiy.audio.get_recorder().start() servo0 = AngularServo(26, min_angle=-40, max_angle=40) # pierwsze połączenie lub, GPIO 26 servo2 = AngularServo(13, min_angle=-40, max_angle=40) # 3rd złącze, GPIO 13 led0 = LED(24) # Diody LED są podłączone do serwo5/GPIO 24 distance= Button(5) # czujnik odległości podłączony do servo3/GPIO 05 # inne: GPIO 6 na servo1, 12 na servo4 aiy.audio.say("Cześć!",) aiy.audio.say("Na początek zbliż rękę do czujnika",) podczas gdy True: led0.on() # Diody na print("Aby aktywować rozpoznawanie głosu, zbliż rękę do czujnika odległości, a następnie mów") print('Oczekiwane słowa kluczowe to: ręce/lewo/prawo góra/dół/środek, ') print('Włącz/wyłącz diodę, tańcz i pożegnaj.') print() distance.wait_for_press() print('Słucham…') aiy.audio.say("Proszę wydać rozkazy",) led0.blink() # light blink text =cognizer.recognize() jeśli tekst to None: aiy.audio.say('Przepraszam, nie słyszałem cię.',) else: print('Powiedziałeś "', text, '"') # Pozwala ci sprawdź interpretację systemu jeśli 'right up' w tekście: print('Przenoszenie servo0 do maksymalnej pozycji') servo0.angle=35 elif 'right down' in text: print('Przenoszenie servo0 do pozycji maksymalnej') do pozycji minimalnej') servo0.angle=-35 elif 'Prawy środek' w tekście: #prawidłowe litery są krytyczne print('Przenoszenie servo0 do środkowej pozycji') servo0.angle=0 elif 'w lewo' w tekście: print(' Przenoszenie serwa2 do pozycji maksymalnej') servo2.angle=-35 elif 'w lewo w dół' w tekście: print('Przenoszenie serwa2 do pozycji minimalnej') servo2.angle=35 elif 'w lewo do środka' w tekście: print('Przenoszenie serwa2 do pozycji minimalnej') pozycja środkowa') servo2.angle=0 elif 'ręce do góry' w tekście: print('Przesuwanie serwa2 do maksymalnej pozycji') servo2.angle=-35 servo0.angle=35 elif 'ręce w dół' w tekście: print('Przesuwanie servo2 do pozycji minimalnej') servo2.angle=35 servo0.angle=-35 elif 'hands Center' w tekście: print('Przesuwam servo2 do pozycji środkowej') servo2.angle=0 servo0.angle=0 elif 'LED wyłączona' w tekście: print ('wyłączenie zewnętrznej diody 0') led0.off() elif 'LED on' w tekście: print ('włączenie zewnętrznej diody 0') led0.on() # light elif 'dance' w tekście: print ('teraz wykonuje taniec numer jeden') aiy.audio.say("Cóż, postaram się jak najlepiej!",) led0.on() # świeci się dla i w zakresie (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() # światło wyłączone elif 'do widzenia' w tekście: aiy.audio.say("Do widzenia",) aiy.audio.say('Przybycie',) aiy.audio.say('Auf Wiedersehen',) servo0.angle=0 servo2.angle=0 led0.off() sleep (3) print('pa!') break else: print('nie rozpoznano słowa kluczowego!') aiy.audio.say("Przepraszam, nie zrozumiałem cię",) if _name_ == ' _główny_': główny()

Zalecana: