Talaan ng mga Nilalaman:

Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit: 4 na Hakbang
Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit: 4 na Hakbang

Video: Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit: 4 na Hakbang

Video: Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit: 4 na Hakbang
Video: Stories of Hope & Recovery - Juliana, Sarah & Adam 2024, Nobyembre
Anonim
Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit
Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit
Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit
Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit
Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit
Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit
Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit
Isang Sensor ng Kulay ng Pakikipag-usap, Batay sa AIY Voice Kit

Nalaman ang kaunting tungkol sa Braille kamakailan, nagtataka ako kung makakagawa ako ng isang bagay gamit ang AIY voice kit para sa Raspberry Pi, na maaaring magkaroon ng isang real-live na benepisyo para sa may kapansanan sa paningin. Kaya't inilarawan sa sumusunod ay makakahanap ka ng isang prototype ng isang simpleng aparato ng pagtuklas ng kulay na binabasa nang malakas ang mga natuklasan nito.

Ang isang mas detalyadong bersyon ng sistemang ito ay maaaring maging kapaki-pakinabang para sa mga taong may kapansanan sa paningin o pagkabulag ng kulay.

Gumagamit ang system ng isang Raspberry Pi na may kalakip na AIY boses na HAT. Ang isang TCS34725 RGB sensor breakout ay konektado sa I2C port ng HAT. Naglalaman ang breakout ng isang maliwanag na mainit na puting LED upang maipaliwanag ang bagay na susuriin. Ang breakout ay inilagay sa isang pabahay upang i-optimize at gawing pamantayan ang mga kondisyon sa pagsukat.

Ang tatlong sensor ng kulay ay sumusukat tungkol sa parehong mga saklaw ng dalas ng bilang mga sensor ng kulay sa iyong mga mata. Pagkatapos ang mga halaga ng pula, berde at asul (RGB) ay ginagamit upang makalkula ang pangkalahatang impression ng kulay.

Ang magandang bagay tungkol sa espesyal na sistemang ito ay sasabihin nito sa iyo ngayon ang kulay sa salita, gamit ang "say" na utos ng AIY boses. Mangyaring tingnan ang kasamang video.

Ang aparato ay maaaring maging kapaki-pakinabang bilang isang halimbawa para sa isang I2C sensor aparato na konektado sa AIY boses HAT.

Hakbang 1: Ginamit na Mga Materyales

Raspberry Pi 3. ~ 35 US $ o EUR

AIY voice kit, na may mga header na solder sa HAT. ~ 25US $ o EUR

Adafruit TCS34725 breakout, na may isang header na solder. ~ 8 US $ o EUR

Mga kable ng jumper.

Isang breadboard (opsyonal)

Para sa pabahay ng sensor: - isang ginamit na "Dolce Gusto" na kapsula ng kape- isang maliit na bilog na piraso ng 2mm Forex (PVC foam plate), tungkol sa 37mm diameter- isang hindi sumasalamin na itim na materyal upang masakop ang panloob na dingding ng pabahay. Gumamit ako ng self-adhesive black rubber foam.

Opsyonal: isang maliit na switch upang pukawin ang mga sukat

Ilang patak ng plastic glue at isang cutter kutsilyo.

Hakbang 2: Assembly at Paggamit

Assembly at Paggamit
Assembly at Paggamit
Assembly at Paggamit
Assembly at Paggamit
Assembly at Paggamit
Assembly at Paggamit

Ang Raspberry Pi na may AIY voice HAT ay na-setup tulad ng inilarawan sa manu-manong AIY. Bago ang pagpupulong, ang mga header ay solder sa mga port sa HAT. Para sa pabahay ng sensor, isang "Dulce Gusto" na kapsula ng kape ang naalisan, nalinis, at isang bahagi ng ilalim na maingat na tinanggal gamit ang isang kutsilyo. Maaari kang gumamit ng ibang bagay para sa hangaring ito, ang kapsula ng kape ay may tamang sukat at hugis lamang. Ang isang bilog na piraso ng 2mm Forex ay pinutol mula sa isang plato, ang breakout pagkatapos ay inilagay sa gitna sa plato ng Forex, ang posisyon na minarkahan ng isang nadama na pen, at ang isang puwang para sa header sa breakout ay pinutol sa naaangkop na posisyon.

Ngayon ang piraso ng Forex ay nakadikit sa pabahay at ang breakout ng sensor na nakakabit sa plato ng Forex, gamit ang isang Velcro strip. Pagkatapos ang mga panloob na dingding ay natakpan ng isang ilaw na sumisipsip ng itim na materyal, gumamit ako ng isang self-adhesive rubber foam. Ang itim na karton ay dapat ding gumana. Ngayon, gamit ang mga jumper cable, ang I2C "3.3V" port ng HAT ay konektado sa "V in" sa sensor, Ground to Gnd, sda sa sda at scl to scl. Gumamit ako ng isang breadboard upang ikonekta ang parehong bahagi, ngunit hindi iyon kinakailangan.

Ilagay ang AIY_TCS34725 python script sa src folder at patakbuhin ang script mula sa dev terminal, ipasok ang "sec / AIY_TCS34752.py". Maaaring kailanganin mong gawin ang script ng sawa ng una. Kapag tinanong, ilagay ang sensor unit sa bagay na susukat, pindutin ang pindutan sa AIY aparato at maghintay ng isang segundo o dalawa.

Pagkatapos, batay sa sinusukat na RGB at puting mga halaga, kinakalkula muna ng aparato ang kaukulang halaga ng kulay, pagkatapos ay tinantya ang kulay batay sa halagang ito at ipinapahiwatig ang mga ito sa pamamagitan ng sistemang boses ng AIY, e. g. bilang "maitim na pula", ngunit nagbibigay din ng halaga ng kulay. Ang mga halaga ng RGB, kulay at ningning (kagaanan, upang maging eksaktong) ay naka-print din sa screen.

Upang gawing simple ang proseso ng kulay ng anotasyon, ang mga halaga ng RGB ay binago sa format na HSV (kulay, saturation, halaga). Pinapayagan nitong i-annotate ang isang kulay sa isang tiyak na saklaw ng mga anggulo (ibig sabihin, isang pie slice), at piliin ang kulay batay sa kinakalkula na halaga ng kulay.

Kailangan mong gawing normal ang iyong aparato laban sa isang puti at isang itim na sanggunian. Sukatin lamang ang pinuti at pinakamadilim na mga piraso ng papel na magagamit mo, kumuha ng pagsukat bawat isa, at ilagay ang mga halagang ito bilang maximum at minimum na mga halaga sa code. Ang pinakamainam lamang na mga halaga ng sanggunian ay magbibigay ng isang mahusay na pagkilala sa kulay.

Ang isang pangunahing problema ay ang pagmuni-muni. Kung mayroon kang isang bagay na may isang makintab o pinakintab na ibabaw ay makikita nito ang maraming ilaw na ibinuga ng LED, na lilitaw na mas magaan kaysa sa tunay na ito. Maaari kang gumamit ng isang sheet ng lamad upang ikalat ang ilaw, ngunit maaaring kailanganin mong magpatupad ng isang kadahilanan sa pagwawasto.

Sa kaso ng mga translucent na bagay, maaaring madaling gamitin upang ilagay ang mga ito sa isang puting papel, kung hindi man ang halaga ng masasalamin na ilaw ay magiging maliit at ang bagay na iniulat bilang "itim".

Kung nais mong sukatin ang kulay ng mga bagay na naglalabas ng ilaw, dapat mong patayin ang LED sa breakout sa pamamagitan ng pagkonekta sa "LED" port sa breakout sa "Ground". Itakda ngayon ang mga halagang normalisasyon nang naaayon.

Ang isa pang pangkalahatang problema ay ang pag-iilaw ng bagay. Ang mainit na puting LED sa breakout ay nagpapalabas ng isang hindi tuloy-tuloy na spectrum ng ilaw. Samakatuwid ang ilang mga kulay ay maaaring maging labis o hindi mailarawan sa RGB spectrum. Para sa karagdagang impormasyon sa paksang ito, mangyaring tingnan ang aking nakaraang mga itinuturo sa isang colorcm / photometers at spectrometers:

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

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

Hakbang 3: Ang Code

Ang Code
Ang Code

Ang code ay isang kumbinasyon ng isang pagbabago ng isang code mula sa manu-manong boses ng AIY, at ang TCS34725 sensor code ng Bradspi.

Sinubukan ko ring gamitin ang TCS34725 python code mula sa Adafruit, ngunit may mga problema sa pagpapatakbo nito at ilang iba pang mga code na gumagamit ng mga panlabas na aklatan kasama ang AIY HAT. Anumang tulong maligayang pagdating.

Tulad ng nabanggit dati, ang kulay na anotasyon ay batay sa isang pagbabago sa RGB sa mga kulay ng kulay. Dapat mong itakda ang mga setting ng normalisasyon batay sa mga pang-eksperimentong sukat ng puti at itim na mga materyal ng paggalang. Punan ang ganap na mga halaga para sa R, G at B min o max nang naaayon.

Gumagamit ang script ng isang bagong bersyon ng "say" na utos na nagbibigay-daan upang makontrol ang dami at pitch. Kung sakali, maaaring kailanganin mong i-update ang audio.py at maayos na mga file ng driver o tanggalin ang "mga bahagi ng dami at pitch" mula sa script.

#! / 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 pagkilala ng kulay ru the Afafruit TCS34725 breakout import aiy.audio import aiy.cloudspeech import aiy.voicehat #mula sa gpiozero import LED # ay maaaring maging kapaki-pakinabang para sa isang panlabas na LED sa servo-port # mula sa gpiozero import Button # ay maaaring maging kapaki-pakinabang para sa isang panlabas na pindutan sa servo-port import time import smbus bus = smbus. SMBus (1) import colorsys def hue2color (kulay): # pagbibigay kahulugan ng kulay batay sa kinakalkula na mga halaga ng kulay kung ((kulay> 12) at (kulay 25) at (kulay 69) at (kulay 164) at (kulay 194) at (kulay 269) at (kulay 319) o (kulay <20)): color = "pula" bumalik ang kulay iba pa: i-print ("may isang maling nangyari")

def tcs34725 (): # pagsukat at interpretasyon.

# Ang pagsukat ay ginaganap ng script ng Bradspi TCS34725: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # bersyon Ang # ay dapat na 0x44 kung ver == 0x44: i-print ("Natagpuan ang aparato / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = I-ENABLE ang pagrehistro ng bus.write_byte (0x29, 0x01 | 0x02) # 0x01 = Power on, 0x02 RGB sensors pinagana ang bus.write_byte (0x29, 0x80 | 0x14) # Mga resulta sa pagbabasa simulang magparehistro 14, LSB pagkatapos ng data ng MSB = bus.read_i2c_block_data (0x29, 0) malinaw = malinaw = data [1] << 8 | data [0] pula = data [3] << 8 | data [2] berde = data [5] << 8 | data [4] asul = data [7] << 8 | data [6] crgb = "Ganap na bilang: C:% s, R:% s, G:% s, B:% s / n"% (malinaw, pula, berde, asul) naka-print (crgb) oras. tulog (1) iba pa: i-print ("Hindi nahanap ang aparato / n") # normalisasyon at pagbabago ng sinusukat na mga halagang RGBW col = "" # Pinakamataas na halaga ng Mga kadahilanang normalisasyon, dapat tukuyin bilang eksperimento # hal kumpara sa isang puting sheet ng papel. Suriin at iwasto sa bawat oras. max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # Background / Minimum na mga halaga ng normalisasyon na kadahilanan, dapat tukuyin bilang eksperimento # hal. kumpara sa itim na sheet ng papel. Suriin at iwasto sa bawat oras. min_bright = 750 min_red = 340 min_green = 245 min_blue = 225 # normalized na mga halaga, sa pagitan ng 0 at 1 rel_bright = ((clear - min_bright) / (max_bright - min_bright)) rel_red = ((red - min_red) / (max_red - min_red)) rel_green = ((green - min_green) / (max_green - min_green)) rel_blue = ((blue - min_blue) / (max_blue - min_blue)) hsv_col = colorsys.rgb_to_hsv (rel_red, rel_green, rel_blue) hue = hsv_col [0] * kung rel_bright> 0.9: col = "puti" # kung napaka-maliwanag -> puting elif rel_bright itim pa: col = hue2color (hue) # pagpili ng kulay ayon sa mga hue na halaga # print ("kamag-anak na mga halaga maliwanag, pula, berde, asul:") # print (rel_bright, rel_red, rel_green, rel_blue) # print ("Mga halaga ng HSV (kulay, saturation, halaga):", hsv_col) # print ("hue in °", hue) bumalik [col, rel_bright, rel_red, rel_green, rel_blue, hue]

def main ():

button = aiy.voicehat.get_button () # pagbabago ng katayuan ng Button na humantong = aiy.voicehat.get_led () # baguhin ang katayuan ng Button-LED aiy.audio.get_recorder (). simulan () # buttoni = Button (5) # distansya sensor o iba pang panlabas na pindutan, na konektado sa servo3 / GPIO 05

aiy.audio.say ("Hello!",, volume = 50, pitch = 100) # dami at pitch ang nangangailangan ng Nobyembre 2017 na rebisyon ng audio.py at _tty.py driver!

aiy.audio.say ("Upang magsimula, ilipat ang sensor sa itaas ng bagay. Pagkatapos ay pindutin ang asul na pindutan",, volume = 50, pitch = 100) i-print ("Upang buhayin ang sukat ng lugar ng pagsukat ng sensor sa itaas ng object, pagkatapos ay pindutin ang asul na pindutan ") habang True: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # para sa panlabas na pindutan, palitan ang pindutan ng buttoni led.set_state (aiy.voicehat. LED. BLINK) aiy.audio.say (" Ang pagsukat ",, volume = 50, pitch = 100) resulta = tcs34725 () # ay nagbibigay ng pagsukat at interpretasyon col = resulta [0] # na kulay, tulad ng text hue = str (int (resulta [5])) # hue in °, bilang teksto r_red = str (int (resulta [2] * 255)) # R halaga, bilang teksto r_green = str (int (resulta [3] * 255)) # G halaga, bilang teksto r_blue = str (int (resulta [4] * 255)) # B halaga, bilang text r_bright = str (int (resulta [1] * 100)) # W na halaga, bilang text led.set_state (aiy.voicehat. LED. OFF) kung col == "puti "o col ==" itim ": maliwanag =" "elif (resulta [1]> 0.69): # ningning / ilaw ng kulay na maliwanag =" light "elif (resulta [1] <0.25): maliwanag =" maitim "pa: bright = "medium" # pakikipag-usap t nagreresulta siya ng color_text = ("Ang kulay ng object ay" + maliwanag + "" + col) print (color_text) aiy.audio.say (color_text,, volume = 75, pitch = 100) hue_text = ("Ang hue na halaga ay "+ hue +" degree ") print (hue_text) aiy.audio.say (hue_text,, volume = 75, pitch = 100)

kung _name_ == '_main_': pangunahing ()

Hakbang 4: Ilang Mga Link at Remarka

Ang sheet ng data ng sensor ng TCS34725 ay matatagpuan dito:

Ang code upang basahin ang sensor na ginamit ko ay inilarawan dito:

Maaari kang makahanap ng ilang karagdagang impormasyon sa mga sukat ng kulay kasama nito at ng isa pang sensor sa aking nakaraang mga itinuturo:

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

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

Inirerekumendang: