Cuprins:

Un jack de salt controlat prin voce - versiunea Google Voice AIY: 3 pași
Un jack de salt controlat prin voce - versiunea Google Voice AIY: 3 pași

Video: Un jack de salt controlat prin voce - versiunea Google Voice AIY: 3 pași

Video: Un jack de salt controlat prin voce - versiunea Google Voice AIY: 3 pași
Video: Женщина-лев - Драма - Полный английский фильм - HD 2024, Noiembrie
Anonim
Un jack de salt controlat prin voce - versiunea Google Voice AIY
Un jack de salt controlat prin voce - versiunea Google Voice AIY
Un jack de salt controlat prin voce - versiunea Google Voice AIY
Un jack de salt controlat prin voce - versiunea Google Voice AIY
Un jack de salt controlat prin voce - versiunea Google Voice AIY
Un jack de salt controlat prin voce - versiunea Google Voice AIY
Un jack de salt controlat prin voce - versiunea Google Voice AIY
Un jack de salt controlat prin voce - versiunea Google Voice AIY

Așa că ai acel kit vocal AIY de Crăciun și te-ai jucat cu el, urmând instrucțiunile. Este amuzant, dar acum?

Proiectul descris în cele ce urmează prezintă un dispozitiv simplu care poate fi construit folosind AIY voice HAT pentru Raspberry Pi. Folosește sistemul de recunoaștere vocală Google pentru a controla LED-urile și două servo-uri, acționând brațele și picioarele unui cric de sărituri printr-o treaptă foarte simplă.

Software-ul care funcționează în fundal este o modificare a scriptului servo_demo.py, așa cum a fost descris în manualul kitului vocal AIY. Doar urmați instrucțiunile date acolo pentru a configura hard și software. Dispozitivul în sine este ușor de construit și nu necesită prea multe abilități de artizanat. În plus, ar fi de ajutor un cuțit de tăiat, un burghiu și un fier de lipit.

Dacă activați sistemul de recunoaștere a vocii cu o clipire a mâinii și spuneți „mâinile sus”, mufa săritoare va ridica mâinile și picioarele, „centrul mâinilor” va muta ambele servouri în poziția de mijloc și pe mâinile și picioarele „mâinile în jos” să fie coborât. La „stânga sus” mâna și picioarele stângi vor fi ridicate și la „dreapta jos” cele drepte coborâte, la „dreapta sus” invers. „Dans”, îl va face să danseze, măcar un fel. De asemenea, vorbește, vă rugăm să aruncați o privire asupra videoclipului atașat.

Deci, cu eforturi mici, vă puteți construi propriul robot de dans, chat și cântat.

Pentru a simplifica utilizarea acestuia în special de către copiii mai mici și pentru a spori factorul „magic”, butonul de pe caseta AIY a fost înlocuit ca declanșator de un senzor de proximitate. Pentru simplitatea sa, am folosit un senzor de distanță digital de la Pololu care recunoaște dacă un obiect este mai aproape de 5 cm și poate fi folosit foarte mult ca un buton. LED-urile indică când dispozitivul așteaptă comenzi, ascultă sau „gândește”. Servo-urile, senzorii și LED-urile sunt controlate de biblioteca software GPIOZero.

Prototipul a fost construit din Forex, plăci din spumă din PVC, care pot fi tăiate foarte ușor cu un cuțit de tăiat și lipite, dar este, de asemenea, destul de stabil. Simțiți-vă liber să construiți o versiune mai mare, mai frumoasă, îmbunătățită sau mai elegantă, dar ar fi amabil dacă ați documenta și prezenta îmbunătățirile dvs.

Puteți folosi ambele părți ale corpului, în funcție de dorința de a prezenta echipamentul în mișcare sau de a avea un aspect frumos, potrivit pentru copii. --------- „Hampelmann” este termenul german pentru „săritură”, având anumite conotații.

Pasul 1: Materiale utilizate

Materiale utilizate
Materiale utilizate
Materiale utilizate
Materiale utilizate

Raspberry Pi 3; 32 £ la Pimoroni, Marea Britanie

Kit voce AIY; 25 £ la Pimoroni, Marea Britanie

Senzor de distanță digital Pololu cu senzor Sharp, 5 cm; 5,90 € la Exp-tec.de

Două servo de 9g

Două LED-uri albe și un rezistor

Unele anteturi și cabluri jumper

O placă Forex de 2 mm, 250 x 500 mm; 1,70 € la Modulor, Berlin, Germania

Șuruburi M3, piulițe și șaibe, pentru a conecta toate piesele mobile. Am folosit șase șuruburi din nailon de 10 și patru 16 mm.

Șase șuruburi și piulițe M2, pentru a fixa servomotoarele pe plăci și a conecta brațele și angrenajele servomotoare.

Câteva picături de lipici din plastic

Pasul 2: Asamblarea și utilizarea dispozitivului

Asamblarea și utilizarea dispozitivului
Asamblarea și utilizarea dispozitivului
Asamblarea și utilizarea dispozitivului
Asamblarea și utilizarea dispozitivului
Asamblarea și utilizarea dispozitivului
Asamblarea și utilizarea dispozitivului

În ceea ce privește kitul vocal AIY în sine, trebuie doar să urmați instrucțiunile din descrierea care vine împreună cu kitul, inclusiv secțiunea despre servo. Aș recomanda să lipiți mai multe anteturi cu trei pini la porturile servo de pe dispozitivul de ieșire vocală AIY, astfel încât să puteți conecta serv-uri, senzori și LED-uri foarte ușor cu HAT.

În ceea ce privește cricul de sărituri, puteți folosi desenele pe care le-am furnizat aici ca fișiere svg și PDF ca șablon, sau pur și simplu să le modificați după propriile idei. S-ar putea să doriți să păstrați aspectul de bază al angrenajului care acționează picioarele și brațul cricului pentru sărituri, asigurându-vă că distanța dintre punctul de pivotare și angrenaj este aceeași la servo, braț și picior.

Alternativ, puteți construi și o versiune în care brațele și picioarele sunt conduse direct de patru servo-uri separate sau de un angrenaj mai avansat.

Folosind desenul, tăiați piesele dintr-o placă Forex, carton sau placaj și găuriți găurile în pozițiile corespunzătoare. Lipiți piesele de distanță de punctele pivotante ale brațelor și picioarelor, asigurând o bună aliniere a găurilor.

Fixați servomotoarele și piesele mobile pe placa de bază. Adăugați senzorul de distanță și LED-ul conform indicațiilor. Servoamele sunt fixate cu șuruburi M2, toate piesele mobile cu șuruburi M3. Am folosit șuruburi Nylon M3, dar doar din motive estetice.

Verificați dacă brațele servo sunt plasate în poziția de mijloc. Conectați brațele și roțile dințate servo, am folosit șuruburi M2 în acest scop.

Atașați servomotoarele, LED-urile și senzorul de distanță la conectorii servo de pe placa AIY. Este posibil să aveți nevoie de niște cabluri de alungire / jumper. Am atașat servo stânga la „servo0” (GPIO 26) servo dreapta la „servo2” (GPIO 13), LED-urile la „servo5” (GPIO 24) și senzorul la „servo3” (GPIO 5) pe AIY voce pălărie.

Copiați fișierul „Hampelmann.py” furnizat în subfolderul „src” AIY și faceți-l direct executabil pentru oricine. Pentru aceasta, puteți selecta fișierul în managerul de fișiere, apoi faceți clic dreapta și selectați Proprietăți, selectați Permisiuni, accesați Executare, selectați ~ oricine. Sau scrieți „chmod + x src / Hampelmann.py” în consola pentru dezvoltatori.

Verificați dacă totul este fixat și fixat sau mobil dacă este necesar. Deschideți linia de comandă Dev, introduceți „src / Hampelmann.py” și porniți programul. Dacă mutați mâna sau degetele în fața senzorului de distanță, unitatea AIY va cere comenzi și LED-urile vor clipi. Comenzile implementate sunt „dreapta / stânga / mâinile sus / jos / centru”, „dans”, „LED aprins / oprit” și „la revedere”.

Joaca. Mutați mâna în fața senzorului, vorbiți când vi se solicită și acordați dispozitivului puțin timp să reacționeze. Latența este destul de mare. Crtl + C sau „La revedere” vor opri programul.

Puteți modifica fișierul folosind Nano sau un alt editor de text simplu.

Observații: Vă rugăm să rețineți că unele cuvinte și termeni sunt recunoscuți ca cuvinte care încep cu majuscule, ca „Centru” sau „Centru drept”, deoarece alții nu sunt, de ex. „Chiar sus”. Trebuie să utilizați formularul exact redat de modulul de recunoaștere vocală pentru a declanșa o acțiune.

Pasul 3: Scriptul Python

Așa cum am menționat anterior, scriptul se bazează pe scriptul servo_demo.py din instrucțiunile vocale AIY, cu câteva adăugiri. Prima versiune este fișierul Hampelmann.py pe care îl veți găsi atașat. AngularServo de la GPIOZero permite să restricționeze intervalul de acțiune al servo-ului și să definească exact cât de departe se va mișca. Dar prefer vocea britanică decât cea originală. Și dispozitivul poate vorbi, dar nu poate înțelege (?), Engleză, germană, italiană, franceză și spaniolă. Mai jos găsiți scriptul Hampelmann2.py, cu vocea britanică, și un pic de italiană și germană. Rețineți că trebuie să faceți scripturile executabile pentru a le rula.

#! / usr / bin / env python3 # Acest script este o adaptare a scriptului servo_demo.py pentru AIY voice HAT, # optimizat pentru AIY jumping jack import aiy.audio import aiy.cloudspeech import aiy.voicehat din LED-ul de import gpiozero din importul gpiozero AngularServo din importul gpiozero Buton din importul timpului sleep def main (): recognizer = aiy.cloudspeech.get_recognizer () recognizer.expect_phrase ('right up') recognizer.expect_phrase ('right down') recognizer.expect_phrase ('Right Centru ') # literele majuscule sunt acolo intenționat recognizer.expect_phrase (' left up ') recognizer.expect_phrase (' left left ') recognizer.expect_phrase (' left center ') recognizer.expect_phrase (' hands up ') recognizer.expect_phrase ('hands down') recognizer.expect_phrase ('hands Center') recognizer.expect_phrase ('Dance') recognizer.expect_phrase ('LED aprins') recognizer.expect_phrase ('LED off') recognizer.expect_phrase ('goodbye') aiy.audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # prima conectare sau, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3 conector, GPIO 13 led0 = LED (24) # LED-uri sunt conectate la servo5 / GPIO 24 distanță = Buton (5) # senzor distanță conectat la servo3 / GPIO 05 # altele: GPIO 6 la servo1, 12 la servo4 aiy.audio.say ("Bună ziua!",) aiy.audio.say ("Pentru a începe, mutați mâna aproape de senzor",) în timp ce este True: led0.on () # LED-uri pe imprimare („Pentru a activa recunoașterea vocală, mutați o mână aproape de senzorul de distanță, apoi vorbiți”) print („Cuvintele cheie așteptate sunt: mâini / stânga / dreapta sus / jos / centru”) print ('LED on / off, dance and goodbye.') print () distance.wait_for_press () print ('Listening …') aiy.audio.say ("Vă rugăm să dați comenzile dvs.",) led0.blink () # light clipire text = recognizer.recognize () dacă textul este None: aiy.audio.say ('Ne pare rău, nu v-am auzit.',) else: print ('Ați spus "', text, '"') # Vă permite verificați interpretarea sistemelor dacă „dreapta sus” în text: print („Mutarea servo0 la poziția maximă”) servo0.angle = 35 elif „dreapta în jos” în text: print („Mutarea servo0 la poziția minimă ') servo0.angle = -35 elif' Centrul drept 'în text: #capitalele corecte sunt critice de imprimare (' Mutarea servo0 la poziția de mijloc ') servo0.angle = 0 elif' stânga sus 'în text: print (' Mutarea servo2 în poziția maximă ') servo2.angle = -35 elif' stânga în jos 'în text: print (' Mutarea servo2 în poziția minimă ') servo2.angle = 35 elif' stânga Centrul 'în text: print (' Mutarea servo2 în poziție de mijloc ') servo2.angle = 0 elif' mâini sus 'în text: print (' Mutarea servo2 la poziția maximă ') servo2.angle = -35 servo0.angle = 35 elif' mâini în jos 'în text: print (' Deplasare servo2 la poziția minimă ') servo2.angle = 35 servo0.angle = -35 elif' mâini Centru 'în text: print (' Mutarea servo2 în poziția de mijloc ') servo2.angle = 0 servo0.angle = 0 elif' LED stins ' în text: print („oprirea LED-ului extern 0”) led0.off () elif „LED aprins” în text: print („pornire LED extern 0”) led0.on () # lumină elif „dans” în text: print („acum performează cu dansul numărul unu”) aiy.audio.say („Ei bine, voi încerca tot posibilul!”,) led0.on () # lumini aprinse pentru i în intervalul (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 „goodbye” în text: aiy.audio.say („Goodbye”,) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) servo0.angle = 0 servo2.angle = 0 led0.off () sleep (3) print ('bye!') break else: print ('fără cuvânt cheie recunoscut!') aiy.audio.say ("Ne pare rău, nu te-am înțeles",) dacă _name_ == ' _main_ ': main ()

Recomandat: