Obsah:

Hlasem ovládaný skákací konektor- verze Google Voice AIY: 3 kroky
Hlasem ovládaný skákací konektor- verze Google Voice AIY: 3 kroky

Video: Hlasem ovládaný skákací konektor- verze Google Voice AIY: 3 kroky

Video: Hlasem ovládaný skákací konektor- verze Google Voice AIY: 3 kroky
Video: Shopaholicadel se nám uhodila😭 2024, Listopad
Anonim
Hlasem ovládaný skákací konektor- verze Google Voice AIY
Hlasem ovládaný skákací konektor- verze Google Voice AIY
Hlasem ovládaný skákací konektor- verze Google Voice AIY
Hlasem ovládaný skákací konektor- verze Google Voice AIY
Skokový zvedák ovládaný hlasem- verze Google Voice AIY
Skokový zvedák ovládaný hlasem- verze Google Voice AIY
Skokový zvedák ovládaný hlasem- verze Google Voice AIY
Skokový zvedák ovládaný hlasem- verze Google Voice AIY

Takže jste dostali hlasovou sadu AIY na Vánoce a hráli jste si s ní podle pokynů. Je to legrační, ale teď?

Projekt popsaný v následujícím textu představuje jednoduché zařízení, které lze sestavit pomocí hlasového klobouku AIY pro Raspberry Pi. Používá systém rozpoznávání hlasu Google k ovládání LED diod a dvou serv, které ovládají ruce a nohy skákacího zvedáku velmi jednoduchým převodem.

Software pracující na pozadí je modifikací skriptu servo_demo.py, jak bylo popsáno v příručce hlasové sady AIY. Při nastavování hardwaru a softwaru postupujte podle uvedených pokynů. Samotné zařízení se snadno staví a nevyžaduje mnoho ručních dovedností. Kromě toho by pomohl řezací nůž, vrtačka a páječka.

Pokud mrknutím ruky aktivujete systém rozpoznávání hlasu a řeknete „ruce nahoru“, zvedací zvedák zvedne ruce a nohy, „střed rukou“přesune obě serva do střední polohy a na „ruce dolů“ruce a nohy být snížen. V poloze „vlevo nahoru“se zvedne levá ruka a nohy a „vpravo dolů“se spustí ty pravé, v poloze „vpravo nahoru“naopak. „Tanec“, roztančí to, alespoň trochu. Také mluví, podívejte se prosím na přiložené video.

S trochou snahy si tedy můžete postavit vlastního tanečního, chatovacího a zpívajícího robota.

Aby se zjednodušilo jeho použití zejména menšími dětmi a aby se zvýšil „magický“faktor, bylo tlačítko na krabici AIY nahrazeno spouštěcím senzorem přiblížení. Pro jeho jednoduchost jsem použil digitální snímač vzdálenosti od Pololu, který rozpozná, zda je předmět blíže než 5 cm, a lze jej použít velmi podobně jako tlačítko. LED diody indikují, kdy zařízení čeká na objednávky, poslouchá nebo „přemýšlí“. Serva, snímače a diody LED jsou ovládány softwarovou knihovnou GPIOZero.

Prototyp byl vyroben z forexových pěnových desek z PVC, které lze velmi snadno řezat a lepit řezacím nožem, ale jsou také docela stabilní. Nebojte se vytvořit větší, hezčí, vylepšenou nebo efektnější verzi, ale bylo by milé, kdybyste svá vylepšení zdokumentovali a předvedli.

Můžete použít obě strany těla, v závislosti na tom, zda chcete prezentovat pohybující se zařízení nebo mít pěkné rozvržení vhodné pro děti. --------- „Hampelmann“je německý výraz pro „skákací zvedák“, který má určité konotace.

Krok 1: Použité materiály

Použité materiály
Použité materiály
Použité materiály
Použité materiály

Raspberry Pi 3; 32 £ v Pimoroni, Velká Británie

Hlasová sada AIY; 25 £ v Pimoroni, Velká Británie

Digitální snímač vzdálenosti Pololu se snímačem Sharp, 5 cm; 5,90 € na Exp-tec.de

Dvě 9g serva

Dvě bílé LED diody a rezistor

Některé záhlaví a propojovací kabely

A 2 mm Forex deska, 250 x 500 mm; 1,70 EUR v Modulor, Berlín, Německo

Šrouby, matice a podložky M3 pro připojení všech pohyblivých částí. Použil jsem šest 10 a čtyř 16 mm nylonových šroubů.

Šest šroubů a matic M2 k upevnění serva k deskám a připojení ramen a ozubených kol serva.

Několik kapek plastového lepidla

Krok 2: Sestavení a používání zařízení

Montáž a používání zařízení
Montáž a používání zařízení
Montáž a používání zařízení
Montáž a používání zařízení
Montáž a používání zařízení
Montáž a používání zařízení

Pokud jde o samotnou hlasovou sadu AIY, postupujte podle pokynů v popisu dodaném se sadou, včetně části o servu. Doporučil bych připájet několik tříkolíkových konektorů k servoportům na AIY Breakout, takže pomocí HAT můžete velmi snadno připojit serva, senzor a LED.

Pokud jde o skákací zvedák, můžete buď použít výkresy, které jsem zde poskytl, jako soubory svg a PDF jako šablonu, nebo je jen upravit podle vlastních představ. Možná byste chtěli zachovat základní rozložení zařízení pohánějícího nohy a paže skákacího zvedáku a zajistit, aby vzdálenost mezi otočným bodem a převodem byla stejná u serva, paže a nohy.

Alternativně můžete také vytvořit verzi, kde jsou ruce a nohy poháněny přímo čtyřmi samostatnými servy nebo pokročilejším převodem.

Pomocí výkresu vystřihněte dílky z forexové, lepenkové nebo překližkové desky a vyvrtejte otvory na příslušných místech. Přilepte distanční dílky k výkyvným bodům paží a nohou a zajistěte dobré zarovnání otvorů.

Upevněte serva a pohyblivé části k základní desce. Podle pokynů přidejte snímač vzdálenosti a LED. Serva jsou upevněna šrouby M2, všechny pohyblivé části šrouby M3. Použil jsem šrouby Nylon M3, ale jen z estetických důvodů.

Zkontrolujte, zda jsou ramena serva umístěna ve střední poloze. Připojte servo ramena a převody, k tomuto účelu jsem použil šrouby M2.

Připojte serva, diody LED a snímač vzdálenosti ke konektorům serv na desce AIY. Možná budete potřebovat nějaké prodlužovací/propojovací kabely. Připojil jsem levé servo k „servo0“(GPIO 26), pravé servo k „servo2“(GPIO 13), diody LED k „servo5“(GPIO 24) a senzor k „servo3“(GPIO 5) na AIY hlas Klobouk.

Zkopírujte dodaný soubor „Hampelmann.py“do podsložky AIY „src“a zajistěte, aby byl pro každého přímo spustitelný. Chcete -li to provést, vyberte soubor ve správci souborů, klikněte pravým tlačítkem a vyberte Vlastnosti, vyberte Oprávnění, přejděte na Spustit, vyberte ~ kdokoli. Nebo napište „chmod +x src/Hampelmann.py“do konzoly pro vývojáře.

Zkontrolujte, zda je vše nastaveno na místě a upevněno, nebo zda je v případě potřeby pohyblivé. Otevřete příkazový řádek Dev, zadejte „src/Hampelmann.py“a spusťte program. Pokud pohnete rukou nebo prsty před snímač vzdálenosti, jednotka AIY požádá o objednávky a LED diody budou blikat. Realizované objednávky jsou „doprava/doleva/ruce nahoru/dolů/střed“, „tanec“, „LED zapnuto/vypnuto“a „sbohem“.

Hrát si. Přesuňte ruku před senzor, mluvte, když o to budete požádáni, a nechte zařízení chvíli reagovat. Latence je poměrně vysoká. Crtl+C nebo „Goodbye“zastaví program.

Soubor můžete upravit pomocí Nano nebo jiného jednoduchého textového editoru.

Poznámky: Mějte prosím na paměti, že některá slova a termíny jsou považována za slova začínající velkým písmenem, jako „střed“nebo „pravý střed“, zatímco jiná nikoli, např. 'Hned'. Chcete -li spustit nějakou akci, musíte použít přesný formulář daný modulem rozpoznávání hlasu.

Krok 3: Skript Python

Jak již bylo zmíněno dříve, skript je založen na skriptu servo_demo.py z hlasových pokynů AIY, s některými dodatky. První verzí je soubor Hampelmann.py, který najdete v příloze. AngularServo od GPIOZero umožňuje omezit akční rozsah serva a přesně definovat, jak daleko se bude pohybovat. Dávám však přednost britskému hlasu před původním. A zařízení také umí mluvit, ale nerozumí (?), Anglicky, německy, italsky, francouzsky a španělsky. Níže najdete skript Hampelmann2.py s britským hlasem a trochou italštiny a němčiny. Mějte na paměti, že pro jejich spuštění musíte nastavit spustitelné skripty.

#!/usr/bin/env python3 # Tento skript je adaptací skriptu servo_demo.py pro hlasový klobouk AIY, # optimalizovaný pro AI AI jumping jack aiy.audio import aiy.cloudspeech import aiy.voicehat z gpiozero import LED z importu gpiozero AngularServo z importu gpiozero Tlačítko z času importu spánku def main (): rozpoznávání = aiy.cloudspeech.get_recognizer () Center ') # velká písmena jsou zde účelově ('ruce dolů') recognitionnizer.expect_phrase ('hands center').audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1. připojení nebo, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3. konektor, GPIO 13 led0 = LED (24) # LED jsou připojeny k servo5/GPIO 24 vzdálenost = tlačítko (5) # připojeno čidlo vzdálenosti na servo3/GPIO 05 # ostatní: GPIO 6 na servo1, 12 na servo4 aiy.audio.say („Hello!“,) aiy.audio.say („Chcete -li začít, přesuňte ruku blízko senzoru“,) při True: led0.on () # LED diody na tisku („Chcete -li aktivovat rozpoznávání hlasu, přesuňte ruku blízko snímače vzdálenosti a poté mluvte“) vytiskněte („Očekávaná klíčová slova jsou: ruce/doleva/doprava nahoru/dolů/uprostřed,“) print ('LED on/off, dance and goodbye.') print () distance.wait_for_press () print ('Listening …') aiy.audio.say ("Please give your commands",) led0.blink () # light mrknutí textu = zkontrolujte interpretaci systémů, pokud je text „vpravo nahoru“: tisk („Přesun servo0 do maximální polohy“) servo0.angle = 35 elif „doprava dolů“v textu: tisk („Přesun servo0 servo0.angle = -35 elif 'Right Center' v textu: #correct captials are critical print ('Moving servo0 to middle position') servo0.angle = 0 elif 'left up' in text: print (' Přesun servo2 do maximální polohy ') servo2.angle = -35 elif' doleva 'v textu: tisk (' Přesun servo2 do minimální polohy ') servo2.angle = 35 elif' doleva 'v textu: tisk (' Přesun servo2 do střední pozice ') servo2.angle = 0 elif' rukou nahoru 'v textu: tisk (' Přesun servo2 do maximální polohy ') servo2.angle = -35 servo0.angle = 35 elif' ruce dolů 'v textu: tisk (' Pohyb servo2 do minimální polohy ') servo2.angle = 35 servo0.angle = -35 elif' hands Center 'v textu: tisk (' Přesun servo2 do střední polohy ') servo2.angle = 0 servo0.angle = 0 elif' LED off ' v textu: tisk ('vypnutí externí LED 0') led0.off () elif 'LED zapnuto' v textu: tisk ('zapnutí externí LED 0') led0.on () # světlo elif 'tanec' v textu: print ('now performing dance number one') aiy.audio.say („No, budu se snažit ze všech sil!“,) led0.on () # svítí pro i v rozsahu (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' in text: aiy.audio.say ("Goodbye",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) servo0.angle = 0 servo2.angle = 0 led0.off () spánek (3) tisk ('ahoj!') break else: print ('žádné klíčové slovo nebylo rozpoznáno!') aiy.audio.say ("Promiň, nerozuměl jsem ti",) pokud _name_ == ' _main_ ': main ()

Doporučuje: