Mündəricat:

AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru: 4 addım
AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru: 4 addım

Video: AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru: 4 addım

Video: AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru: 4 addım
Video: Грунтовка развод маркетологов? ТОП-10 вопросов о грунтовке. 2024, Noyabr
Anonim
AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru
AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru
AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru
AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru
AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru
AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru
AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru
AIY Səs Kitinə əsaslanan Danışan Rəng Sensoru

Bu yaxınlarda Brayl əlifbası haqqında bir az öyrəndikdən sonra, görmə məhdudiyyətli insanlar üçün real həyatda faydası ola biləcək Raspberry Pi üçün AIY səs dəstindən istifadə edərək bir şey qura biləcəyimi düşünürdüm. Aşağıda təsvir edildiyi kimi, nəticələrini ucadan oxuyan sadə bir rəng algılama cihazının prototipini tapa bilərsiniz.

Bu sistemin daha mükəmməl bir versiyası, görmə qüsuru və ya rəng korluğu olan insanlar üçün faydalı ola bilər.

Sistem, AIY səsli HAT ilə Raspberry Pi istifadə edir. TCS34725 RGB sensoru, HAT -ın I2C portuna qoşulur. Breakout, təhlil ediləcək obyekti işıqlandırmaq üçün parlaq isti ağ LED -dən ibarətdir. Ölçmə şərtlərini optimallaşdırmaq və standartlaşdırmaq üçün qırılma bir korpusa yerləşdirildi.

Üç rəng sensoru, gözlərinizdəki rəng sensorları ilə eyni üç tezlik aralığını ölçür. Daha sonra ümumi rəng təəssüratını hesablamaq üçün qırmızı, yaşıl və mavi (RGB) dəyərləri istifadə olunur.

Bu xüsusi sistemin ən gözəl tərəfi odur ki, AIY səs dəstlərinin "dey" əmrindən istifadə edərək rəngləri sizə şifahi şəkildə bildirir. Zəhmət olmasa müşayiət olunan videoya baxın.

Cihaz, AIY səs HAT -a qoşulmuş bir I2C sensor cihazı üçün də nümunə olaraq faydalı ola bilər.

Addım 1: İstifadə olunan materiallar

Raspberry Pi 3. ~ 35 US $ və ya EUR

HAT -a lehimlənmiş başlıqları olan AIY səs dəsti. ~ 25 ABŞ dolları və ya EUR

Adafruit TCS34725, başlığı lehimli. ~ 8 ABŞ dolları və ya EUR

Keçid kabelləri.

Çörək taxtası (isteğe bağlı)

Sensor korpusu üçün:- istifadə edilmiş "Dolce Gusto" qəhvə kapsulu- diametri təxminən 37 mm olan 2 mm Forex (PVC köpüklü boşqab) kiçik bir yuvarlaq parça- korpusun daxili divarlarını örtmək üçün əks etdirməyən qara material. Öz-özünə yapışan qara rezin köpükdən istifadə etdim.

İsteğe bağlı: ölçmələri oyatmaq üçün kiçik bir keçid

Bir neçə damla plastik yapışqan və kəsici bıçaq.

Addım 2: Quraşdırma və İstifadə

Quraşdırma və İstifadə
Quraşdırma və İstifadə
Quraşdırma və İstifadə
Quraşdırma və İstifadə
Quraşdırma və İstifadə
Quraşdırma və İstifadə

AIY səs HAT ilə Raspberry Pi, AIY təlimatında təsvir edildiyi kimi quruldu. Montajdan əvvəl başlıqlar HAT üzərindəki limanlara lehimləndi. Sensor yuvası üçün "Dulce Gusto" qəhvə kapsulu boşaldılmış, təmizlənmiş və dibinin bir hissəsi bıçaqla diqqətlə çıxarılmışdır. Bu məqsədlə başqa bir şey istifadə edə bilərsiniz, qəhvə kapsulu yalnız uyğun ölçü və formaya sahib idi. Bir boşqabdan 2 mm Forexin yuvarlaq bir parçası kəsildi, daha sonra qırılma mərkəzi olaraq Forex lövhəsinə yerləşdirildi, keçə qələmlə işarələnmiş mövqe və kəsilmənin başlığı üçün yuva uyğun mövqedə kəsildi.

İndi Forex parçası bir Velcro şeridi istifadə edərək korpusa və Forex lövhəsinə bərkidilmiş sensorun qırılmasına yapışdırıldı. Sonra daxili divarlar işıq yuyan qara materialla örtülmüş, öz-özünə yapışan bir rezin köpük istifadə etmişəm. Qara karton da işləməlidir. İndi, keçid kabellərindən istifadə edərək, HAT -ın I2C "3.3V" portu sensordakı "V in", Ground to Gnd, sda to sda və scl to scl ilə əlaqələndirildi. Hər iki hissəni birləşdirmək üçün çörək taxtasından istifadə etmişdim, amma bu lazım deyil.

AIY_TCS34725 python skriptini src qovluğuna yerləşdirin və "sec/AIY_TCS34752.py" daxil edərək skripti dev terminalından işlədin. Əvvəlcə python skriptini icra oluna bilər. Sorulduqda, sensor vahidi ölçülən obyektin üzərinə qoyun, AIY cihazındakı düyməni basın və bir -iki saniyə gözləyin.

Ardından, ölçülmüş RGB və ağ dəyərlərə əsaslanaraq, cihaz əvvəlcə uyğun rəng dəyərini hesablayır, sonra bu dəyərə əsaslanaraq rəngi təxmin edir və AIY səs sistemi vasitəsi ilə şifahi şəkildə bildirir. g. "tünd qırmızı" kimi, həm də hue dəyərini verir. RGB, rəng və parlaqlıq (dəqiqlik üçün aydınlıq) dəyərləri də ekrana yazdırılır.

Rəng annotasiya prosesini asanlaşdırmaq üçün RGB dəyərləri HSV (rəng, doyma, dəyər) formatına çevrilir. Bu, müəyyən bir açı aralığına (yəni bir pasta diliminə) bir rəng əlavə etməyə və hesablanmış rəngə görə rəng seçməyə imkan verir.

Cihazınızı ağ və qara bir istinadla normallaşdırmalısınız. Əlinizdə olan ən ağ və qara kağız parçalarını ölçün, hər birini ölçün və bu dəyərləri maksimum və minimum dəyərlər olaraq koda daxil edin. Yalnız optimal istinad dəyərləri yaxşı bir rəng tanıma verəcəkdir.

Əsas problemlərdən biri əks olunmadır. Parlaq və ya cilalanmış bir səthə sahib bir obyektiniz varsa, bu, LED -dən yayılan çox işığı əks etdirəcək və əslində olduğundan daha yüngül görünür. İşığı yaymaq üçün bir membran təbəqəsi istifadə edə bilərsiniz, ancaq bir düzəliş faktoru tətbiq etməyiniz lazım ola bilər.

Şəffaf cisimlərə gəldikdə, onları ağ kağıza yerləşdirmək faydalı ola bilər, əks halda əks olunan işığın miqdarı kiçik olacaq və cisim "qara" olaraq bildiriləcəkdir.

İşıq yayan cisimlərin rəngini ölçmək istəyirsinizsə, qırılma üzərindəki "LED" portunu "Zəminə" bağlayaraq qırılma LEDini söndürməlisiniz. İndi normalizasiya dəyərlərini buna uyğun olaraq təyin edin.

Başqa bir ümumi problem obyektin işıqlandırılmasıdır. Qırışdakı isti ağ LED fasiləsiz bir işıq spektri yayır. Buna görə də müəyyən rənglər RGB spektrində çox və ya az təmsil oluna bilər. Bu mövzuda daha çox məlumat əldə etmək üçün kolorimetrlərdə/ fotometrlərdə və spektrometrlərdə əvvəlki təlimatlarımı nəzərdən keçirin:

www.instructables.com/id/An-Inexpensive-Ph…

www.instructables.com/id/A-Mimimal-Six-Col…

Addım 3: Kod

Kod
Kod

Kod, AIY səsli təlimatdakı kodun dəyişdirilməsi ilə Bradspi tərəfindən TCS34725 sensor kodunun birləşməsidir.

Adafruit -dən TCS34725 python kodunu da istifadə etməyə çalışmışdım, ancaq AIY HAT ilə birlikdə xarici kitabxanalardan istifadə edən bu və digər kodları işlətməkdə çətinlik çəkirdim. Hər hansı bir kömək xoş gəlir.

Daha əvvəl də qeyd edildiyi kimi, rəng annotasiyası RGB -də rəngləri rəngləndirmək üçün edilən bir dəyişikliyə əsaslanır. Ağ və qara hörmət materiallarının eksperimental ölçülərinə əsaslanaraq normallaşdırma parametrlərini təyin etməlisiniz. R, G və B min və ya maksimum üçün mütləq dəyərləri daxil edin.

Ssenari, səs və səs tonunu tənzimləməyə imkan verən "dey" əmrinin yeni bir versiyasından istifadə edir. Bu halda ya audio.py və tty sürücü fayllarını yeniləməli və ya skriptdən "həcm və aralıq hissələri" silməli ola bilərsiniz.

#!/usr/bin/env python3 # Bu skript, AIY səs HAT üçün servo_demo.py skriptinin uyğunlaşdırılmasıdır, # Afafruit TCS34725 qırılma idxalı aiy.audio idxal aiy.cloudspeech idxal aiy.voicehat istifadə edərək rəng tanıma üçün optimallaşdırılmışdır. # gpiozero idxal LED-dən # servo-portda xarici LED üçün faydalı ola bilər (rəng): hesablanmış rəng dəyərlərinə əsaslanaraq # rəng təfsiri ((ton> 12) və (ton 25) və (rəng 69) və (çalar 164) və (rəng 194) və (çalar 269) və (çalar 319) və ya (rəng <20)): color = "qırmızı" qayıtma rəngi başqa: print ("bir şey səhv oldu")

def tcs34725 (): # ölçmə və şərh.

# Ölçmə Bradspi TCS34725 skripti ilə aparılır: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # version # = 0x44 olmalıdır, əgər ver == 0x44: print ("Cihaz tapıldı / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = ETMƏ qeydiyyat bus.write_byte (0x29, 0x01 | 0x02) # 0x01 = Güc, 0x02 RGB sensorlar işə salındı bus.write_byte (0x29, 0x80 | 0x14) # Oxu nəticələri 14 -cü qeydə başlayır, LSB sonra MSB məlumatları = bus.read_i2c_block_data (0x29, 0) clear = clear = data [1] << 8 | məlumatlar [0] qırmızı = məlumatlar [3] << 8 | məlumatlar [2] yaşıl = məlumatlar [5] << 8 | məlumatlar [4] mavi = məlumatlar [7] << 8 | data [6] crgb = "Mütləq saylar: C: %s, R: %s, G: %s, B: %s / n" %(aydın, qırmızı, yaşıl, mavi) çap (crgb) vaxt.yuxu (1) başqa: çap ("Cihaz tapılmadı / n") # ölçülmüş RGBW dəyərlərinin normallaşdırılması və çevrilməsi col = "" # Maksimum dəyərlər Normalizasiya faktorları, təcrübə yolu ilə təyin olunmalıdır # məs. ağ kağız vərəqinə qarşı. Zaman zaman yoxlayın və düzəldin. max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # Arka plan/Minimum dəyərlərin normallaşdırılması faktorları, təcrübi olaraq təyin olunmalıdır # məs. qara vərəqə qarşı. Zaman zaman yoxlayın və düzəldin. min_bright = 750 min_qırmızı = 340 min_green = 245 min_green = 225 # normallaşdırılmış dəyərlər, 0 ilə 1 arasında rel_bright = ((aydın - min_ parlaq)/(max_bright - min_ parlaq)) rel_red = ((qırmızı - min_qırmızı)/(max_red - min_red)) rel_green = ((yaşıl - min_green)/(max_green - min_green)) rel_blue = ((mavi - min_ mavi)/(max_blue - min_ mavi)) hsv_col = colorsys.rgb_to_hsv (rel_red, rel_green, rel_blv_col_ol) 35 = 0 [0] əgər rel_bright> 0.9: col = "white" # çox parlaq olarsa -> ağ elif rel_bright qara başqa: col = hue2color (hue) # rəng seçiminə görə rəng seçimi # çap ("nisbi dəyərlər parlaq, qırmızı, yaşıl, mavi:") # çap (rel_bright, rel_red, rel_green, rel_blue) # çap ("HSV dəyərləri (rəng, doyma, dəyər):", hsv_col) # çap ("rəng tonu °", rəng) qaytar [col, rel_bright, rel_red, rel_green, rel_blue, hue]

def main ():

button = aiy.voicehat.get_button () # change Button status led = aiy.voicehat.get_led () # change Button-LED status aiy.audio.get_recorder (). start () # buttoni = Button (5) # məsafə sensoru və ya servo3/GPIO 05 -ə qoşulan digər xarici düymə

aiy.audio.say ("Salam!",, həcmi = 50, meydança = 100) # həcm və meydança audio.py və _tty.py sürücüsünün noyabr 2017 -ci il versiyasını tələb edir!

aiy.audio.say ("Başlamaq üçün sensoru obyektin üstünə aparın. Sonra mavi düyməni basın",, həcmi = 50, addım = 100) çap edin ("Rəng ölçmə sensörünü obyektin üstünə qoyun, sonra mavi düyməni basın ") Doğru olarkən: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # xarici düymə üçün düyməni düymə led.set_state (aiy.voicehat. LED. BLINK) ilə əvəz edin aiy.audio.say (" Ölçmə ",, həcmi = 50, addım = 100) nəticə = tcs34725 () # ölçü və şərhə səbəb olur col = nəticə [0] # rəng, mətn hue = str (int (nəticə [5])) # hue ° ilə, mətn olaraq r_red = str (int (nəticə [2]*255)) # R dəyəri, mətn kimi r_green = str (int (nəticə [3]*255)) # G dəyəri, mətn olaraq r_blue = str (int (nəticə [4]*255)) # B dəyəri, mətn olaraq r_bright = str (int (nəticə [1]*100)) # W dəyəri, mətn kimi led.set_state (aiy.voicehat. LED. OFF) col == "white "və ya col ==" qara ": parlaq =" "elif (nəticə [1]> 0.69): #rəng parlaqlığı/açıqlığı parlaq =" işıq "elif (nəticə [1] <0.25): parlaq =" qaranlıq "başqa: parlaq = "orta" # ünsiyyət t o nəticələr color_text = ("Obyektin rəngi" + parlaq + "" + col) çap (color_text) aiy.audio.say (color_text,, volume = 75, pitch = 100) hue_text = ("Hue dəyəri "+ hue+" dərəcə ") çap (hue_text) aiy.audio.say (hue_text,, cild = 75, pitch = 100)

əgər _ adı_ == '_ ana_' olarsa: main ()

Addım 4: Bəzi Bağlantılar və Qeydlər

TCS34725 sensor məlumat vərəqini burada tapa bilərsiniz:

İstifadə etdiyim sensoru oxumaq üçün kod burada təsvir edilmişdir:

Əvvəlki təlimatlarımda bu və başqa bir sensorla rəng ölçmələri ilə bağlı əlavə məlumatlar tapa bilərsiniz:

www.instructables.com/id/An-Inexpensive-Ph…

www.instructables.com/id/A-Mimimal-Six-Col…

Tövsiyə: