Inhoudsopgave:
Video: Een spraakgestuurde springaansluiting - Google Voice AIY-versie - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Dus je hebt die AIY-stemkit voor Kerstmis en hebt ermee gespeeld volgens de instructies. Het is grappig, maar nu?
Het hieronder beschreven project presenteert een eenvoudig apparaat dat kan worden gebouwd met behulp van de AIY voice HAT voor de Raspberry Pi. Het maakt gebruik van het spraakherkenningssysteem van Google om LED's en twee servo's te bedienen, waarbij de armen en benen van een springer worden aangedreven door een zeer eenvoudige versnelling.
De software die op de achtergrond werkt, is een wijziging van het servo_demo.py script, zoals beschreven in de AIY voice kit handleiding. Volg gewoon de instructies die daar worden gegeven om hard- en software in te stellen. Het apparaat zelf is eenvoudig te bouwen en vereist niet veel handvaardigheid. Daarnaast zou een snijmes, een boor en een soldeerbout nuttig zijn.
Als je met een knipoog het spraakherkenningssysteem activeert en 'hands up' zegt, zal de jumping jack handen en benen opheffen, 'hands center' zal beide servo's naar de middenpositie verplaatsen en op 'hands down' zullen handen en benen worden verlaagd. Bij 'links omhoog' worden de linkerhand en benen omhoog gebracht en bij 'rechts omlaag' worden de rechtsen omlaag gebracht, bij 'rechts omhoog' vice versa. "Dans", zal het laten dansen, tenminste een soort van. Het is ook praten, kijk eens naar de bijgevoegde video.
Zo bouw je met weinig moeite je eigen dans-, chat- en zangrobot.
Om het gebruik ervan te vereenvoudigen, vooral door kleinere kinderen, en om de 'magische' factor te vergroten, werd de knop op de AIY-box als trigger vervangen door een naderingssensor. Voor de eenvoud heb ik een digitale afstandssensor-breakout van Pololu gebruikt die herkent of een object dichterbij is dan 5 cm, en kan worden gebruikt als een knop. LED's geven wel aan wanneer het apparaat op bestellingen wacht, luistert of "denkt". Servo's, sensoren en LED's worden aangestuurd door de GPIOZero-softwarebibliotheek.
Het prototype is gemaakt van Forex, PVC-schuimplaten, die heel gemakkelijk met een snijmes kunnen worden gesneden en gelijmd, maar ook vrij stabiel zijn. Voel je vrij om een grotere, mooiere, verbeterde of mooiere versie te bouwen, maar het zou aardig zijn als je je verbeteringen zou documenteren en presenteren.
U kunt beide kanten van de carrosserie gebruiken, afhankelijk van of u het bewegende materieel wilt presenteren of een mooie, kindvriendelijke indeling wilt hebben. --------- "Hampelmann" is de Duitse term voor "jumping jack", met bepaalde connotaties.
Stap 1: Gebruikte materialen
Framboos Pi 3; 32 £ bij Pimoroni, VK
AIY-stemkit; 25 £ bij Pimoroni, VK
Pololu digitale afstandssensor breakout met Sharp-sensor, 5 cm; 5,90 € bij Exp-tec.de
Twee 9g servo's
Twee witte LED's en een weerstand
Sommige headers en startkabels
Een Forex plaat van 2 mm, 250 x 500 mm; 1,70 € bij Modulor, Berlijn, Duitsland
M3 schroeven, moeren en ringen, om alle bewegende delen aan te sluiten. Ik heb zes 10 en vier 16 mm nylon schroeven gebruikt.
Zes M2 schroeven en moeren, om de servo's aan de platen te bevestigen en de servo's armen en tandwielen aan te sluiten.
Een paar druppels plastic lijm
Stap 2: Montage en gebruik van het apparaat
Wat betreft de AIY-voicekit zelf, volg gewoon de instructies in de beschrijving die bij de kit wordt geleverd, inclusief het gedeelte over de servo. Ik zou aanraden om meerdere drie-pins headers aan de servopoorten op de AIY voice breakout te solderen, zodat je heel gemakkelijk servo's, sensoren en LED's kunt aansluiten met de HAT.
Wat betreft de springjack, je kunt de tekeningen die ik hier heb aangeleverd als svg- en pdf-bestanden als sjabloon gebruiken, of ze gewoon aanpassen aan je eigen ideeën. Misschien wilt u de basislay-out van het tandwiel dat de benen en de arm van de springkrik aandrijft behouden, waarbij u ervoor zorgt dat de afstand tussen het draaipunt en het tandwiel hetzelfde is bij de servo, arm en been.
Als alternatief kunt u ook een versie bouwen waarbij armen en benen rechtstreeks worden aangedreven door vier afzonderlijke servo's, of door een meer geavanceerde versnelling.
Snijd met behulp van de tekening de stukken uit een Forex-, karton- of multiplexplaat en boor de gaten op de juiste posities. Lijm de afstandsstukken op de draaipunten van armen en benen, zorg voor een goede uitlijning van de gaten.
Bevestig de servo's en de bewegende delen aan de grondplaat. Voeg de afstandssensor en LED toe zoals aangegeven. De servo's worden vastgezet met M2-schroeven, alle bewegende delen met M3-schroeven. Ik heb nylon M3-schroeven gebruikt, maar alleen om esthetische redenen.
Controleer of de servo-armen in de middelste stand staan. Sluit servo-armen en tandwielen aan, ik heb hiervoor M2-schroeven gebruikt.
Bevestig servo's, LED's en de afstandssensor aan de servoconnectoren op het AIY-bord. Mogelijk hebt u wat verleng-/jumperkabels nodig. Ik heb de linker servo aangesloten op "servo0" (GPIO 26), de rechter servo op "servo2" (GPIO 13), de LED's op "servo5" (GPIO 24) en de sensor op "servo3" (GPIO 5) op de AIY stem HOED.
Kopieer het meegeleverde "Hampelmann.py"-bestand naar de AIY "src"-submap en maak het direct uitvoerbaar voor iedereen. Om dit te doen, kunt u het bestand selecteren in de bestandsbeheerder, vervolgens met de rechtermuisknop klikken en Eigenschappen selecteren, Permissies selecteren, naar Uitvoeren gaan, ~ iedereen selecteren. Of schrijf "chmod +x src/Hampelmann.py" in de dev-console.
Controleer of alles op zijn plaats en vast staat, of indien nodig verplaatsbaar is. Open de Dev-opdrachtregel, voer "src/Hampelmann.py" in en start het programma. Als u uw hand of vingers voor de afstandssensor beweegt, zal de AIY-eenheid om bestellingen vragen en zullen de LED's knipperen. Geïmplementeerde orders zijn “rechts/links/handen omhoog/omlaag/midden”, “dans”, “LED aan/uit” en “tot ziens”.
Toneelstuk. Beweeg uw hand voor de sensor, spreek wanneer u daarom wordt gevraagd en geef het apparaat even de tijd om te reageren. Latency is vrij hoog. Crtl+C of "Tot ziens" zal het programma stoppen.
U kunt het bestand wijzigen met Nano of een andere eenvoudige teksteditor.
Opmerkingen: Houd er rekening mee dat sommige woorden en termen worden herkend als woorden die beginnen met een hoofdletter, als 'Center' of 'Right Center', terwijl andere dat niet zijn, b.v. 'recht omhoog'. U moet het exacte formulier gebruiken dat door de spraakherkenningsmodule wordt teruggegeven om een actie te activeren.
Stap 3: Het Python-script
Zoals eerder vermeld, is het script gebaseerd op het servo_demo.py-script van de AIY-spraakinstructies, met enkele toevoegingen. De eerste versie is het Hampelmann.py-bestand dat u in bijlage vindt. AngularServo van GPIOZero maakt het mogelijk om het actiebereik van de servo te beperken en precies te definiëren hoe ver hij moet bewegen. Maar ik geef de voorkeur aan de Britse stem boven de originele. En het toestel kan ook wel spreken, maar niet verstaan (?), Engels, Duits, Italiaans, Frans en Spaans. Hieronder vind je het Hampelmann2.py-script, met de Britse stem, en een beetje Italiaans en Duits. Houd er rekening mee dat u de scripts uitvoerbaar moet maken om ze uit te voeren.
#!/usr/bin/env python3# Dit script is een aanpassing van het servo_demo.py script voor de AIY voice HAT, # geoptimaliseerd voor de AIY jumping jack import aiy.audio import aiy.cloudspeech import aiy.voicehat van gpiozero import LED van gpiozero import AngularServo van gpiozero import Knop van time import sleep def main(): herkenner = aiy.cloudspeech.get_recognizer() herkenner.expect_phrase('recht omhoog') herkenner.expect_phrase('recht naar beneden') herkenner.expect_phrase('Rechts Center') # de hoofdletters zijn er expres herkenner.expect_phrase('links boven') herkenner.expect_phrase('links beneden') herkenner.expect_phrase('links midden') herkenner.expect_phrase('hands up') herkenner.expect_phrase ('hands down') herkenner.expect_phrase('hands Center') herkenner.expect_phrase('Dance') herkenner.expect_phrase('LED aan') herkenner.expect_phrase('LED uit') herkenner.expect_phrase('tot ziens') aiy.audio.get_recorder().start() servo0 = AngularServo(26, min_angle=-40, max_angle=40) # 1e verbinding of GPIO 26 servo2 = AngularServo(13, min_angle=-40, max_angle=40) # 3e connector, GPIO 13 led0 = LED (24) # LED's zijn aangesloten op servo5/GPIO 24 afstand = knop (5) # afstandssensor aangesloten naar servo3/GPIO 05 # anderen: GPIO 6 op servo1, 12 op servo4 aiy.audio.say("Hallo!",) aiy.audio.say("Om te beginnen, beweeg je hand dicht bij de sensor",) terwijl True: led0.on() # LED's op print("Om stemherkenning te activeren, beweeg een hand in de buurt van de afstandssensor en spreek dan") print('Verwachte trefwoorden zijn: handen/links/rechts omhoog/omlaag/midden, ') print('LED aan/uit, dans en tot ziens.') print() distance.wait_for_press() print('Luisteren…') aiy.audio.say("Geef alstublieft uw bestellingen",) led0.blink() # light blink text = herkenner.recognize() als tekst Geen is: aiy.audio.say('Sorry, ik heb je niet gehoord.',) else: print('Je zei "', tekst, '"') # Hiermee kun je controleer de systeeminterpretatie als 'recht omhoog' in tekst: print('Bewegende servo0 naar maximale positie') servo0.angle=35 elif 'rechts naar beneden' in tekst: print('Bewegende servo0 naar minimum positie') servo0.angle=-35 elif 'Right Center' in tekst: #correcte hoofdletters zijn kritisch print('Moving servo0 to middle position') servo0.angle=0 elif 'left up' in text: print(' Servo2 naar maximale positie verplaatsen') servo2.angle=-35 elif 'left down' in tekst: print('Moving servo2 to minimum position') servo2.angle=35 elif 'left Center' in tekst: print('Moving servo2 to middelste positie') servo2.angle=0 elif 'hands up' in tekst: print('Moving servo2 to maximum position') servo2.angle=-35 servo0.angle=35 elif 'hands down' in tekst: print('Moving servo2 naar minimum positie') servo2.angle=35 servo0.angle=-35 elif 'hands Center' in tekst: print('Moving servo2 to middle position') servo2.angle=0 servo0.angle=0 elif 'LED uit' in tekst: print ('externe LED 0 uitschakelen') led0.off() elif 'LED aan' in tekst: print ('externe LED 0 inschakelen') led0.on() # light elif 'dans' in tekst: print ('nu doet dans nummer één') aiy.audio.say("Nou, ik zal mijn best doen!",) led0.on() # licht aan voor i binnen bereik (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 'tot ziens' in tekst: aiy.audio.say("Tot ziens",) aiy.audio.say('Arrivederci',) aiy.audio.say('Auf Wiedersehen',) servo0.angle=0 servo2.angle=0 led0.off() sleep (3) print('bye!') break else: print('geen trefwoord herkend!') aiy.audio.say("Sorry, ik begreep je niet",) if _name_ == ' _main_': hoofd()
Aanbevolen:
Op COVID-19 geïnspireerde spraakgestuurde domotica: 5 stappen
Door COVID-19 geïnspireerde spraakgestuurde huisautomatisering: in de afgelopen 4 jaar heb ik 3 of 4 verschillende variaties van op Arduino gebaseerde huisbedieningen geprobeerd. Voor ieders gemak is hier de chronologische geschiedenis van enkele van mijn ontwikkelingen. Instructable 1 - in oktober 2015 gebruikte IR en RF communica
Spraakgestuurde LED's: 8 stappen
Spraakgestuurde LED's: Webduino gebruikt de Chrome-internetbrowser om allerlei elektronische componenten te besturen, dus we zouden alle andere functies die Chrome te bieden heeft moeten kunnen gebruiken. In dit projectvoorbeeld gebruiken we de Speech API van Chrome. De spraakherkenning van Google gebruiken
Spraakgestuurde automatisering: 13 stappen
Spraakgestuurde automatisering: tegenwoordig hebben mensen altijd smartphones bij zich. Het is dus logisch om deze te gebruiken om huishoudelijke apparaten te bedienen. Hier wordt een domoticasysteem gepresenteerd met behulp van een eenvoudige Android-app, waarmee u elektrische apparaten kunt bedienen met een klik
Hoe een spraakgestuurde robot te maken: 3 stappen (met afbeeldingen)
Hoe een spraakgestuurde robot te maken: heb je ooit dingen op je stem willen bedienen? Dan ben je op de juiste plek, je kunt alle dingen besturen met behulp van arduino, je hoeft alleen die dingen aan te sluiten en in het programma te declareren. Ik heb een eenvoudige stem gemaakt bestuurde robot, maar u kunt verbinding maken
Een sprekende kleurensensor, gebaseerd op de AIY Voice Kit: 4 stappen
Een sprekende kleurensensor, gebaseerd op de AIY-spraakkit: nadat ik onlangs wat over braille had geleerd, vroeg ik me af of ik iets kon bouwen met de AIY-spraakkit voor de Raspberry Pi, dat een reëel voordeel kan hebben voor slechtzienden . Dus beschreven in het volgende vindt u een prototype