Mundarija:
- 1 -qadam: Ishlatilgan materiallar
- 2 -qadam: yig'ish va foydalanish
- 3 -qadam: Kod
- 4 -qadam: Ba'zi havolalar va izohlar
Video: AIY ovozli to'plamiga asoslangan gapiradigan rang sensori: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Yaqinda Brayl alifbosi haqida bir oz ma'lumotga ega bo'lganimdan so'ng, men "Raspberry Pi" uchun AIY ovozli to'plamidan foydalanib, ko'zi ojizlar uchun haqiqiy foyda keltiradigan biror narsa qura olamanmi, deb o'yladim. Quyida ta'riflanganidek, siz oddiy rangni aniqlash moslamasining prototipini topasiz, u o'z xulosalarini ovoz chiqarib o'qiydi.
Ushbu tizimning yanada batafsil versiyasi ko'rish qobiliyati buzilgan yoki rang ko'rligi bo'lgan odamlar uchun foydali bo'lishi mumkin.
Tizimda AIY ovozli HAT o'rnatilgan Raspberry Pi ishlatiladi. HAT ning I2C portiga TCS34725 RGB sensori uzilishi ulangan. Bo'linishda tahlil qilinadigan ob'ektni yoritish uchun yorqin issiq oq LED mavjud. O'lchov shartlarini optimallashtirish va standartlashtirish uchun uzilish korpusga joylashtirildi.
Uch rang sensori sizning ko'zingizdagi rang sensori bilan bir xil uchta chastota diapazonini o'lchaydi. Keyin umumiy rang taassurotini hisoblash uchun qizil, yashil va ko'k (RGB) qiymatlari ishlatiladi.
Bu maxsus tizimning yaxshi tomoni shundaki, u sizga AIY ovozli to'plamlarining "ayt" buyrug'i yordamida rangni og'zaki ravishda aytib beradi. Iltimos, unga qo'shilgan videoga qarang.
Qurilma, shuningdek, AIY ovozli HAT -ga ulangan I2C sensorli qurilmaga misol sifatida foydali bo'lishi mumkin.
1 -qadam: Ishlatilgan materiallar
Raspberry Pi 3. ~ 35 AQSh dollari yoki evro
HAT ga lehimlangan sarlavhali AIY ovozli to'plami. ~ 25 AQSh dollari yoki evro
Adafruit TCS34725 uzilishi, sarlavhasi lehimli. ~ 8 AQSh dollari yoki evro
Jumper kabellari.
Non paneli (ixtiyoriy)
Sensor korpusi uchun:- ishlatilgan "Dolce Gusto" qahva kapsulasi- diametri taxminan 37 mm bo'lgan 2 mm Forex (PVX ko'pikli plastinka) kichik dumaloq bo'lagi- korpusning ichki devorlarini yopish uchun aks ettirmaydigan qora material. Men o'zim yopishtiruvchi qora kauchuk ko'pikdan foydalandim.
Majburiy emas: o'lchovlarni chaqirish uchun kichik kalit
Bir necha tomchi plastik elim va kesuvchi pichoq.
2 -qadam: yig'ish va foydalanish
AIY ovozli HAT bilan Raspberry Pi AIY qo'llanmasida tasvirlanganidek o'rnatildi. O'rnatishdan oldin sarlavhalar HAT portlariga lehimlangan. Sensor korpusi uchun "Dulce Gusto" qahva kapsulasi bo'shatildi, tozalandi va taglikning bir qismi pichoq bilan ehtiyotkorlik bilan olib tashlandi. Siz bu maqsadda boshqa narsadan foydalanishingiz mumkin, qahva kapsulasi to'g'ri o'lcham va shaklga ega edi. Plastinadan 2 mm Forex dumaloq bo'lagi kesilgan, keyin chiqib ketish markaziy ravishda Forex plastinkasiga joylashtirilgan, o'rni kigiz qalam bilan belgilangan va kesilgan joyning ustki qismi uchun uyasi tegishli joyga kesilgan.
Endi Forex qismi korpusga yopishtirildi va sensor plastinka bilan plastinkaga biriktirildi, Velcro tasmasi yordamida. Keyin ichki devorlar nurni yutuvchi qora material bilan qoplangan, men o'zim yopishtiruvchi kauchuk ko'pik ishlatganman. Qora karton ham ishlashi kerak. Endi o'tish kabellari yordamida HATning I2C "3.3V" porti sensordagi "V in" ga, Ground to Gnd, sda to sda va scl to scl ga ulandi. Men ikkala qismni ulash uchun non taxtasidan foydalandim, lekin bu kerak emas.
AIY_TCS34725 python skriptini src papkasiga joylashtiring va skriptni dev terminalidan "sec/AIY_TCS34752.py" kiriting. Siz avval python skriptini bajariladigan qilib qo'yishingiz kerak bo'lishi mumkin. Agar so'ralsa, sensorlar blokini o'lchanadigan narsaning ustiga qo'ying, AIY qurilmasidagi tugmani bosing va bir -ikki soniya kuting.
Keyin, o'lchangan RGB va oq qiymatlarga asoslanib, qurilma avval mos keladigan rang qiymatini hisoblab chiqadi, keyin bu qiymatga qarab rangni baholaydi va AIY ovoz tizimi orqali ularni og'zaki ravishda uzatadi. g. "quyuq qizil" sifatida, lekin rangning qiymatini ham beradi. RGB, rang va yorqinlik (aniqlik bilan aytganda) qiymatlari ham ekranga bosiladi.
Rangni izohlash jarayonini soddalashtirish uchun RGB qiymatlari HSV (rang, to'yinganlik, qiymat) formatiga o'tkaziladi. Bu rangni ma'lum burchaklar oralig'iga (masalan, pirog bo'lagi) izohlashga va hisoblangan rang qiymatiga qarab rangni tanlashga imkon beradi.
Siz qurilmangizni oq va qora mos yozuvlar bilan normalizatsiya qilishingiz kerak. Sizda mavjud bo'lgan eng oq va qora qog'oz varaqlarini o'lchab, har birini o'lchab oling va bu qiymatlarni kodga maksimal va minimal qiymat sifatida joylashtiring. Faqat optimal mos yozuvlar qiymatlari rangni yaxshi taniydi.
Asosiy muammolardan biri bu aks ettirishdir. Agar sizda yuzasi yaltiroq yoki jilolangan ob'ekt bo'lsa, u yorug'lik chiqaradigan LEDni aks ettiradi, bu haqiqatdan ham engilroq ko'rinadi. Yorug'likni tarqatish uchun siz membrana qatlamidan foydalanishingiz mumkin, lekin tuzatish omilini qo'llashingiz kerak bo'ladi.
Shaffof narsalar bo'lsa, ularni oq qog'ozga qo'yish qulay bo'lishi mumkin, aks holda aks ettirilgan yorug'lik miqdori kichik bo'ladi va ob'ekt "qora" deb xabar qilinadi.
Agar siz yorug'lik chiqaradigan narsalarning rangini o'lchashni xohlasangiz, uzilishdagi "LED" portini "Ground" ga ulab, uzilishdagi LEDni o'chirib qo'yishingiz kerak. Endi normalizatsiya qiymatlarini mos ravishda o'rnating.
Yana bir umumiy muammo - bu ob'ektning yoritilishi. Chiqib ketadigan issiq oq LED uzluksiz yorug'lik spektrini chiqaradi. Shunday qilib, ba'zi ranglar RGB spektrida haddan tashqari yoki kam ko'rsatilishi mumkin. Bu mavzu bo'yicha qo'shimcha ma'lumot olish uchun iltimos, kolorimetr/ fotometr va spektrometr bo'yicha oldingi ko'rsatmalarni ko'rib chiqing:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
3 -qadam: Kod
Kod - bu AIY ovozli qo'llanmasidagi kodni o'zgartirish va Bradspi tomonidan ishlab chiqarilgan TCS34725 sensor kodining kombinatsiyasi.
Men, shuningdek, Adafruit -dan TCS34725 python kodini ishlatishga harakat qilgandim, lekin bu va boshqa kutubxonalarni AIY HAT bilan birgalikda ishlatadigan boshqa kodlarni ishlatishda muammolarga duch keldim. Har qanday yordam xush kelibsiz.
Yuqorida aytib o'tganimizdek, rang izohi RGB -ni ranglarni o'zgartirishga asoslangan. Oq va qora ehtiromli materiallarning eksperimental o'lchovlari asosida normalizatsiya parametrlarini o'rnatishingiz kerak. Mutlaq qiymatlarni R, G va B min yoki max uchun to'ldiring.
Skriptda ovoz balandligi va balandligini tartibga solish imkonini beruvchi "say" buyrug'ining yangi versiyasi ishlatiladi. Bunday holda, siz audio.py va tty drayver fayllarini yangilashingiz yoki skriptdan "qismlar va balandliklar" ni o'chirishingiz kerak bo'lishi mumkin.
#!/usr/bin/env python3 # Bu skript AIY ovozli HAT uchun servo_demo.py skriptining moslashuvi, # Afafruit TCS34725 -ni ajratish rangini aniqlash uchun optimallashtirilgan. aiy.audio import aiy.cloudspeech import aiy.voicehat # gpiozero import LEDidan # servo-portdagi tashqi LED uchun foydali bo'lishi mumkin (rang): # rang talqini, agar ((tus> 12) va (tus 25) va (tus 69) va (tus 164) va (tus 194) va (tus 269) va (tus 319) yoki (rang <20)): color = "qizil" qaytish rangi boshqa: chop etish ("nimadir noto'g'ri ketdi")
def tcs34725 (): # o'lchash va talqin qilish.
# O'lchov Bradspi TCS34725 skriptida amalga oshiriladi: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # versiya # = 0x44 bo'lishi kerak, agar ver == 0x44 bo'lsa: print ("Qurilma topildi / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = Ro'yxatdan o'tish bus.write_byte (0x29, 0x01 | 0x02) # 0x01 = Quvvatni yoqish, 0x02 RGB sensorlar yoqilgan bus.write_byte (0x29, 0x80 | 0x14) # O'qish natijalari 14 -registrni, LSB -ni, so'ngra MSB ma'lumotlarini = bus.read_i2c_block_data (0x29, 0) aniq = aniq = ma'lumotlarni [1] << 8 | ma'lumotlar [0] qizil = ma'lumotlar [3] << 8 | ma'lumotlar [2] yashil = ma'lumotlar [5] << 8 | ma'lumotlar [4] ko'k = ma'lumotlar [7] << 8 | ma'lumotlar [6] crgb = "Mutlaq sonlar: C: %s, R: %s, G: %s, B: %s / n" %(tiniq, qizil, yashil, ko'k) bosib chiqarish (crgb) vaqt.sleep (1) boshqa: chop etish ("Qurilma topilmadi / n") # o'lchangan RGBW qiymatlarini normallashtirish va o'zgartirish col = "" # Maksimal qiymatlar Normallashtirish omillari, eksperimental tarzda aniqlanishi kerak # masalan. oq qog'ozga qarshi. Vaqti -vaqti bilan tekshiring va to'g'rilang. max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # Fon/Minimal qiymatlarni normallashtirish omillari, eksperimental tarzda aniqlanishi kerak # masalan. qora varaqqa qarshi. Vaqti -vaqti bilan tekshiring va to'g'rilang. min_bright = 750 min_qizil = 340 min_green = 245 dagi ko'k = 225 # normallashtirilgan qiymatlar, 0 dan 1gacha rel_bright = ((aniq - min_bright)/(max_bright - min_bright)) rel_red = ((qizil - min_qizil)/(max_red - min_red)) rel_green = ((yashil - min_green)/(max_green - min_green)) rel_blue = ((ko'k - min_ ko'k)/(max_blue - min_ ko'k)) hsv_col = colorsys.rgb_to_hsv (rel_red, rel_green, rel_blv_c) hue [0] [9] agar rel_bright> 0.9: col = "oq" # juda porloq bo'lsa -> oq elif rel_bright qora boshqa: col = hue2color (tue) # rangni rang qiymatlari bo'yicha tanlash # chop etish ("nisbiy qiymatlar yorqin, qizil, yashil, ko'k:") # chop etish (rel_bright, rel_red, rel_green, rel_blue) # chop etish ("HSV qiymatlari (rang, to'yinganlik, qiymat):", hsv_col) # chop etish ("rang tusida", rang) qaytish [col, rel_bright, rel_red, rel_green, rel_blue, rang]
def main ():
tugma = aiy.voicehat.get_button () # o'zgartirish tugma holati led = aiy.voicehat.get_led () # tugma-LED holatini o'zgartirish aiy.audio.get_recorder (). start () # buttoni = tugma (5) # masofa sensori yoki boshqa tashqi tugma, servo3/GPIO 05 ga ulangan
aiy.audio.say ("Salom!",, tovush = 50, pitch = 100) # tovush va balandlik audio.py va _tty.py drayverini 2017 yil noyabrda qayta ko'rib chiqishni talab qiladi!
aiy.audio.say ("Boshlash uchun sensorni ob'ekt ustidan siljiting. Keyin ko'k tugmani bosing",, ovoz = 50, balandlik = 100) chop eting ("Rang o'lchovini sensori ob'ekt tepasida, keyin ko'k tugmani bosing ") rost bo'lsa: led.set_state (aiy.voicehat. LED. ON) tugmasi. tashqi tugma uchun kutish_for_press () #, tugmani led.set_state (aiy.voicehat. LED. BLINK) aiy.audio.say (") bilan almashtiring. O'lchash ",, hajm = 50, qadam = 100) natija = tcs34725 () # o'lchov va talqinni chaqiradi col = result [0] # rang, matn hue = str (int (natija [5])) # tus ° da, matn sifatida r_red = str (int (natija [2]*255)) # R qiymati, matn sifatida r_green = str (int (natija [3]*255)) # G qiymati, matn sifatida r_blue = str (int (natija [4]*255)) # B qiymati, matn sifatida r_bright = str (int (natija [1]*100)) # V qiymati, matn sifatida led.set_state (aiy.voicehat. LED. OFF), agar col == "oq "yoki col ==" qora ": yorqin =" "elif (natija [1]> 0,69): #rangning yorqinligi/ochig'i yorqin =" engil "elif (natija [1] <0,25): yorqin =" qorong'i ": yorqin = "o'rta" # muloqot t u natija beradi color_text = ("Ob'ektning rangi" + yorqin + "" + col) bosma (color_text) aiy.audio.say (color_text,, volume = 75, pitch = 100) hue_text = ("Rang qiymati "+ tus+" daraja ") chop etish (rang_teksti) aiy.audio.say (tus_text,, tovush = 75, balandlik = 100)
agar _name_ == '_main_': main ()
4 -qadam: Ba'zi havolalar va izohlar
TCS34725 sensorli ma'lumotlar varag'ini bu erda topishingiz mumkin:
Men ishlatgan sensorni o'qish kodi bu erda tasvirlangan:
Rang o'lchovlari haqida qo'shimcha ma'lumotni bu va boshqa sensor yordamida oldingi ko'rsatmalarimda topishingiz mumkin:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
Tavsiya:
Alexa -ga asoslangan ovozli boshqariladigan raketa tashuvchisi: 9 qadam (rasmlar bilan)
Alexa -ga asoslangan ovozli boshqariladigan raketa tashuvchisi: Qish mavsumi yaqinlashganda; chiroqlar bayrami nishonlanadigan yilning shu vaqti keladi. Ha, biz butun dunyo bo'ylab nishonlanadigan haqiqiy hind festivali bo'lgan Diwali haqida gapirayapmiz. Bu yil Diwali allaqachon tugadi va odamlarni ko'rish
ATGAMES portativ Sega Genesis -ni simsiz dinamiklar to'plamiga aylantiring: 13 qadam (rasmlar bilan)
ATGAMES Portativ Sega Genesis -ni simsiz dinamiklar majmuasiga aylantiring: Agar siz ATGAMES portativ Sega Genesis uchun yangi batareyani qanday o'zgartirish kerakligi haqidagi birinchi ko'rsatmamni o'qigan bo'lsangiz, unda siz hayron bo'lishingiz mumkin: Savol: Men nima qilardim? yangi topilgan kuch? Javob: ATGAMES Portativ Sega Genesis -ni simga o'zgartiring
Gapiradigan harorat va namlik sensori - Si7021 va Little Buddy Talker: 3 qadam
Gapiradigan harorat va namlik sensori - Si7021 va Little Buddy Talker: " Kichkina do'st suhbatdoshi " bu Arduino loyihalaringizga oddiy ovozli chiqishni qo'shish imkonini beruvchi kichik qurilma. U 254 so'zdan iborat cheklangan to'plamni o'z ichiga oladi va SPI orqali Arduino yoki boshqa mikrokontrollerlarga ulanishi mumkin. Kichkina do'st T
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
TIVA tomonidan boshqariladigan konveyer kamariga asoslangan rang saralash: 8 qadam
TIVA tomonidan boshqariladigan konveyer tasmasiga asoslangan rang saralash: elektronika sohasida keng ko'lamli dastur mavjud. Har bir ilovaga boshqa sxema va boshqa dasturiy ta'minot, shuningdek, apparat konfiguratsiyasi kerak bo'ladi. Mikrokontroller - bu turli xil ilovalarni ishlatish mumkin bo'lgan chipga o'rnatilgan o'rnatilgan model