Talaan ng mga Nilalaman:

Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng Google Voice AIY: 3 Mga Hakbang
Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng Google Voice AIY: 3 Mga Hakbang

Video: Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng Google Voice AIY: 3 Mga Hakbang

Video: Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng Google Voice AIY: 3 Mga Hakbang
Video: Автостопом по Вана'диэлю, фильм FF11 2024, Hulyo
Anonim
Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng AIY ng Google Voice
Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng AIY ng Google Voice
Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng AIY ng Google Voice
Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng AIY ng Google Voice
Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng AIY ng Google Voice
Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng AIY ng Google Voice
Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng AIY ng Google Voice
Isang Kinokontrol na Boses ng Jumping Jack- Bersyon ng AIY ng Google Voice

Nakuha mo na ang AIY voice kit para sa Pasko, at naglalaro dito, sumusunod sa mga tagubilin. Nakakatawa, ngunit ngayon?

Ang proyekto na inilarawan sa mga sumusunod ay nagtatanghal ng isang simpleng aparato na maaaring bumuo gamit ang AIY boses HAT para sa Raspberry Pi. Gumagamit ito ng system ng pagkilala sa boses ng Google upang makontrol ang mga LED at dalawang servo, na hinihimok ang mga braso at binti ng isang jumping jack ng isang napaka-simpleng gamit.

Ang software na gumagana sa background ay isang pagbabago ng servo_demo.py script, tulad ng nailarawan sa manu-manong AIY kit ng manu-manong. Sundin lamang ang mga tagubiling ibinigay doon upang mag-set up ng hard- at software. Ang aparato mismo ay madaling buuin at nangangailangan ng hindi gaanong kasanayan sa pag-handcrafting. Bilang karagdagan ng isang cutter kutsilyo, isang drill at isang panghinang ay makakatulong.

Kung buhayin mo ang system ng pagkilala ng boses gamit ang isang kindat ng iyong kamay at sasabihing 'hands up' ang jumping jack ay magtataas ng mga kamay at binti, ang 'hands center' ay lilipat ng parehong servos sa gitnang posisyon at sa 'hands down' na mga kamay at binti ay ibababa Sa 'kaliwang up' ang kaliwang kamay at mga binti ay itataas at sa "kanan pababa" ang mga kanang ibinaba, sa 'kanan pataas' sa kabaligtaran. "Sayaw", isasayaw ito, hindi bababa sa uri ng. Pinag-uusapan din ito, mangyaring tingnan ang nakalakip na video.

Kaya sa kaunting pagsisikap, maaari kang bumuo ng iyong sariling sayaw, pakikipag-chat at pag-awit ng robot.

Upang gawing simple ang paggamit nito lalo na ng mga maliliit na bata, at upang mapagbuti ang kadahilanan ng 'mahika', ang pindutan sa AiY box ay pinalitan bilang pag-trigger ng isang proximity sensor. Para sa pagiging simple nito, gumamit ako ng isang digital distansya ng sensor breakout mula sa Pololu na kinikilala kung ang isang bagay ay mas malapit sa 5 cm, at maaaring magamit tulad ng isang pindutan. Ipinapahiwatig ng mga LED kapag naghihintay ang aparato ng mga order, pakikinig o "pag-iisip". Ang mga servos, sensor at LED ay kinokontrol ng GPIOZero software library.

Ang prototype ay itinayo mula sa Forex, mga plate ng foam ng PVC, na maaaring maputol ng napakadali gamit ang isang cutter kutsilyo at nakadikit, ngunit medyo matatag din. Huwag mag-atubiling bumuo ng isang mas malaki, mas mahusay, pinabuting o mas magarbong bersyon, ngunit magiging mabait kung idokumento mo at ipapakita ang iyong mga pagpapabuti.

Maaari mong gamitin ang magkabilang panig ng katawan, nakasalalay kung nais mong ipakita ang gumagalaw na gamit o magkaroon ng isang magandang, layout na para sa mga bata. --------- "Hampelmann" ay ang terminong Aleman para sa "jumping jack", pagkakaroon ng ilang mga konotasyon.

Hakbang 1: Ginamit na Mga Materyales

Mga Ginamit na Materyal
Mga Ginamit na Materyal
Mga Ginamit na Materyal
Mga Ginamit na Materyal

Raspberry Pi 3; 32 £ sa Pimoroni, UK

AIY boses Kit; 25 £ sa Pimoroni, UK

Pololu digital distansya sensor breakout na may Sharp sensor, 5 cm; 5.90 € sa Exp-tec.de

Dalawang 9g servos

Dalawang puting LEDs at isang risistor

Ang ilang mga header at jumper cable

Isang 2 mm Forex plate, 250 x 500 mm; 1.70 € sa Modulor, Berlin, Germany

M3 screws, nut at washers, upang ikonekta ang lahat ng gumagalaw na bahagi. Gumamit ako ng anim na 10 at apat na 16 mm na mga turnilyo ng Nylon.

Anim na M2 na turnilyo at mani, upang ayusin ang mga servo sa mga plato at ikonekta ang mga braso at gear ng servos.

Ilang patak ng plastic glue

Hakbang 2: Assembly at Paggamit ng Device

Assembly at Paggamit ng Device
Assembly at Paggamit ng Device
Assembly at Paggamit ng Device
Assembly at Paggamit ng Device
Assembly at Paggamit ng Device
Assembly at Paggamit ng Device

Tungkol sa AIY voice kit mismo, sundin lamang ang mga tagubilin sa paglalarawan na kasama ng kit, kasama ang seksyon tungkol sa servo. Inirerekumenda kong maghinang ng maraming mga three-pin header sa mga servo port sa AIY voice breakout, kaya maaari mong ikonekta ang mga servos, sensor at LED na napakadali ng HAT.

Tungkol sa jumping jack, maaari mong gamitin ang mga guhit na ibinigay ko dito bilang mga svg- at PDF-file bilang isang template, o baguhin lamang ang mga ito ayon sa iyong sariling mga ideya. Maaari mong panatilihin ang pangunahing layout ng gear na hinihimok ang mga binti at braso ng jumping jack, tinitiyak na ang distansya sa pagitan ng pivoting point at ng gear ay pareho sa servo, braso at binti.

Bilang kahalili, maaari ka ring bumuo ng isang bersyon ay ang mga braso at binti ay direktang hinihimok ng apat na magkakahiwalay na servo, o ng isang mas advanced na gear.

Gamit ang pagguhit, gupitin ang mga piraso mula sa isang Forex, karton o plato ng playwud at drill ang mga butas sa mga naaangkop na posisyon. Kola ang mga piraso ng distansya sa mga pivoting point ng mga braso at binti, tinitiyak ang mahusay na pagkakahanay ng mga butas.

Ayusin ang mga servos at ang mga gumagalaw na bahagi sa base plate. Idagdag ang distansya sensor at LED tulad ng ipinahiwatig. Ang servos ay naayos na may M2 screws, lahat ng mga gumagalaw na bahagi na may M3 screws. Gumamit ako ng mga Nylon M3 turnilyo, ngunit para lamang sa mga kadahilanan na walang katuturan.

Suriin kung ang mga braso ng servo ay nakalagay sa gitnang posisyon. Ikonekta ang servo arm at gears, gumamit ako ng M2 screws para sa hangaring ito.

Ikabit ang mga servo, LEDs at sensor ng distansya sa mga konektor ng servo sa board ng AIY. Maaaring kailanganin mo ang ilang mga elongation / jumper cable. Inilakip ko ang kaliwang servo sa "servo0" (GPIO 26) ang tamang servo sa "servo2" (GPIO 13), ang mga LED sa "servo5" (GPIO 24), at ang sensor sa "servo3" (GPIO 5) sa AIY boses HAT.

Kopyahin ang ibinigay na "Hampelmann.py" na file sa AIY "src" subfolder at gawin itong direktang maipapatupad para sa sinuman. Upang magawa ito, maaari mong piliin ang file sa file manager, pagkatapos ay i-right click at piliin ang Mga Katangian, piliin ang Mga Pahintulot, pumunta sa Ipatupad, piliin ang ~ kahit sino. O isulat ang "chmod + x src / Hampelmann.py" sa dev console.

Suriin kung ang lahat ay nakatakda sa lugar at naayos, o maaaring ilipat kung kinakailangan. Buksan ang linya ng utos ng Dev, ipasok ang "src / Hampelmann.py" at simulan ang programa. Kung igagalaw mo ang iyong kamay o mga daliri sa harap ng sensor ng distansya, hihilingin sa yunit ng AIY ang mga order at ang mga LED ay magpikit. Ang mga ipinatupad na order ay ang "kanan / kaliwa / kamay pataas / pababa / gitna", "sayaw", "LED on / off" at "paalam".

Maglaro Igalaw ang kamay sa harap ng sensor, magsalita kapag tinanong, at bigyan ang aparato ng kaunting oras upang makapag-reaksyon. Mas mataas ang latency. Ititigil ng Crtl + C o "Paalam" ang programa.

Maaari mong baguhin ang file gamit ang Nano o ibang simpleng text editor.

Mga Pahayag: Mangyaring magkaroon ng kamalayan na ang ilang mga salita at term ay kinikilala bilang mga salita na nagsisimula sa isang malaking titik, bilang 'Center' o 'Right Center', tulad ng iba ay hindi, hal. 'Tama up'. Kailangan mong gamitin ang eksaktong form na ibinalik ng module ng pagkilala sa boses upang ma-trigger ang ilang aksyon.

Hakbang 3: Ang Python Script

Tulad ng nabanggit dati, ang script ay batay sa servo_demo.py script mula sa mga tagubilin sa boses ng AIY, na may ilang mga karagdagan. Ang unang bersyon ay ang Hampelmann.py file na mahahanap mong naka-attach. Pinapayagan ng AngularServo mula sa GPIOZero na paghigpitan ang saklaw ng pagkilos ng servo at tukuyin nang eksakto kung gaano kalayo ang lilipat. Ngunit mas gusto ko ang boses ng British kaysa sa orihinal. At ang aparato ay maaari ring magsalita, ngunit hindi maunawaan (?), English, German, Italian, French at Spanish. Sa ibaba makikita mo ang Hampelmann2.py script, na may boses ng British, at isang maliit na Italyano at Aleman. Mangyaring tandaan na kailangan mong gawin ang mga script na naisakatuparan upang mapatakbo ang mga ito.

#! / usr / bin / env python3 # Ang script na ito ay isang adaption ng servo_demo.py script para sa AIY voice HAT, # na-optimize para sa AIY jumping jack import aiy.audio import aiy.cloudspeech import aiy.voicehat mula sa gpiozero import LED mula sa gpiozero import AngularServo mula sa gpiozero import Button mula sa oras import sleep def main (): recognitor = aiy.cloudspeech.get_recognizer () recognitor.expect_phrase ('pataas pataas') na kinikilala.expect_phrase ('pakanan pababa') kinikilala.expect_phrase ('Kanan Center ') # ang mga malalaking titik ay naroroon nang kinikilala.expect_phrase (' left up ') recognitor.expect_phrase (' left down ') recognizer.expect_phrase (' left Center ') recognitor.expect_phrase (' hands up ') recognitor.expect_phrase ('hands down') recognitor.expect_phrase ('hands Center') recognitor.expect_phrase ('Dance') recognitor.expect_phrase ('LED on') recognitor.expect_phrase ('LED off') recognizer.expect_phrase ('paalam') aiy.audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1st connect o, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # Ika-3 na konektor, GPIO 13 led0 = LED (24) # LEDs ay konektado sa servo5 / GPIO 24 distansya = Button (5) # distansya ng sensor na konektado to servo3 / GPIO 05 # others: GPIO 6 at servo1, 12 at servo4 aiy.audio.say ("Hello!",) aiy.audio.say ("Upang magsimula, ilipat ang iyong kamay malapit sa sensor",) habang Totoo: led0. print ('LED on / off, sayaw at paalam.') print () distance.wait_for_press () print ('Listening…') aiy.audio.say ("Mangyaring ibigay ang iyong mga order",) led0.blink () # light blink text = recognizer.recognize () kung ang teksto ay Wala: aiy.audio.say ('Paumanhin, hindi kita narinig.',) iba pa: i-print ('Sinabi mo na' ', teksto,' "') # Hinahayaan ka suriin ang interpretasyon ng mga system kung 'pataas' sa teksto: i-print ('Ang paglipat ng servo0 sa maximum na posisyon') servo0.angle = 35 elif 'pakanan pababa' sa teksto: i-print ('Moving servo0 sa pinakamaliit na posisyon ') servo0.angle = -35 elif' Right Center 'sa teksto: #correct captials ay kritikal na print (' Moving servo0 to middle posisyon ') servo0.angle = 0 elif' left up 'in text: print (' Ang paglipat ng servo2 sa maximum na posisyon ') servo2.angle = -35 elif' left down 'sa teksto: print (' Moving servo2 to minimum position ') servo2.angle = 35 elif' left Center 'in text: print (' Moving servo2 to gitnang posisyon ') servo2.angle = 0 elif' hands up 'sa teksto: print (' Moving servo2 to maximum posisyon ') servo2.angle = -35 servo0.angle = 35 elif' hands down 'sa teksto: print (' Moving servo2 sa minimum na posisyon ') servo2.angle = 35 servo0.angle = -35 elif' hands Center 'sa teksto: print (' Moving servo2 to middle position ') servo2.angle = 0 servo0.angle = 0 elif' LED off ' sa teksto: print ('switching external LED 0') led0.off () elif 'LED on' in text: print ('switching on external LED 0') led0.on () # light elif 'dance' in text: i-print ('gumaganap ngayon ang sayaw bilang isa') aiy.audio.say ("Well, I will try my best!",) led0.on () # lights on para sa ako sa saklaw (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 'paalam' sa teksto: aiy.audio.say ("Paalam",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) servo0.angle = 0 servo2.angle = 0 led0.off () pagtulog (3) print ('bye!') masira pa: i-print ('walang kinikilalang keyword!') aiy.audio.say ("Paumanhin, hindi kita naintindihan",) kung _name_ == ' _main_ ': pangunahing ()

Inirerekumendang: