Innholdsfortegnelse:

A Voice Controlled Jumping Jack- Google Voice AIY-versjon: 3 trinn
A Voice Controlled Jumping Jack- Google Voice AIY-versjon: 3 trinn

Video: A Voice Controlled Jumping Jack- Google Voice AIY-versjon: 3 trinn

Video: A Voice Controlled Jumping Jack- Google Voice AIY-versjon: 3 trinn
Video: Willy William - Ego (Clip Officiel) 2024, November
Anonim
A Voice Controlled Jumping Jack- Google Voice AIY-versjon
A Voice Controlled Jumping Jack- Google Voice AIY-versjon
A Voice Controlled Jumping Jack- Google Voice AIY-versjon
A Voice Controlled Jumping Jack- Google Voice AIY-versjon
A Voice Controlled Jumping Jack- Google Voice AIY-versjon
A Voice Controlled Jumping Jack- Google Voice AIY-versjon
A Voice Controlled Jumping Jack- Google Voice AIY-versjon
A Voice Controlled Jumping Jack- Google Voice AIY-versjon

Så du har det AIY -stemmesettet til jul, og har lekt med det etter instruksjonene. Det er morsomt, men nå?

Prosjektet beskrevet i det følgende presenterer en enkel enhet som kan bygges ved hjelp av AIY voice HAT for Raspberry Pi. Den bruker Googles stemmegjenkjenningssystem til å kontrollere lysdioder og to servoer, som driver armer og ben på en hoppende jack med et veldig enkelt gir.

Programvaren som fungerer i bakgrunnen er en modifikasjon av servo_demo.py -skriptet, slik det er beskrevet i AIY -stemmesettmanualen. Bare følg instruksjonene som er gitt der for å sette opp hard- og programvare. Selve enheten er enkel å bygge og krever ikke mye håndarbeid. I tillegg ville en kniv, en drill og et loddejern være nyttig.

Hvis du aktiverer stemmegjenkjenningssystemet med et blunk av hånden din og sier "hendene opp", vil hoppingskontakten heve hender og ben, "hender midt" vil flytte begge servoene til midtstilling og på "hendene ned" hender og ben vil bli senket. På "venstre opp" vil venstre hånd og ben bli hevet og "høyre ned" de høyre senkes, på "høyre opp" omvendt. "Dance", vil få det til å danse, vel i hvert fall. Det snakker også. Ta en titt på den vedlagte videoen.

Så med liten innsats kan du bygge din egen robot for å danse, chatte og synge.

For å forenkle bruken spesielt av mindre barn, og for å forbedre den 'magiske' faktoren, ble knappen på AIY -boksen erstattet som utløser av en nærhetssensor. For enkelhets skyld brukte jeg en digital avstandssensorutbrudd fra Pololu som gjenkjenner om et objekt er nærmere enn 5 cm, og kan brukes veldig mye som en knapp. Lysdioder indikerer når enheten venter på bestillinger, lytter eller "tenker". Servoer, sensorer og lysdioder kontrolleres av programvarebiblioteket GPIOZero.

Prototypen ble bygget av Forex, PVC -skumplater, som kan kuttes veldig enkelt med en kniv og limes, men er også ganske stabil. Bygg gjerne en større, finere, forbedret eller mer fancy versjon, men det ville være snilt om du ville dokumentere og presentere forbedringene dine.

Du kan bruke begge sider av kroppen, avhengig av om du vil presentere bevegelsesutstyret eller ha et fint, barnevennlig oppsett. --------- "Hampelmann" er det tyske uttrykket for "jumping jack", som har visse konnotasjoner.

Trinn 1: Materialer som brukes

Materialer som brukes
Materialer som brukes
Materialer som brukes
Materialer som brukes

Bringebær Pi 3; 32 £ på Pimoroni, Storbritannia

AIY stemme Kit; 25 £ på Pimoroni, Storbritannia

Pololu digital distanse sensor breakout med Sharp sensor, 5 cm; 5,90 € på Exp-tec.de

To 9g servoer

To hvite lysdioder og en motstand

Noen topp- og startkabler

En 2 mm Forex -plate, 250 x 500 mm; 1,70 € på Modulor, Berlin, Tyskland

M3 skruer, muttere og skiver, for å koble alle bevegelige deler. Jeg brukte seks 10 og fire 16 mm nylonskruer.

Seks M2 skruer og muttere, for å feste servoene til platene og koble servosarmene og tannhjulene.

Noen dråper plastlim

Trinn 2: Montering og bruk av enheten

Montering og bruk av enheten
Montering og bruk av enheten
Montering og bruk av enheten
Montering og bruk av enheten
Montering og bruk av enheten
Montering og bruk av enheten

Når det gjelder selve AIY -talesettet, følger du bare instruksjonene i beskrivelsen som følger med settet, inkludert delen om servoen. Jeg vil anbefale å lodde flere tre-pinners overskrifter til servoportene på AIY-stemmeutbruddet, slik at du kan koble servoer, sensorer og lysdioder veldig enkelt med HAT.

Når det gjelder hopping jack, kan du enten bruke tegningene jeg ga her som svg- og PDF-filer som en mal, eller bare endre dem i henhold til dine egne ideer. Det kan være lurt å beholde den grunnleggende utformingen av giret som driver bena og armen på hoppejakken, og sørger for at avstanden mellom dreiepunktet og giret er den samme på servoen, armen og benet.

Alternativt kan du også konstruere en versjon der armer og ben blir drevet direkte av fire separate servoer, eller av et mer avansert gir.

Ved hjelp av tegningen, kutt brikkene fra en Forex-, papp- eller kryssfinerplate og bor hullene i de riktige posisjonene. Lim avstandsstykkene til de svingende punktene på armer og ben, og sørg for god justering av hullene.

Fest servoene og de bevegelige delene til bunnplaten. Legg til avstandssensoren og LED som angitt. Servoene er festet med M2 -skruer, alle bevegelige deler med M3 -skruer. Jeg brukte Nylon M3 skruer, men bare av estetiske årsaker.

Kontroller om servoarmene er plassert i midtstilling. Koble servoarmer og gir, jeg brukte M2 -skruer til dette formålet.

Fest servoer, lysdioder og avstandssensoren til servokontaktene på AIY -kortet. Du kan trenge noen forlengelses-/hoppekabler. Jeg festet den venstre servoen til “servo0” (GPIO 26) den høyre servoen til “servo2” (GPIO 13), lysdiodene til “servo5” (GPIO 24) og sensoren til “servo3” (GPIO 5) på AIY stemme HAT.

Kopier den medfølgende "Hampelmann.py" -filen til AIY "src" -mappen, og gjør den direkte kjørbar for alle. For å gjøre dette kan du velge filen i filbehandleren, høyreklikke og velge Egenskaper, velge Tillatelser, gå til Utfør, velg ~ hvem som helst. Eller skriv “chmod +x src/Hampelmann.py” i dev -konsollen.

Sjekk om alt er satt på plass og fast, eller flyttbart når det er nødvendig. Åpne kommandolinjen Dev, skriv inn “src/Hampelmann.py” og start programmet. Hvis du beveger hånden eller fingrene foran avstandssensoren, vil AIY -enheten be om bestillinger og lysdiodene blinker. Implementerte bestillinger er "høyre/venstre/hender opp/ned/midt", "dans", "LED på/av" og "farvel".

Spille. Beveg hånden foran sensoren, snakk når du blir spurt, og gi enheten litt tid til å reagere. Latensen er ganske høy. Crtl+C eller “Goodbye” vil stoppe programmet.

Du kan endre filen ved hjelp av Nano eller en annen enkel tekstredigerer.

Merknader: Vær oppmerksom på at noen ord og termer blir gjenkjent som ord som begynner med stor bokstav, som "Senter" eller "Høyre Senter", slik andre ikke er, f.eks. 'rett opp'. Du må bruke det eksakte skjemaet som er gitt tilbake av talegjenkjenningsmodulen for å utløse noen handlinger.

Trinn 3: Python -skriptet

Som nevnt tidligere er skriptet basert på servo_demo.py -skriptet fra AIY -stemmeinstruksjonene, med noen tillegg. Den første versjonen er Hampelmann.py -filen du finner vedlagt. AngularServo fra GPIOZero lar deg begrense handlingsområdet til servoen og definere nøyaktig hvor langt den skal bevege seg. Men jeg foretrekker den britiske stemmen fremfor den originale. Og enheten kan også snakke, men ikke forstå (?), Engelsk, tysk, italiensk, fransk og spansk. Nedenfor finner du Hampelmann2.py -manuset, med britisk stemme, og litt italiensk og tysk. Vær oppmerksom på at du må gjøre skriptene kjørbare for å kjøre dem.

#!/usr/bin/env python3 # Dette skriptet er en tilpasning av servo_demo.py -skriptet for AIY -stemmehatten, # optimalisert for AIY -hoppekontaktimport aiy.audio import aiy.cloudspeech import aiy.voicehat fra gpiozero import LED fra gpiozero import AngularServo fra gpiozero import Knapp fra gang importer søvn def main (): anerkjenner = aiy.cloudspeech.get_recognizer () anerkjennere.forventet_frase ('rett opp') gjenkjenner.forventet_frase ('høyre ned') gjenkjenner.forventet_frase ('Høyre' Senter ') # store bokstaver er der med vilje gjenkjenneren.forventet_frase (' venstre opp ') gjenkjenner.forventet_frase (' venstre ned ') gjenkjenner.forventet_frase (' venstre senter ') gjenkjenner.forventet_frase (' hender opp ') gjenkjenner.forventet_frase ('hendene ned') gjenkjenner.forventet_frase ('hendersenter') gjenkjenner.forventet_frase ('dans') gjenkjenner.forventet_frase ('LED på') gjenkjenner.forventet_frase ('LED av') gjenkjenner.forventet_frase ('farvel') aiy.audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # første tilkobling eller, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3. kontakt, GPIO 13 led0 = LED (24) # LED er koblet til servo5/GPIO 24 avstand = Knapp (5) # avstandssensor tilkoblet til servo3/GPIO 05 # andre: GPIO 6 ved servo1, 12 ved servo4 aiy.audio.say ("Hei!",) aiy.audio.say ("For å starte, flytt hånden nær sensoren",) mens True: led0.on () # Lysdioder på utskrift ("For å aktivere stemmegjenkjenning, flytt en hånd nær avstandssensoren, så snakk") print ('Forventede søkeord er: hender/venstre/høyre opp/ned/midt,') print ('LED on/off, dance and goodbye.') print () distance.wait_for_press () print ('Listening …') aiy.audio.say ("Please give your orders",) led0.blink () # light blink tekst = gjenkjenner.gjenkjenne () hvis teksten er Ingen: aiy.audio.say ('Beklager, jeg hørte deg ikke.',) else: print ('Du sa "', tekst, '"') # Lar deg sjekk systemtolkningen hvis "høyre opp" i tekst: print ('Flytter servo0 til maksimal posisjon') servo0.angle = 35 elif 'helt ned' i tekst: print ('Moving servo0 til minimumsposisjon ') servo0.angle = -35 elif' Right Center 'i tekst: #correct captions are critical print (' Moving servo0 to middle position ') servo0.angle = 0 elif' left up 'in text: print (' Flytter servo2 til maksimal posisjon ') servo2.angle = -35 elif' venstre ned 'i tekst: print (' Flytter servo2 til minimumsposisjon ') servo2.angle = 35 elif' venstre senter 'i tekst: print (' Flytter servo2 til midtstilling ') servo2.angle = 0 elif' hands up 'i tekst: print (' Moving servo2 to maximum position ') servo2.angle = -35 servo0.angle = 35 elif' hands down 'in text: print (' Moving servo2 til minimumsposisjon ') servo2.angle = 35 servo0.angle = -35 elif' hands Center 'i tekst: print (' Flytter servo2 til midtstilling ') servo2.angle = 0 servo0.angle = 0 elif' LED av ' i tekst: print ('slå av ekstern LED 0') led0.off () elif 'LED på' i tekst: print ('slå på ekstern LED 0') led0.on () # lys elif 'dans' i tekst: print ('utfører nå dans nummer én') aiy.audio.say ("Vel, jeg skal prøve mitt beste!",) led0.on () # lys på for i i område (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 'farvel' i tekst: 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 ('no keyword keyword!') aiy.audio.say ("Sorry, I did not understand you",) if _name_ == ' _main_ ': main ()

Anbefalt: