Kazalo:

Glasovno nadzorovani skakalni vtič- različica Google Voice AIY: 3 koraki
Glasovno nadzorovani skakalni vtič- različica Google Voice AIY: 3 koraki

Video: Glasovno nadzorovani skakalni vtič- različica Google Voice AIY: 3 koraki

Video: Glasovno nadzorovani skakalni vtič- različica Google Voice AIY: 3 koraki
Video: Росс Култхарт: НЛО, записки Уилсона, проект SAFIRE [Часть 1] 2024, November
Anonim
Glasovno vodeni skakalni vtič- različica Google Voice AIY
Glasovno vodeni skakalni vtič- različica Google Voice AIY
Glasovno nadzorovani skakalni vtič- različica Google Voice AIY
Glasovno nadzorovani skakalni vtič- različica Google Voice AIY
Glasovno nadzorovani skakalni vtič- različica Google Voice AIY
Glasovno nadzorovani skakalni vtič- različica Google Voice AIY
Glasovno nadzorovani skakalni vtič- različica Google Voice AIY
Glasovno nadzorovani skakalni vtič- različica Google Voice AIY

Torej imate za božič tisti glasovni komplet AIY in se z njim po navodilih poigrali. Smešno, a zdaj?

Projekt, opisan v nadaljevanju, predstavlja preprosto napravo, ki jo je mogoče zgraditi z glasovalnim klobukom AIY za Raspberry Pi. Uporablja Googlov sistem za prepoznavanje glasu za krmiljenje LED in dveh servomotorjev, ki z zelo preprosto prestavo poganja roke in noge skakalnega vtičnice.

Programska oprema, ki deluje v ozadju, je sprememba skripta servo_demo.py, kot je opisano v priročniku za glasovni komplet AIY. Upoštevajte tam navedena navodila za nastavitev strojne in programske opreme. Naprava je enostavna za izdelavo in ne zahteva veliko ročnih spretnosti. Poleg tega bi bili v pomoč nož za rezanje, vrtalnik in spajkalnik.

Če z miganjem roke aktivirate sistem za prepoznavanje glasu in rečete "roke navzgor", bo skakalna vtičnica dvignila roke in noge, "središče rok" bo premaknilo oba servomotorja v srednji položaj, na rokah in nogah pa "roke navzdol" znižati. Na levi strani navzgor bodo leva roka in noge dvignjene, na desni pa spuščene desne, na desni navzgor pa obratno. "Ples", bo naredil ples, no vsaj nekako. Prav tako govori, poglejte v priloženem videoposnetku.

Tako lahko z malo truda sestavite svojega plesnega, klepetajočega in pojočega robota.

Da bi poenostavili njegovo uporabo, zlasti pri manjših otrocih, in povečali "čarobni" faktor, je gumb na škatli AIY kot sprožilec zamenjal senzor bližine. Zaradi enostavnosti sem uporabil digitalni senzor razdalje Pololu, ki prepozna, če je predmet bližje 5 cm, in ga lahko uporabljamo zelo podobno kot gumb. LED diode označujejo, kdaj naprava čaka na naročila, posluša ali "razmišlja". Servomotorje, senzor in LED diode nadzira knjižnica programske opreme GPIOZero.

Prototip je bil izdelan iz Forex -ovih plošč iz PVC pene, ki jih je mogoče zelo enostavno razrezati z rezalnim nožem in lepiti, vendar je tudi precej stabilen. Ne pozabite zgraditi večje, lepše, izboljšane ali bolj domišljijske različice, vendar bi bilo vljudno, če bi dokumentirali in predstavili svoje izboljšave.

Uporabite lahko obe strani telesa, odvisno od tega, ali želite predstaviti premično opremo ali imeti lepo, otrokom prijazno postavitev. --------- "Hampelmann" je nemški izraz za "jumping jack", ki ima določene konotacije.

Korak: Uporabljeni materiali

Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali

Malina Pi 3; 32 £ v Pimoroniju v Veliki Britaniji

Glasovni komplet AIY; 25 £ v Pimoroniju v Veliki Britaniji

Pololu digitalni senzor razdalje z Sharp senzorjem, 5 cm; 5,90 € na Exp-tec.de

Dva servomotorja po 9 g

Dve beli LED in upor

Nekaj glav in mostičnih kablov

2 mm Forex plošča, 250 x 500 mm; 1,70 € v Modulorju, Berlin, Nemčija

Vijaki, matice in podložke M3 za povezavo vseh gibljivih delov. Uporabil sem šest 10 in štirih 16 mm najlonskih vijakov.

Šest vijakov in matic M2 za pritrditev servomotorjev na plošče in povezavo servo krmilnikov in zobnikov.

Nekaj kapljic lepila za plastiko

2. korak: Montaža in uporaba naprave

Sestavljanje in uporaba naprave
Sestavljanje in uporaba naprave
Sestavljanje in uporaba naprave
Sestavljanje in uporaba naprave
Sestavljanje in uporaba naprave
Sestavljanje in uporaba naprave

Kar zadeva glasovni komplet AIY, sledite navodilom v opisu, ki je priložen kompletu, vključno z razdelkom o servo. Priporočam, da na servo vhode pri glasovni prekinitvi AIY spajkate več tri-polnih glav, tako da lahko s HAT-om zelo enostavno povežete servomotorje, senzor in LED.

Kar zadeva skakalnico, lahko kot predloge uporabite risbe, ki sem jih navedel tukaj, kot datoteke svg in PDF ali pa jih preprosto spremenite v skladu s svojimi zamislimi. Morda boste želeli ohraniti osnovno postavitev orodja, ki poganja noge in roko skakalne vtičnice, s čimer zagotovite, da je razdalja med vrtilno točko in prestavo enaka na servo, roki in nogi.

Lahko pa tudi sestavite različico, kjer bi roke in noge poganjali neposredno s štirimi ločenimi servomotorji ali z naprednejšo prestavo.

Z risbo izrežite kose iz plošče Forex, kartona ali vezanega lesa in izvrtajte luknje na ustreznih mestih. Kolence razdalje prilepite na vrtljive točke rok in nog, da zagotovite dobro poravnavo lukenj.

Servomotorje in gibljive dele pritrdite na osnovno ploščo. Dodajte senzor razdalje in LED, kot je prikazano. Servomotorji so pritrjeni z vijaki M2, vsi gibljivi deli z vijaki M3. Uporabil sem najlonske vijake M3, vendar samo iz estetskih razlogov.

Preverite, ali so servo ročice nameščene v srednjem položaju. Priključite servo ročice in zobnike, v ta namen sem uporabil vijake M2.

Na servo priključke na plošči AIY pritrdite servomotorje, LED in senzor razdalje. Morda boste potrebovali nekaj podaljškov/mostičnih kablov. Levi servo sem priključil na “servo0” (GPIO 26), desni servo na “servo2” (GPIO 13), LED na “servo5” (GPIO 24) in senzor na “servo3” (GPIO 5) na AIY glas KOP.

Kopirajte priloženo datoteko »Hampelmann.py« v podmapo AIY »src« in jo naredite neposredno izvedljivo za vsakogar. Če želite to narediti, lahko v upravitelju datotek izberete datoteko, nato z desno miškino tipko kliknete in izberete Lastnosti, izberete Dovoljenja, pojdite na Izvedi, izberite ~ kdorkoli. Ali pa v konzolo za razvijalce napišite »chmod +x src/Hampelmann.py«.

Preverite, ali je vse nameščeno in pritrjeno ali po potrebi premično. Odprite ukazno vrstico Dev, vnesite »src/Hampelmann.py« in zaženite program. Če premaknete roko ali prste pred senzorjem razdalje, bo enota AIY zahtevala naročila, LED -diode pa bodo utripale. Izvedena naročila so »desno/levo/roke gor/dol/na sredino«, »ples«, »LED vklop/izklop« in »zbogom«.

Igraj. Premaknite roko pred senzor, govorite, ko vas vprašajo, in dajte napravi nekaj časa, da se odzove. Latenca je precej velika. Crtl+C ali »Zbogom« bosta program ustavila.

Datoteko lahko spremenite z uporabo Nano ali drugega preprostega urejevalnika besedil.

Opombe: Zavedajte se, da so nekatere besede in izrazi prepoznani kot besede, ki se začnejo z veliko začetnico, kot 'Center' ali 'Right Center', saj druge niso, npr. 'Takoj gor'. Če želite sprožiti nekaj dejanj, morate uporabiti natančen obrazec, ki ga vrne modul za prepoznavanje glasu.

3. korak: Python Script

Kot smo že omenili, skript temelji na skriptu servo_demo.py iz glasovnih navodil AIY z nekaterimi dodatki. Prva različica je datoteka Hampelmann.py, ki jo najdete v priponki. AngularServo iz GPIOZero omogoča omejevanje obsega delovanja servo in natančno določitev, kako daleč se bo premikal. Naprava lahko govori, vendar ne razume (?), Angleško, nemško, italijansko, francosko in špansko. Spodaj najdete skript Hampelmann2.py z britanskim glasom ter malo italijanščine in nemščine. Upoštevajte, da morate za izvajanje skriptov narediti izvedljive.

#!/usr/bin/env python3 # Ta skripta je prilagoditev skripta servo_demo.py za glasovni klobuk AIY, # optimiziran za AIY skakalni uvoz aiy.audio uvoz aiy.cloudspeech uvoz aiy.voicehat iz gpiozero import LED iz gpiozero uvoz AngularServo iz gpiozero import Gumb iz časovnega uvoza sleep sleep def ((prepoznavalec = aiy.cloudspeech.get_recognizer () prepoznavalnik. Expect_phrase ('desno gor')) Sredina ') # velike začetnice so namenoma prepoznač.expect_phrase (' levo gor ') prepoznavalnik.expect_phrase (' levo dol ') prepoznavalnik.expect_phrase (' levo sredino ') prepoznaval.expect_phrase (' roke gor ') prepoznavalnik.expect_phrase ('roke dol') prepoznavalnik.expect_phrase ('center za roke') prepoznavalnik.expect_phrase ('Dance') prepoznavalnik.expect_phrase ('LED vklopljena') prepoznavalnik.expect_phrase ('LED ugasnjena') prepoznavalnik.expect_phrase ('zbogom') aiy.audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1. povezovanje ali, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3. priključek, GPIO 13 led0 = LED (24) # LED sta priključeni na servo5/GPIO 24 distance = Gumb (5) # senzor razdalje je priključen na servo3/GPIO 05 # drugi: GPIO 6 pri servo1, 12 na servo4 aiy.audio.say ("Pozdravljeni!",) aiy.audio.say ("Za začetek premaknite roko blizu senzorja",) medtem ko je True: led0.on () # LED na tiskanju ("Če želite aktivirati prepoznavanje glasu, pomaknite roko blizu senzorja razdalje in nato spregovorite") print ("Pričakovane ključne besede so: roke/levo/desno gor/dol/na sredino") print ('LED za vklop/izklop LED, ples in zbogom.') print () distance.wait_for_press () print ('Poslušanje …') aiy.audio.say ("Prosimo, dajte naročila",) led0.blink () # luč utripajoče besedilo = prepoznavnik.recognize (), če besedilo ni: aiy.audio.say ('Oprostite, nisem vas slišal.',) else: print ('Rekel si' ', besedilo,' "') # Omogoča vam preverite razlago sistemov, če je v besedilu "desno navzgor": print ("Premikanje servo0 v največji položaj") servo0.angle = 35 elif "desno navzdol" v besedilu: print ("Premikanje servo0 do najmanjšega položaja ') servo0.angle = -35 elif' Desno središče 'v besedilu: #pravilni začetniki so kritični natis (' Premik servo0 v srednji položaj ') servo0.angle = 0 elif' levo navzgor 'v besedilu: print (' Premikanje servo2 v največji položaj ') servo2.angle = -35 elif "levo navzdol" v besedilu: print ("Premik servo2 v minimalni položaj") servo2.angle = 35 elif "levo na sredini" v besedilu: print ("Premik servo2 v srednji položaj ') servo2.angle = 0 elif' roke navzgor 'v besedilu: print (' Premikanje servo2 v največji položaj ') servo2.angle = -35 servo0.angle = 35 elif' roke navzdol 'v besedilu: print (' Premikanje servo2 v minimalni položaj ') servo2.angle = 35 servo0.angle = -35 elif' roke na sredini 'v besedilu: print (' Premik servo2 v srednji položaj ') servo2.angle = 0 servo0.angle = 0 elif' LED izklopljen ' v besedilu: print ('izklop zunanje LED 0') led0.off () elif 'LED vklopljen' v besedilu: print ('vklop zunanje LED 0') led0.on () # light elif 'dance' v besedilu: print ('zdaj izvaja ples številka ena') aiy.audio.say ("No, potrudil se bom po najboljših močeh!",) led0.on () # luči vklopljene za i v območju (3): servo0.angle = 0 servo2.angle = 0 spanje (1) servo0.angle = 35 servo2.angle = -35 spanje (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 () # luč izklopljena elif "zbogom" v besedilu: aiy.audio.say ("zbogom",) aiy.audio.say ("Arrivederci",) aiy.audio.say ("Auf Wiedersehen",) servo0.angle = 0 servo2.angle = 0 led0.off () sleep (3) print ('adijo!') break else: print ('ključna beseda ni prepoznana!') aiy.audio.say ("Oprostite, nisem vas razumel",) if _name_ == ' _main_ ': main ()

Priporočena: