Mundarija:
Video: Ovozli boshqariladigan sakrash jeki- Google Voice AIY versiyasi: 3 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Shunday qilib, siz Rojdestvo uchun AIY ovozli to'plamini oldingiz va u bilan ko'rsatmalarga amal qilib o'ynadingiz. Bu kulgili, lekin hozir?
Quyida tasvirlangan loyihada Raspberry Pi uchun AIY ovozli HAT yordamida qurilishi mumkin bo'lgan oddiy qurilma taqdim etilgan. U Google ovozni aniqlash tizimidan foydalanib, LED va ikkita servolarni boshqaradi, sakrash uyasining qo'llari va oyoqlarini juda oddiy uzatmalar bilan boshqaradi.
Orqa fonda ishlaydigan dasturiy ta'minot AIY ovozli to'plami qo'llanmasida tasvirlangan servo_demo.py skriptining modifikatsiyasi. Qattiq va dasturiy ta'minotni o'rnatish uchun u erda berilgan ko'rsatmalarga amal qiling. Qurilmaning o'zi oson quriladi va qo'l san'atlari uchun ko'p mahorat talab qilmaydi. Bundan tashqari, kesuvchi pichoq, matkap va lehimlanadigan temir yordam beradi.
Agar siz ovozni aniqlash tizimini qo'lingni qimirlatib faollashtirsangiz va "qo'llar yuqoriga" deb aytsangiz, sakrash uyasi qo'l va oyoqlarini ko'taradi, "qo'llar markazi" ikkala servolarni ham o'rta holatga, ham qo'llar va oyoqlarni "pastga tushadi". tushirilishi. "Chapdan yuqoriga" chap qo'llar va oyoqlar ko'tariladi va "o'ngdan pastda" o'nglar pastga, "o'ngdan yuqoriga" aksincha. "Raqs" raqsga tushadi, hech bo'lmaganda. Bu ham gapiradi, iltimos, ilova qilingan videoni ko'ring.
Shunday qilib, ozgina harakat bilan siz o'zingiz raqsga tushadigan, suhbatlashadigan va qo'shiq aytadigan robot yaratishingiz mumkin.
Ayniqsa, kichkina bolalar uchun undan foydalanishni soddalashtirish va "sehrli" omilni kuchaytirish uchun AIY qutisidagi tugma yaqinlik sensori bilan almashtirildi. Oddiyligi uchun men Pololu -dan raqamli masofadan o'lchash datchigidan foydalandim, u ob'ekt 5 sm dan yaqinroq ekanligini aniqlaydi va uni tugma kabi ishlatish mumkin. LEDlar, qurilma qachon buyurtmalarni, tinglashni yoki "o'ylashni" kutayotganini ko'rsatadi. Servo, sensor va LEDlar GPIOZero dasturiy kutubxonasi tomonidan boshqariladi.
Prototip PVX ko'pikli plastinkalardan yasalgan bo'lib, ularni kesuvchi pichoq bilan kesish juda oson va yopishtirilishi mumkin, lekin ayni paytda ancha barqaror. Kattaroq, chiroyli, takomillashtirilgan yoki yanada chiroyli versiyasini qurishdan xavotir olmang, lekin yaxshilanishlaringizni hujjatlashtirsangiz yaxshi bo'lardi.
Siz harakatlanuvchi moslamani taqdim qilmoqchimisiz yoki bolalar uchun qulay, chiroyli ko'rinishga ega bo'lishingizdan qat'i nazar, tananing har ikki tomonini ishlatishingiz mumkin. --------- "Hampelmann"-bu nemischa "sakrash jek" so'zi bo'lib, ma'lum ma'noga ega.
1 -qadam: Ishlatilgan materiallar
Raspberry Pi 3; Buyuk Britaniyaning Pimoroni shahrida 32 funt
AIY ovozli to'plami; Buyuk Britaniyaning Pimoroni shahrida 25 funt
Pololu raqamli masofa sensori, 5 sm; Exp-tec.de saytida 5,90 evro
Ikkita 9 g servo
Ikkita oq LED va qarshilik
Ba'zi sarlavhalar va o'tish kabellari
2 mm Forex plitasi, 250 x 500 mm; 1.70 €, Modulor, Berlin, Germaniya
Barcha harakatlanuvchi qismlarni ulash uchun M3 vintlar, yong'oqlar va yuvish mashinalari. Men oltita 10 va to'rtta 16 mm neylon vintni ishlatardim.
Servolarni plastinkalarga mahkamlash va qo'llar va viteslarni ulash uchun oltita M2 vint va yong'oq.
Bir necha tomchi plastik elim
2 -qadam: Qurilmani yig'ish va ishlatish
AIY ovozli to'plamiga kelsak, to'plam bilan birga kelgan tavsifdagi ko'rsatmalarga amal qiling, shu jumladan servo bo'limi. Men AIY ovoz uzilishidagi servo portlarga bir nechta uch pinli sarlavhalarni lehimlashni maslahat berardim, shuning uchun siz HAT bilan servo, sensor va LEDlarni juda oson ulashingiz mumkin.
O'tish jakiga kelsak, men bu erda taqdim etgan chizmalardan svg va PDF-fayllarni shablon sifatida ishlatishingiz yoki ularni o'z g'oyalaringizga ko'ra o'zgartirishingiz mumkin. O'tish nuqtasi va tishli orasidagi masofa servo, qo'l va oyoqda bir xil bo'lishini ta'minlash uchun siz sakrovchining oyoqlari va qo'llarini harakatlantiruvchi vitesning asosiy tartibini saqlashni xohlashingiz mumkin.
Shu bilan bir qatorda, agar siz qo'llar va oyoqlar to'g'ridan -to'g'ri to'rtta alohida servo yoki ilg'or vites bilan boshqarilsa, siz ham versiyani yaratishingiz mumkin.
Chizilgan rasmdan foydalanib, Forex, karton yoki kontrplak plastinkasidan bo'laklarni kesib oling va teshiklarni tegishli joylarga burang. Teshiklarning yaxshi hizalanishini ta'minlash uchun masofa bo'laklarini qo'l va oyoqlarning burilish nuqtalariga yopishtiring.
Servo va harakatlanuvchi qismlarni asosiy plastinkaga mahkamlang. Ko'rsatilganidek, masofa sensori va LEDni qo'shing. Servo M2 vintlar bilan, barcha harakatlanuvchi qismlar M3 vintlar bilan o'rnatiladi. Men neylon M3 vintlarini ishlatardim, lekin faqat estetik sabablarga ko'ra.
Servo qo'llar o'rta holatga qo'yilganligini tekshiring. Servo qo'llar va viteslarni ulang, men buning uchun M2 vintlarini ishlatardim.
AIY kartasidagi servo ulagichlarga servo, LED va masofa sensori ulang. Sizga uzaytiruvchi/o'tish kabellari kerak bo'lishi mumkin. Men chap servo "servo0" ga (GPIO 26), o'ng servo "servo2" ga (GPIO 13), LEDlar "servo5" ga (GPIO 24), sensor esa AIYda "servo3" (GPIO 5) ulanganman. ovoz HAT.
Taqdim etilgan "Hampelmann.py" faylini AIY "src" pastki jildiga nusxalash va uni hamma uchun to'g'ridan -to'g'ri bajariladigan qilib qo'yish. Buning uchun siz fayl menejerida faylni tanlashingiz mumkin, keyin sichqonchaning o'ng tugmachasini bosing va Xususiyatlar -ni tanlang, Ruxsatnomalarni tanlang, Ijroga o'ting, ~ har kimni tanlang. Yoki konsolda "chmod +x src/Hampelmann.py" deb yozing.
Hamma narsa joyida va to'g'rilanganligini yoki kerak bo'lganda ko'charligini tekshiring. Dev buyruq qatorini oching, "src/Hampelmann.py" kiriting va dasturni ishga tushiring. Agar siz qo'l yoki barmoqlaringizni masofa sensori oldida harakatlantirsangiz, AIY birligi buyurtma so'raydi va LEDlar miltillaydi. Amalga oshirilgan buyurtmalar "o'ng/chap/qo'llar yuqoriga/pastga/markaz", "raqs", "LEDni yoqish/o'chirish" va "xayr".
O'ynang. Qo'lingizni sensor oldida harakatlantiring, so'ralganda gapiring va qurilmaga reaktsiya berish uchun biroz vaqt bering. Kechikish ancha yuqori. Crtl+C yoki "Xayr" tugmasi dasturni to'xtatadi.
Siz faylni Nano yoki boshqa oddiy matn muharriri yordamida o'zgartirishingiz mumkin.
Izohlar: Shuni yodda tutingki, ba'zi so'zlar va atamalar bosh harf bilan boshlanadigan so'zlar sifatida tan olinadi, "Markaz" yoki "O'ng markaz", boshqalari emas, masalan. "To'g'ri". Harakatni boshlash uchun siz ovozni aniqlash moduli tomonidan berilgan aniq shaklni ishlatishingiz kerak.
3 -qadam: Python skript
Yuqorida aytib o'tganimizdek, skript AIY ovozli ko'rsatmalaridan olingan servo_demo.py skriptiga asoslangan va ba'zi qo'shimchalar bilan. Birinchi versiya - bu Hampelmann.py fayli. GPIOZero -dan AngularServo servo diapazonini cheklash va qanchalik uzoqqa ketishini aniq belgilashga imkon beradi, lekin men ingliz ovozini aslidan ko'ra afzal ko'raman. Qurilma ingliz, nemis, italyan, frantsuz va ispan tillarida ham gapirishi mumkin, lekin tushunmaydi (?). Quyida inglizcha ovozli, biroz italyan va nemis tilidagi Hampelmann2.py skriptini topasiz. Shuni yodda tutingki, ularni ishga tushirish uchun skriptlarni bajariladigan qilib qo'yish kerak.
#!/usr/bin/env python3 # Bu skript AIY ovozli HAT uchun servo_demo.py skriptining moslashuvi, # AIY o'tish moslamasi uchun optimallashtirilgan aiy.audio import aiy.cloudspeech import aiy.voicehat gpiozero import LED dan. gpiozero importidan AngularServo dan gpiozero importidan Vaqtni import qilish uyqu def (): tanib oluvchi = aiy.cloudspeech.get_recognizer () taniyuvchi.expect_phrase ("o'ngdan yuqoriga") tan oluvchi. Center ') # katta harflar ataylab mavjud. ("qo'llar pastga") tanib oluvchi. kutish_ iborasi ("qo'llar markazi") tan oluvchi. kutish_ iborasi ("raqs") tan oluvchi..audio.get_recorder (). start () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1-ulanish yoki, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3-ulagich, GPIO 13 led0 = LED (24) # LEDlar servo5ga ulangan/GPIO 24 masofa = Tugma (5) # masofa sensori ulangan servo3/GPIO 05 # boshqalarga: servo1 da GPIO 6, servo4 da 12 aiy.audio.say ("Salom!",) aiy.audio.say ("Boshlash uchun qo'lingizni sensorga yaqinlashtiring",) rost.: led0.on () # LEDlar bosma ("Ovozni aniqlashni faollashtirish uchun qo'lni masofa sensori yoniga yaqinlashtiring, keyin gapiring") chop eting ('Kutilayotgan kalit so'zlar: qo'llar/chap/o'ng yuqoriga/pastga/markaz,') chop etish ('LEDni yoqish/o'chirish, raqs va xayr.') print () masofa.wait_for_press () chop etish ('Tinglayapti …') aiy.audio.say ("Buyurtmalaringizni bering",) led0.blink () # yorug'lik milt -milt = matnni tanib olish.recognize () agar matn Yo'q bo'lsa: aiy.audio.say ('Kechirasiz, men sizni eshitmadim.',) boshqa: chop etish ('Siz aytdingiz "', matn, '"') # Sizga ruxsat Matnda "o'ng yuqoriga" bo'lsa, tizimlar talqinini tekshiring: chop etish ("Servo0 maksimal holatiga ko'chiriladi") servo0.angle = 35 elif "o'ngga pastga" matnda: chop etish ('Servo0 harakatlanmoqda minimal pozitsiyaga ') servo0.angle = -35 elif' O'ng markaz 'matnda: #to'g'ri sarlavhalar muhim bosma (' servo0 o'rta holatiga ko'chiriladi ') servo0.angle = 0 elif' chapga 'matnda: chop etish (' Servo2 ni maksimal holatga o'tkazish ') servo2.angle = -35 elif' chapga 'matnda: chop etish (' servo2 minimal holatga o'tkazilmoqda ') o'rta pozitsiya ') servo2.angle = 0 elif "qo'llar yuqoriga" matnda: chop etish (' servo2 maksimal holatiga o'tkaziladi ') servo2.angle = -35 servo0.angle = 35 elif' qo'llar pastga 'matnda: chop etish (' harakatlanmoqda servo2 minimal holatga ') servo2.angle = 35 servo0.angle = -35 elif' qo'llar markazida 'matnda: chop etish (' servo2 o'rta holatiga ko'chirilmoqda ') servo2.angle = 0 servo0.angle = 0 elif' LED o'chirilgan ' matnda: chop etish ("tashqi LED 0 o'chirilishi") led0.off () elif "LED yoqilgan" matnda: chop etish ("tashqi LED 0 yoqilishi") led0.on () # yorug'lik elif "raqs" matnda: print ('hozir raqs raqami birinchi') aiy.audio.say ("Xo'sh, men qo'limdan kelganicha harakat qilaman!"), led0.on () # chiroqlar yondi i uchun (3) diapazonda: servo0.angle = 0 servo2.angle = 0 uyqu (1) servo0.angle = 35 servo2.angle = -35 uyqu (1) servo0.angle = 0 servo2.angle = -35 uyqu (1) servo0.angle = -25 servo2.angle = 0 uyqu (1) servo0.angle = 30 servo2.angle = 20 uyqu (1) servo0.angle = 0 servo2.angle = 0 led0.off () # yorug'lik o'chirilgan elif Matnda "xayr" led0.off () uxlash (3) chop etish ('xayr!') tanaffus boshqa: chop etish ('kalit so'z aniqlanmagan!') aiy.audio.say ("Kechirasiz, men sizni tushunmadim",) agar _name_ == ' _main_ ': asosiy ()
Tavsiya:
Jek-sakrash taymeri: 3 qadam
Jek-sakrash taymeri: Men sakrash krikolarimni sanashni va o'zimni sakrash krikolarini oldindan tayyorlaganimda, o'zimni davom ettirishni rag'batlantirishni xohlardim, shuning uchun har safar sakrashni tugatganimda Super Mario Brothers qo'ng'irog'ini eshitadigan sakrash taymerini yaratdim
Orqaga sakrash! Arduino va Acclerometer yordamida virtual haqiqat o'yini: 9 qadam
Orqaga sakrash! Arduino va Acclerometer yordamida virtual haqiqat o'yini: Bu qo'llanmada biz Arduino va Acclerometer yordamida Virtual Reality o'yinini yaratamiz
Ovozli ovozli fayllarni (Wav) Arduino va DAC yordamida ijro etish: 9 qadam
Ovozli ovozli fayllarni (Wav) Arduino va DAC yordamida ijro etish: Audino SD -kartangizdan wav faylli ovozni ijro etish. Bu ko'rsatma sizga sdCard -dagi wav faylini dinamikdan oddiy zanjir orqali qanday ijro etish mumkinligini ko'rsatib beradi. Wav fayli 8 bitli mono bo'lishi kerak. Menda 44 kHz chastotali fayllarni ijro etish muammosi yo'q edi
NODEMCU 1.0 (ESP8266) BLYNK (WEB VERSIYASI) dan foydalangan holda boshqariladigan röle: 5 qadam (rasmlar bilan)
NODEMCU 1.0 (ESP8266) BLYNK (WEB VERSIYASI) dan foydalangan holda nazorat qilinadigan röle: Salom bolalar, mening ismim P STEVEN LYLE JYOTHI va bu mening birinchi ulanishim NETEMSETNETSETNETSETNETSETNETSETNETSETNETSETNETETSETNETSETNETETSETNETSETNETETSETNETSETNETSETNETETSETNETSETNETETSETNETSETNETSETNETSETNETSETNETSETNETSETETSETNETSETNETSETETSETNETETSETNETSETETSOUTNETSETNETSETNETSETNETSET-WETSETNING NETEMETSET-ESP6-DAN RELAYLARNI BOSHQARISH UChUN BIRINCHI INSTUCTABLE-NODEMCU 1.0 (ESP8266) BLYNK (WEB TARAFIDA) dan foydalangan holda nazorat qilinadigan o'rni Mening yomon ingliz tilim
Ovozli baland ovozli karnay: 5 qadam
Clear Loud Cube Karnay: Men akkumulyator qutisini, 10 dollarlik katlanadigan dinamik modullaridan birini, epoksi va plastmassadan yasalgan sumkani sotib oldim. Men buni juda zo'r deb o'yladim, chunki sig'im kabi elektron elementlarning barchasini yashirish o'rniga