Sadržaj:

Džek za skakanje s glasovnom kontrolom- Google Voice AIY verzija: 3 koraka
Džek za skakanje s glasovnom kontrolom- Google Voice AIY verzija: 3 koraka

Video: Džek za skakanje s glasovnom kontrolom- Google Voice AIY verzija: 3 koraka

Video: Džek za skakanje s glasovnom kontrolom- Google Voice AIY verzija: 3 koraka
Video: САДОВЫЕ ПЕЙЗАЖИ БУМЕР ИЗУЧАЕТ СЛАНГ (СУБТИТРЫ) 2024, Juli
Anonim
Džek za skakanje s glasovnom kontrolom- AIY verzija Google Voicea
Džek za skakanje s glasovnom kontrolom- AIY verzija Google Voicea
Džek za skakanje s glasovnom kontrolom- AIY verzija Google Voicea
Džek za skakanje s glasovnom kontrolom- AIY verzija Google Voicea
Džek za skakanje s glasovnom kontrolom- AIY verzija Google Voicea
Džek za skakanje s glasovnom kontrolom- AIY verzija Google Voicea
Džek za skakanje s glasovnom kontrolom- AIY verzija Google Voicea
Džek za skakanje s glasovnom kontrolom- AIY verzija Google Voicea

Dakle, dobili ste taj AIY glasovni komplet za Božić i igrali ste se s njim, slijedeći upute. Smiješno, ali sada?

Projekt opisan u nastavku predstavlja jednostavan uređaj koji se može izgraditi pomoću AIY voice HAT -a za Raspberry Pi. Koristi Googleov sistem za prepoznavanje glasa za upravljanje LED diodama i dva servo -a, upravljajući rukama i nogama skakačke utičnice vrlo jednostavnom brzinom.

Softver koji radi u pozadini je modifikacija skripte servo_demo.py, kako je opisano u priručniku AIY glasovnog kompleta. Samo slijedite upute za postavljanje hardvera i softvera. Sam uređaj je jednostavan za izradu i ne zahtijeva mnogo vještina ručne izrade. Osim toga, nož za rezanje, bušilica i lemilica bili bi od pomoći.

Ako treptanjem ruke aktivirate sistem za prepoznavanje glasa i izgovorite 'ruke gore', skakač će podići ruke i noge, 'središte ruku' pomjerit će oba servo pogona u srednji položaj, a na rukama 'noge' biti spušten. Na "lijevo gore" lijeva ruka i noge će biti podignute, a na "desno dolje" desne spuštene, na "desno gore" obrnuto. "Plesati", rasplešat će ga, pa barem nekako. Takođe govori, pogledajte video u prilogu.

Dakle, uz malo truda, možete izgraditi vlastitog robota za ples, ćaskanje i pjevanje.

Kako bi se pojednostavila njegova upotreba, osobito kod manje djece, i kako bi se poboljšao 'čarobni' faktor, gumb na AIY kutiji zamijenjen je kao okidač senzorom blizine. Radi svoje jednostavnosti, upotrijebio sam digitalni senzor udaljenosti iz Pololua koji prepoznaje je li objekt bliži od 5 cm i može se koristiti poput dugmeta. LED diode pokazuju kada uređaj čeka narudžbe, sluša ili „razmišlja“. Servo, senzor i LED diode kontroliraju softverska biblioteka GPIOZero.

Prototip je napravljen od Forexa, ploča od PVC pjene, koje se vrlo lako mogu rezati nožem za rezanje i lijepiti, ali su i prilično stabilne. Slobodno napravite veću, ljepšu, poboljšanu ili otmjeniju verziju, ali bilo bi ljubazno da dokumentirate i predstavite svoja poboljšanja.

Možete koristiti obje strane tijela, ovisno o tome želite li predstaviti pokretnu opremu ili imati lijep raspored prilagođen djeci. --------- "Hampelmann" je njemački izraz za "skakački dizalicu", koji ima određene konotacije.

Korak 1: Korišteni materijali

Korišćeni materijali
Korišćeni materijali
Korišćeni materijali
Korišćeni materijali

Raspberry Pi 3; 32 £ u Pimoroniju, UK

AIY glasovni komplet; 25 £ u Pimoroniju, UK

Pololu digitalni senzor udaljenosti sa Sharp senzorom, 5 cm; 5,90 € na Exp-tec.de

Dva servo servera od 9 g

Dvije bijele LED diode i otpornik

Neki zaglavlja i kratkospojni kablovi

Forex ploča od 2 mm, 250 x 500 mm; 1,70 € u Modulor -u, Berlin, Njemačka

M3 vijci, matice i podloške za povezivanje svih pokretnih dijelova. Koristio sam šest 10 i četiri najlonske vijke od 16 mm.

Šest vijaka i matica M2 za pričvršćivanje servo pogona na ploče i povezivanje servo pogona i zupčanika.

Nekoliko kapi ljepila za plastiku

Korak 2: Montaža i upotreba uređaja

Sklapanje i upotreba uređaja
Sklapanje i upotreba uređaja
Sklapanje i upotreba uređaja
Sklapanje i upotreba uređaja
Sklapanje i upotreba uređaja
Sklapanje i upotreba uređaja

Što se tiče samog AIY glasovnog kompleta, samo slijedite upute u opisu koji dolazi s kompletom, uključujući odjeljak o servo pogonu. Preporučio bih lemljenje nekoliko tropolnih zaglavlja na servo portove na AIY glasovnom prekidu, tako da možete vrlo jednostavno spojiti servo, senzor i LED diode pomoću HAT-a.

Što se tiče priključka za skakanje, možete ili koristiti crteže koje sam ovdje naveo kao svg i PDF datoteke kao predložak ili ih samo izmijeniti prema vlastitim zamislima. Možda biste željeli zadržati osnovni raspored zupčanika koji pokreće noge i ruku skakačice, pazeći da udaljenost između točke okretanja i zupčanika bude ista na servo, ruci i nozi.

Alternativno, možete izgraditi i verziju da se ruke i noge pokreću izravno pomoću četiri odvojena servo -a ili naprednijom brzinom.

Pomoću crteža izrežite komade s ploče Forex, kartona ili šperploče i izbušite rupe na odgovarajućim položajima. Zalijepite komade udaljenosti na zakretne točke ruku i nogu, osiguravajući dobro poravnanje rupa.

Pričvrstite servomotore i pokretne dijelove na osnovnu ploču. Dodajte senzor udaljenosti i LED diodu kako je prikazano. Servomotori su pričvršćeni vijcima M2, svi pokretni dijelovi vijcima M3. Koristio sam najlonske vijke M3, ali samo iz estetskih razloga.

Provjerite jesu li servo krakovi postavljeni u srednji položaj. Spojite servo krakove i zupčanike, u tu svrhu sam koristio vijke M2.

Priključite servo, LED diode i senzor udaljenosti na servo konektore na AIY ploči. Možda će vam trebati neki produžni/kratkospojni kablovi. Priključio sam lijevi servo na “servo0” (GPIO 26), desni servo na “servo2” (GPIO 13), LED diode na “servo5” (GPIO 24), a senzor na “servo3” (GPIO 5) na AIY -u glas HAT.

Kopirajte priloženu datoteku “Hampelmann.py” u podmapu AIY “src” i učinite je izravno izvršnom za svakoga. Da biste to učinili, možete odabrati datoteku u upravitelju datoteka, zatim desnim tasterom miša odabrati Svojstva, odabrati Dozvole, otići na Izvršiti, odabrati ~ bilo koga. Ili napišite “chmod +x src/Hampelmann.py” u dev konzolu.

Provjerite je li sve postavljeno na mjesto i fiksirano ili po potrebi pomično. Otvorite Dev komandnu liniju, unesite “src/Hampelmann.py” i pokrenite program. Ako pomaknete ruku ili prste ispred senzora udaljenosti, AIY jedinica će zatražiti narudžbe, a LED diode će treptati. Implementirane naredbe su “desno/lijevo/ruke gore/dolje/u sredini”, “ples”, “LED uključeno/isključeno” i “zbogom”.

Play. Pomaknite ruku ispred senzora, govorite kada se to od vas zatraži i dajte uređaju malo vremena da reagira. Latencija je prilično velika. Crtl+C ili „Goodbye“će zaustaviti program.

Datoteku možete izmijeniti pomoću Nano -a ili drugog jednostavnog uređivača teksta.

Napomene: Imajte na umu da se neke riječi i izrazi prepoznaju kao riječi koje počinju velikim slovom, kao ‘centar’ ili ‘desno središte’, jer druge nisu, npr. 'Pravo gore'. Morate koristiti tačan obrazac koji je vratio modul za prepoznavanje glasa da biste pokrenuli neku radnju.

Korak 3: Python skripta

Kao što je ranije spomenuto, skripta je zasnovana na skripti servo_demo.py iz AIY glasovnih uputa, s nekim dodacima. Prva verzija je datoteka Hampelmann.py koju ćete pronaći u prilogu. AngularServo iz GPIOZero -a omogućava da se ograniči opseg delovanja servo -a i da se tačno definiše koliko daleko će se kretati. Ali više volim britanski glas u odnosu na originalni. Uređaj takođe može govoriti, ali ne razume (?), Engleski, nemački, italijanski, francuski i španski. Ispod ćete pronaći pismo Hampelmann2.py, sa britanskim glasom, te malo talijanskog i njemačkog. Imajte na umu da morate izvršiti skripte da biste ih pokrenuli.

#!/usr/bin/env python3 # Ova skripta je adaptacija skripte servo_demo.py za AIY glas HAT, # optimizirana za AIY skakaonicu uvoz aiy.audio uvoz aiy.cloudspeech uvoz aiy.voicehat sa gpiozero import LED iz gpiozero uvoz AngularServo iz gpiozero import Dugme iz vremena uvoza sleep sleep main (): prepoznavač = aiy.cloudspeech.get_recognizer () prepoznavač.expect_phrase ('desno gore') prepoznavač.expect_phrase ('desno dolje') prepoznavač.expect_phrase ('Desno Centar ') # velika slova postoje namjerno prepoznavač.expect_phrase (' lijevo gore ') prepoznavač.expect_phrase (' lijevo dolje ') prepoznavač.expect_phrase (' lijevi centar ') prepoznavač.expect_phrase (' ruke gore ') prepoznavač.expect_phrase ('ruke dolje') prepoznavač.expect_phrase ('centar za ruke') prepoznavač.expect_phrase ('Ples') prepoznavač.expect_phrase ('LED uključen') prepoznavač.expect_phrase ('LED isključen') prepoznavač.expect_phrase ('zbogom') aiy.audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1. povezivanje ili, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3. konektor, GPIO 13 led0 = LED (24) # LED diode su spojene na servo5/GPIO 24 distance = Tipka (5) # senzor udaljenosti je spojen na servo3/GPIO 05 # ostali: GPIO 6 na servo1, 12 na servo4 aiy.audio.say ("Zdravo!",) aiy.audio.say ("Za početak, pomaknite ruku blizu senzora",) dok je True: led0.on () # LED diode na ispisu ("Da biste aktivirali prepoznavanje glasa, pomaknite ruku blizu senzora udaljenosti, a zatim govorite") print ('Očekivane ključne riječi su: ruke/lijevo/desno gore/dolje/u sredinu,') print ('Uključeno/isključeno LED svjetlo, ples i zbogom.') print () distance.wait_for_press () print ('Slušanje …') aiy.audio.say ("Molimo dajte svoje naredbe",) led0.blink () # svjetlo trepćući tekst = prepoznavač.recognize () ako je tekst Nijedan: aiy.audio.say ('Žao mi je, nisam vas čuo.',) else: print ('Rekli ste' ', tekst,' "') # Omogućava vam provjerite interpretaciju sistema ako je 'desno gore' u tekstu: print ('Pomicanje servo0 na maksimalnu poziciju') servo0.angle = 35 elif 'desno dolje' u tekstu: print ('Premještanje servo0 na minimalnu poziciju ') servo0.angle = -35 elif' Desni centar 'u tekstu: #ispravni natpisi su kritični ispis (' Pomicanje servo0 na srednju poziciju ') servo0.angle = 0 elif' lijevo gore 'u tekstu: print (' Premještanje servo2 u maksimalni položaj ') servo2.angle = -35 elif' lijevo dolje 'u tekstu: print (' Premještanje servo2 u minimalni položaj ') servo2.angle = 35 elif' lijevo središte 'u tekstu: print (' Premještanje servo2 u srednja pozicija ') servo2.angle = 0 elif' ruke gore 'u tekstu: print (' Premještanje servo2 u maksimalni položaj ') servo2.angle = -35 servo0.angle = 35 elif' ruke dolje 'u tekstu: print (' Premještanje servo2 do minimalnog položaja ') servo2.angle = 35 servo0.angle = -35 elif' ruke u sredini 'u tekstu: print (' Pomicanje servo2 u srednji položaj ') servo2.angle = 0 servo0.angle = 0 elif' LED isključen ' u tekstu: print ('isključivanje vanjske LED 0') led0.off () elif 'LED uključena' u tekstu: print ('uključivanje vanjske LED 0') led0.on () # light elif 'dance' u tekstu: print ('sada izvodi ples broj jedan') aiy.audio.say ("Pa, potrudit ću se!",) led0.on () # svjetlo uključeno za i u rasponu (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 () # svjetlo isključeno elif 'zbogom' u tekstu: aiy.audio.say ("Zbogom",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) servo0.angle = 0 servo2.angle = 0 led0.off () sleep (3) print ('baj!') break else: print ('nijedna ključna riječ nije prepoznata!') aiy.audio.say ("Žao mi je, nisam vas razumio",) if _name_ == ' _main_ ': main ()

Preporučuje se: