Indholdsfortegnelse:

A Voice Controlled Jumping Jack- Google Voice AIY Version: 3 trin
A Voice Controlled Jumping Jack- Google Voice AIY Version: 3 trin

Video: A Voice Controlled Jumping Jack- Google Voice AIY Version: 3 trin

Video: A Voice Controlled Jumping Jack- Google Voice AIY Version: 3 trin
Video: Best Voice Changer for PC | Speak using AI Voices 2024, November
Anonim
En stemmestyret springende jack- Google Voice AIY-version
En stemmestyret springende jack- Google Voice AIY-version
En stemmestyret springende jack- Google Voice AIY-version
En stemmestyret springende jack- Google Voice AIY-version
En stemmestyret springende jack- Google Voice AIY-version
En stemmestyret springende jack- Google Voice AIY-version
En stemmestyret springende jack- Google Voice AIY-version
En stemmestyret springende jack- Google Voice AIY-version

Så du har fået det AIY -stemmekit til jul, og har leget med det efter instruktionerne. Det er sjovt, men nu?

Projektet beskrevet i det følgende præsenterer en simpel enhed, der kan bygges ved hjælp af AIY voice HAT til Raspberry Pi. Det bruger Googles stemmegenkendelsessystem til at styre lysdioder og to servoer, der driver arme og ben på en springende jack med et meget simpelt gear.

Softwaren, der arbejder i baggrunden, er en ændring af servo_demo.py -scriptet, som det er beskrevet i AIY -stemmekitmanualen. Følg bare instruktionerne der for at konfigurere hard- og software. Selve enheden er let at bygge og kræver ikke meget håndværksmæssige færdigheder. Derudover ville en kniv, en boremaskine og et loddejern være en hjælp.

Hvis du aktiverer stemmegenkendelsessystemet med et blink i hånden og siger 'hænderne op', løfter hoftestikket hænder og ben, 'hænderne i midten' flytter begge servoer til midterpositionen og på 'hænderne ned' hænder og ben vil sænkes. På 'venstre op' hæves venstre hånd og ben og på 'højre ned' sænkes de højre, og 'højre op' omvendt. "Dans", vil få det til at danse, ja i hvert fald sådan. Det taler også. Tag et kig på den vedhæftede video.

Så med få anstrengelser kan du bygge din egen robot, der danser, chatter og synger.

For at forenkle brugen, især af mindre børn, og for at forbedre den 'magiske' faktor, blev knappen på AIY -boksen erstattet som trigger af en nærhedsføler. For sin enkelhed brugte jeg en digital afstandssensor breakout fra Pololu, som genkender, om et objekt er tættere end 5 cm, og kan bruges meget som en knap. Lysdioder angiver, når enheden venter på ordrer, lytter eller "tænker". Servoer, sensorer og lysdioder styres af GPIOZero softwarebiblioteket.

Prototypen blev bygget af Forex, PVC -skumplader, der kan skæres meget let med en kniv og limes, men er også ret stabil. Byg gerne en større, pænere, forbedret eller mere fancy version, men det ville være venligt, hvis du ville dokumentere og præsentere dine forbedringer.

Du kan bruge begge sider af kroppen, afhængigt af om du vil præsentere bevægelsesudstyret eller have et dejligt, børnevenligt layout. --------- "Hampelmann" er det tyske udtryk for "jumping jack", der har visse konnotationer.

Trin 1: Brugte materialer

Materialer brugt
Materialer brugt
Materialer brugt
Materialer brugt

Hindbær Pi 3; 32 £ hos Pimoroni, Storbritannien

AIY stemme Kit; 25 £ hos Pimoroni, Storbritannien

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

To 9g servoer

To hvide lysdioder og en modstand

Nogle skæreborde og springkabler

En 2 mm Forex plade, 250 x 500 mm; 1,70 € hos Modulor, Berlin, Tyskland

M3 skruer, møtrikker og skiver, til at forbinde alle bevægelige dele. Jeg brugte seks 10 og fire 16 mm nylonskruer.

Seks M2 skruer og møtrikker til fastgørelse af servoerne til pladerne og tilslutning af servoarmene og gearene.

Et par dråber plastlim

Trin 2: Montering og brug af enheden

Montering og brug af enheden
Montering og brug af enheden
Montering og brug af enheden
Montering og brug af enheden
Montering og brug af enheden
Montering og brug af enheden

Hvad angår selve AIY -stemmesættet, skal du bare følge instruktionerne i beskrivelsen, der følger med sættet, herunder afsnittet om servoen. Jeg vil anbefale at lodde flere tre-benede headere til servo-portene på AIY-stemmeudbruddet, så du kan forbinde servoer, sensor og lysdioder meget let med HAT.

Hvad angår springstikket, kan du enten bruge de tegninger, jeg leverede her som svg- og PDF-filer som en skabelon, eller bare ændre dem efter dine egne ideer. Du vil måske gerne beholde det grundlæggende layout af gearet, der driver benene og armen på springkraften, og sikrer, at afstanden mellem drejepunktet og gearet er den samme på servoen, armen og benet.

Alternativt kan du også konstruere en version, hvor arme og ben drives direkte af fire separate servoer eller af et mere avanceret gear.

Ved hjælp af tegningen skæres stykkerne fra en Forex-, pap- eller krydsfinerplade og borer hullerne på de passende positioner. Lim afstandsstykkerne til de svingende punkter på arme og ben, hvilket sikrer god justering af hullerne.

Fastgør servoerne og de bevægelige dele til bundpladen. Tilføj afstandssensoren og LED som angivet. Servoerne er fastgjort med M2 skruer, alle bevægelige dele med M3 skruer. Jeg brugte Nylon M3 skruer, men bare af æstetiske årsager.

Kontroller, om servoarmene er placeret i midterpositionen. Tilslut servo arme og gear, jeg brugte M2 skruer til dette formål.

Fastgør servoer, lysdioder og afstandssensoren til servostikkene på AIY -kortet. Du har muligvis brug for nogle forlængelses-/springkabler. Jeg fastgjorde den venstre servo til “servo0” (GPIO 26) den højre servo til “servo2” (GPIO 13), lysdioderne til “servo5” (GPIO 24) og sensoren til “servo3” (GPIO 5) på AIY stemme HAT.

Kopier den medfølgende "Hampelmann.py" -fil til AIY "src" -mappen, og gør den direkte eksekverbar for alle. For at gøre dette kan du vælge filen i filhåndteringen, højreklikke og vælge Egenskaber, vælge Tilladelser, gå til Udfør, vælg ~ hvem som helst. Eller skriv “chmod +x src/Hampelmann.py” i dev -konsollen.

Kontroller, om alt er sat på plads og fast, eller bevægeligt, når det kræves. Åbn kommandolinjen Dev, indtast “src/Hampelmann.py” og start programmet. Hvis du bevæger din hånd eller fingre foran afstandssensoren, beder AIY -enheden om ordrer, og lysdioderne blinker. Implementerede ordrer er "højre/venstre/hænder op/ned/center", "dans", "LED tændt/slukket" og "farvel".

Spil. Bevæg hånden foran sensoren, tal når du bliver spurgt, og giv enheden lidt tid til at reagere. Latens er ret høj. Crtl+C eller “Farvel” stopper programmet.

Du kan ændre filen ved hjælp af Nano eller en anden simpel tekstredigerer.

Bemærkninger: Vær opmærksom på, at nogle ord og udtryk genkendes som ord, der starter med store bogstaver, som 'Center' eller 'Højre Center', som andre ikke er, f.eks. 'Lige op'. Du skal bruge den nøjagtige form, der er givet tilbage af stemmegenkendelsesmodulet for at udløse en handling.

Trin 3: Python -scriptet

Som tidligere nævnt er scriptet baseret på servo_demo.py -scriptet fra AIY -stemmeinstruktionerne, med nogle tilføjelser. Den første version er filen Hampelmann.py, du finder vedhæftet. AngularServo fra GPIOZero gør det muligt at begrænse servoens rækkevidde og definere nøjagtigt, hvor langt der skal bevæge sig. Men jeg foretrækker den britiske stemme frem for den originale. Og enheden kan også tale, men ikke forstå (?), Engelsk, tysk, italiensk, fransk og spansk. Nedenfor finder du Hampelmann2.py -scriptet med den britiske stemme og lidt italiensk og tysk. Husk, at du skal gøre scripts eksekverbare for at køre dem.

#!/usr/bin/env python3 # Dette script er en tilpasning af servo_demo.py -scriptet til AIY stemme HAT, # optimeret til AIY jumping jack import aiy.audio import aiy.cloudspeech import aiy.voicehat fra gpiozero import LED fra gpiozero import AngularServo fra gpiozero import Knap fra tid importer søvn def main (): anerkender = aiy.cloudspeech.get_recognizer () anerkender.forventet_frase ('højre op') anerkender.forventet_frase ('højre ned') genkender.forventet_frase ('Højre') Center ') # store bogstaver er der med vilje anerkender.forventet_frase (' venstre op ') genkender.forventet_frase (' venstre ned ') genkender.forventet_frase (' venstre center ') genkender.forventet_frase (' hænder op ') genkender.forventet_frase ('hænder ned') anerkender.forventet_frase ('hænder i midten') genkender.forventet_frase ('dans') genkender.forventet_frase ('LED tændt') igenkender.forventet_frase ('LED slukket') genkender.forventet_frase ('farvel') aiy.audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1. forbindelse eller, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3. stik, GPIO 13 led0 = LED (24) # LED'er er forbundet til servo5/GPIO 24 distance = Knap (5) # tilsluttet afstandssensor til servo3/GPIO 05 # andre: GPIO 6 ved servo1, 12 ved servo4 aiy.audio.say ("Hej!",) aiy.audio.say ("For at starte, flyt din hånd tæt på sensoren",) mens True: led0.on () # LED'er på udskrivning ("For at aktivere stemmegenkendelse skal du flytte en hånd tæt på afstandssensoren og derefter tale") udskrive ('Forventede søgeord er: hænder/venstre/højre op/ned/center') 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 = genkender.genkend () hvis teksten er Ingen: aiy.audio.say ('Beklager, jeg hørte dig ikke.',) else: print ('Du sagde "', tekst, '"') # Lader dig tjek systemfortolkningen, hvis 'lige op' i teksten: print ('Flytter servo0 til maksimal position') servo0.angle = 35 elif 'højre ned' i tekst: print ('Moving servo0 til minimumsposition ') servo0.angle = -35 elif' Right Center 'i teksten: #correct captions are critical print (' Moving servo0 to middle position ') servo0.angle = 0 elif' left up 'in text: print (' Flytter servo2 til maksimal position ') servo2.angle = -35 elif' venstre ned 'i tekst: print (' Flytter servo2 til minimumsposition ') servo2.angle = 35 elif' venstre Center 'i tekst: print (' Flytter servo2 til midterste position ') 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 minimumsposition ') servo2.angle = 35 servo0.angle = -35 elif' hands Center 'i tekst: print (' Flytter servo2 til midterposition ') servo2.angle = 0 servo0.angle = 0 elif' LED slukket ' i tekst: print ('slukning af ekstern LED 0') led0.off () elif 'LED tændt' i tekst: print ('tænder ekstern LED 0') led0.on () # lys elif 'dans' i tekst: print ('udfører nu dans nummer et') aiy.audio.say ("Nå, jeg vil prøve mit bedste!",) led0.on () # lys tændt 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 teksten: aiy.audio.say ("Farvel",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) servo0.angle = 0 servo2.angle = 0 led0.off () sleep (3) print ('farvel!') pause else: print ('intet søgeord genkendes!') aiy.audio.say ("Beklager, jeg forstod dig ikke",) hvis _name_ == ' _main_ ': main ()

Anbefalede: