Turinys:

Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija: 3 žingsniai
Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija: 3 žingsniai

Video: Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija: 3 žingsniai

Video: Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija: 3 žingsniai
Video: "Conundrum" | Perpetual Testing | Portal 2 Community Maps & Mods 2024, Lapkritis
Anonim
Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija
Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija
Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija
Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija
Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija
Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija
Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija
Balso valdomas šokinėjimo lizdas- „Google Voice AIY“versija

Taigi jūs gavote tą AIY balso rinkinį Kalėdoms ir žaidėte su juo, vadovaudamiesi instrukcijomis. Juokinga, bet dabar?

Toliau aprašytame projekte pateikiamas paprastas įrenginys, kurį galima sukurti naudojant „AIY“balso skrybėlę „Raspberry Pi“. Jis naudoja „Google“balso atpažinimo sistemą, kad valdytų šviesos diodus ir dvi servo sistemas, labai paprasta pavara valdydamas šokinėjančio lizdo rankas ir kojas.

Fone veikianti programinė įranga yra servo_demo.py scenarijaus modifikacija, kaip aprašyta AIY balso rinkinio vadove. Tiesiog vykdykite ten pateiktas instrukcijas, kad nustatytumėte kietąją ir programinę įrangą. Pats prietaisas yra lengvai pagaminamas ir nereikalauja daug rankų darbo įgūdžių. Be to, būtų naudingas pjovimo peilis, grąžtas ir lituoklis.

Jei suaktyvinsite balso atpažinimo sistemą rankos žvilgsniu ir pasakysite „rankos aukštyn“, šokinėjantis lizdas pakels rankas ir kojas, „rankų centras“perkelia abi servo į vidurinę padėtį, o „nuleistos“rankos ir kojos būti nuleistam. „Kairė į viršų“kairė ranka ir kojos bus pakeltos, o „dešinėn žemyn“- dešinės - nuleistos, „dešinėje aukštyn“- atvirkščiai. „Šok“, privers jį šokti, bent jau savotiškai. Tai taip pat kalba, prašome pažiūrėti pridėtą vaizdo įrašą.

Taigi su nedidelėmis pastangomis galite sukurti savo šokantį, kalbantį ir dainuojantį robotą.

Siekiant supaprastinti jo naudojimą, ypač mažesniems vaikams, ir sustiprinti „stebuklingą“veiksnį, AIY dėžutės mygtukas buvo pakeistas artumo jutikliu. Kad būtų paprasčiau, aš naudoju „Pololu“skaitmeninį atstumo jutiklio išjungiklį, kuris atpažįsta, ar objektas yra arčiau nei 5 cm, ir gali būti naudojamas kaip mygtukas. Šviesos diodai rodo, kada įrenginys laukia užsakymų, klausosi ar „galvoja“. Servos, jutikliai ir šviesos diodai valdomi programinės įrangos bibliotekoje „GPIOZero“.

Prototipas buvo pagamintas iš „Forex“, PVC putplasčio plokščių, kurias labai lengva pjaustyti peiliu ir klijuoti, tačiau jis taip pat yra gana stabilus. Nesivaržykite sukurti didesnės, gražesnės, patobulintos ar įmantresnės versijos, tačiau būtų malonu, jei dokumentuotumėte ir pristatytumėte savo patobulinimus.

Galite naudoti abi kūno puses, priklausomai nuo to, ar norite pristatyti judančią įrangą, ar turėti gražų, vaikams patogų išdėstymą. --------- „Hampelmann“yra vokiškas terminas „šokinėjantis lizdas“, turintis tam tikras konotacijas.

1 žingsnis: naudojamos medžiagos

Naudotos medžiagos
Naudotos medžiagos
Naudotos medžiagos
Naudotos medžiagos

Raspberry Pi 3; 32 £ Pimoroni mieste, JK

AIY balso rinkinys; 25 svarų sterlingų Pimoroni mieste, JK

„Pololu“skaitmeninis atstumo jutiklis su „Sharp“jutikliu, 5 cm; 5,90 € „Exp-tec.de“

Dvi 9 g servos

Du balti šviesos diodai ir rezistorius

Kai kurios antraštės ir jungiamieji kabeliai

2 mm Forex plokštė, 250 x 500 mm; 1,70 € „Modulor“, Berlynas, Vokietija

M3 varžtai, veržlės ir poveržlės, skirtos visoms judančioms dalims sujungti. Aš naudojau šešis 10 ir keturis 16 mm nailono varžtus.

Šeši M2 varžtai ir veržlės, skirtos servo servetėlėms pritvirtinti prie plokščių ir prijungti servo rankas ir krumpliaračius.

Keli lašai plastikinių klijų

2 žingsnis: Įrenginio surinkimas ir naudojimas

Prietaiso surinkimas ir naudojimas
Prietaiso surinkimas ir naudojimas
Prietaiso surinkimas ir naudojimas
Prietaiso surinkimas ir naudojimas
Prietaiso surinkimas ir naudojimas
Prietaiso surinkimas ir naudojimas

Kalbant apie patį AIY balso rinkinį, tiesiog vykdykite instrukcijas, pateiktas aprašyme, kuris pateikiamas kartu su rinkiniu, įskaitant skyrių apie servo. Aš rekomenduočiau lituoti kelias trijų kontaktų antraštes prie AIY balso pertraukos servo prievadų, todėl su HAT galite labai lengvai prijungti servo, jutiklį ir šviesos diodus.

Kalbant apie šokinėjantį lizdą, galite naudoti čia pateiktus brėžinius kaip svg- ir PDF failus kaip šabloną arba tiesiog modifikuoti juos pagal savo idėjas. Galbūt norėsite išlaikyti pagrindinį krumpliaračio, varančio šokinėjimo kėliklio kojas ir ranką, išdėstymą, užtikrindami, kad atstumas tarp pasukimo taško ir pavaros būtų vienodas servo, rankos ir kojos srityse.

Arba taip pat galite sukurti versiją, jei rankos ir kojos būtų tiesiogiai varomos keturiais atskirais servo prietaisais arba pažangesne pavara.

Naudodami piešinį, supjaustykite gabalus iš Forex, kartono ar faneros plokštės ir išgręžkite skyles atitinkamose vietose. Klijuokite atstumo gabalus prie sukamųjų rankų ir kojų taškų, užtikrindami gerą skylių išlyginimą.

Pritvirtinkite servo ir judančias dalis prie pagrindo plokštės. Pridėkite atstumo jutiklį ir šviesos diodą, kaip nurodyta. Servos tvirtinamos M2 varžtais, visos judančios dalys - M3 varžtais. Aš naudoju nailono M3 varžtus, bet tik dėl estetinių priežasčių.

Patikrinkite, ar servovarikliai yra viduryje. Prijunkite servovariklius ir krumpliaračius, šiam tikslui naudojau M2 varžtus.

Pritvirtinkite servo, šviesos diodus ir atstumo jutiklį prie AIY plokštės servo jungčių. Jums gali prireikti pailgėjimo/jungiamųjų kabelių. Aš prijungiau kairįjį servo prie „servo0“(GPIO 26), dešinįjį prie „servo2“(GPIO 13), šviesos diodus prie „servo5“(GPIO 24), o jutiklį prie „servo3“(GPIO 5) AIY balsas KEPURĖ.

Nukopijuokite pateiktą „Hampelmann.py“failą į AIY „src“pakatalogį ir padarykite jį tiesiogiai vykdomą visiems. Norėdami tai padaryti, failų tvarkyklėje galite pasirinkti failą, tada dešiniuoju pelės mygtuku spustelėkite ir pasirinkite Ypatybės, pasirinkite Leidimai, eikite į Vykdyti, pasirinkite bet kas. Arba kūrėjų pulte parašykite „chmod +x src/Hampelmann.py“.

Patikrinkite, ar viskas nustatyta ir pritvirtinta, ar prireikus gali būti perkelta. Atidarykite „Dev“komandų eilutę, įveskite „src/Hampelmann.py“ir paleiskite programą. Jei judinsite ranką ar pirštus priešais atstumo jutiklį, AIY įrenginys paprašys užsakymų ir šviesos diodai mirksės. Įvykdyti užsakymai yra „dešinė/kairė/rankos aukštyn/žemyn/centras“, „šokis“, „LED įjungimas/išjungimas“ir „atsisveikinimas“.

Žaisti. Judinkite ranką priešais jutiklį, kalbėkite, kai jūsų paprašo, ir duokite prietaisui šiek tiek laiko reaguoti. Latencija yra gana didelė. Crtl+C arba „Goodbye“sustabdys programą.

Failą galite keisti naudodami „Nano“ar kitą paprastą teksto rengyklę.

Pastabos: atminkite, kad kai kurie žodžiai ir terminai yra atpažįstami kaip žodžiai, prasidedantys didžiąja raide, kaip „centras“arba „dešinysis centras“, o kiti - ne, pvz. 'Tiesiai į viršų'. Norėdami atlikti tam tikrą veiksmą, turite naudoti tikslią balso atpažinimo modulio pateiktą formą.

3 žingsnis: „Python“scenarijus

Kaip minėta anksčiau, scenarijus yra pagrįstas servo_demo.py scenarijumi iš AIY balso instrukcijų su kai kuriais papildymais. Pirmoji versija yra „Hampelmann.py“failas, kurį rasite prisegę. „AngularServo“iš „GPIOZero“leidžia apriboti servo veikimo diapazoną ir tiksliai nustatyti, kiek toli judės. Bet man labiau patinka britiškas balsas nei originalus. Ir prietaisas taip pat gali kalbėti, bet nesuprasti (?), Anglų, vokiečių, italų, prancūzų ir ispanų kalbų. Žemiau rasite „Hampelmann2.py“scenarijų su britišku balsu ir šiek tiek italų bei vokiečių. Atminkite, kad norėdami paleisti scenarijus, turite juos vykdyti.

#!/usr/bin/env python3 # Šis scenarijus yra servo_demo.py scenarijaus pritaikymas AIY balso HAT, # optimizuotas AIY šokinėjimo lizdo importui aiy.audio import aiy.cloudspeech import aiy.voicehat iš gpiozero importo LED iš gpiozero importo AngularServo iš gpiozero importo Mygtukas iš laiko importavimo miego def main (): atpažinimo priemonė = aiy.cloudspeech.get_recognizer () atpažinimo priemonė.laukimo frazė („dešinėn“) atpažinimo priemonė. Centras ') # didžiosios raidės ten yra specialiai atpažinimo priemonė.laukti_frazę („kairėn“) („nuleiskite rankas“) atpažinimo priemonė.laukimo frazė („rankų centras“) atpažinimo priemonė.šūkio frazė („šokis“) atpažinimo priemonė. laukimo frazė („šviečia šviesos diodas“) atpažintojas.laukti frazė („išjungtas šviesos diodas“) atpažinimo priemonė.laukimo frazė.audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1st connect arba, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3 jungtis, GPIO 13 led0 = LED (24) # LED yra prijungti prie servo5/GPIO 24 distance = Mygtukas (5) # prijungtas atstumo jutiklis į servo3/GPIO 05 # kiti: GPIO 6 prie servo1, 12 prie servo4 aiy.audio.say („Sveiki!“,) aiy.audio.say („Norėdami pradėti, priartinkite ranką prie jutiklio“), o tiesa: led0.on () # šviesos diodai spausdinant („Norėdami įjungti balso atpažinimą, perkelkite ranką prie atstumo jutiklio, tada kalbėkite“) spausdinkite („Laukiami raktiniai žodžiai: rankos/kairė/dešinėn aukštyn/žemyn/centras“) print ('LED įjungta/išjungta, šokiai ir atsisveikinimas.') print () distance.wait_for_press () print ('Klausymas …') aiy.audio.say ("Prašau duoti užsakymus",) led0.blink () # light mirksėti tekstas = atpažinimo priemonė. atpažinti (), jei teksto nėra patikrinkite sistemos aiškinimą, ar tekste „dešinėn į viršų“: print („Servo0 perkėlimas į maksimalią padėtį“) servo0.angle = 35 elif „dešinėn žemyn“tekste: print („Moving servo0 į minimalią padėtį ') servo0.angle = -35 elif' Dešinysis centras 'tekste: #correct captials are kritinis print (' Servo0 perkėlimas į vidurinę padėtį ') servo0.angle = 0 elif' kairėn 'tekste: print (' Servo2 perkėlimas į maksimalią padėtį ') servo2.angle = -35 elifas „kairėn žemyn“tekste: spausdinti („Servo2 perkėlimas į minimalią padėtį“) servo2.angle = 35 elif „kairysis centras“tekste: print („Servo2 perkėlimas į vidurinė padėtis ') servo2.angle = 0 elifo „rankos aukštyn“tekste: print („Servo2 perkėlimas į maksimalią padėtį“) servo2.angle = -35 servo0.angle = 35 elif „rankos žemyn“tekste: print (' Moving servo2 į minimalią padėtį ") servo2.angle = 35 servo0.angle = -35 elif" rankas Center "tekste: spausdinti (" Servo2 perkėlimas į vidurinę padėtį ") servo2.angle = 0 servo0.angle = 0 elif" LED off " tekste: spausdinti („išorinio šviesos diodo išjungimas 0“) led0.off () elif „šviesos diodas įjungtas“tekste: spausdinti („įjungti išorinį šviesos diodą 0“) led0.on () # light elif „dance“tekste: print ('dabar atliekantis šokis numeris vienas') aiy.audio.say ("Na, aš stengsiuosi iš visų jėgų!",) led0.on () # šviesos i diapazone (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 „sudie“tekste: aiy.audio.say („Goodbye“,) aiy.audio.say („Arrivederci“,) aiy.audio.say („Auf Wiedersehen“,) servo0.angle = 0 servo2.angle = 0 led0.off () miegoti (3) spausdinti ('bye!') break else: print ('raktažodis neatpažintas!') aiy.audio.say ("Atsiprašau, aš tavęs nesupratau"), jei _name_ == ' _main_ ': main ()

Rekomenduojamas: