Мазмуну:

AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор: 4 кадам
AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор: 4 кадам

Video: AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор: 4 кадам

Video: AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор: 4 кадам
Video: Prolonged Field Care Podcast 131: Simple thing no one does 2024, Июль
Anonim
AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор
AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор
AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор
AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор
AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор
AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор
AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор
AIY Voice комплектинин негизинде сүйлөөчү түстүү сенсор

Жакында Брайль шрифти жөнүндө бир аз үйрөнгөндөн кийин, мен Raspberry Pi үчүн AIY үн комплектинин жардамы менен бир нерсе курсам болобу деп ойлонуп жүрдүм, ал көрүүсү начар адамдар үчүн реалдуу пайда алып келиши мүмкүн. Ошентип, төмөндө сүрөттөлгөндө, анын жыйынтыгын үн чыгарып окуган жөнөкөй түстү аныктоочу аппараттын прототибин таба аласыз.

Бул системанын жакшыраак версиясы начар көргөн же түстүү сокур адамдар үчүн пайдалуу болушу мүмкүн.

Система AIY үн HAT тиркелген Raspberry Pi колдонууда. TCS34725 RGB сенсорунун үзүлүшү HATтин I2C портуна туташкан. Ажыратуу талдануучу объектти жарыктандыруу үчүн жаркыраган жылуу ак диодду камтыйт. Өлчөө шарттарын оптималдаштыруу жана стандартташтыруу үчүн корпуска жайгаштырылган.

Үч түстүү сенсор сиздин көзүңүздөгү түс сенсорлору сыяктуу үч жыштык диапазонун өлчөйт. Андан кийин кызыл, жашыл жана көк (RGB) баалуулуктар жалпы түс таасирин эсептөө үчүн колдонулат.

Бул атайын системанын жакшы жери, ал азыр AIY үн топтомдорунун "айт" командасын колдонуп, түсүн оозеки түрдө айтып берет. Сураныч, коштоочу видеону карап көрүңүз.

Бул түзмөк AIY Voice HATка туташкан I2C сенсордук түзмөк үчүн мисал катары пайдалуу болушу мүмкүн.

1 -кадам: Колдонулган материалдар

Raspberry Pi 3. ~ 35 US $ же EUR

AIY үн топтому, баш кийимдери HATке кошулган. ~ 25 АКШ доллары же EUR

Adafruit TCS34725 үзүлүшү, башы ширетилген. ~ 8 АКШ доллары же EUR

Өтмө кабелдер.

Нан тактасы (милдеттүү эмес)

Сенсордук корпус үчүн:- колдонулган "Dolce Gusto" кофе капсуласы- 2мм Forexтин кичинекей тегерек бөлүгү (ПВХ көбүк пластинасы), диаметри 37мм жөнүндө- корпустун ички дубалдарын жабуу үчүн чагылдырылбаган кара материал. Мен өзүмө жабышуучу кара резина көбүгүн колдондум.

Кошумча: өлчөөнү козгоо үчүн кичинекей которгуч

Бир нече тамчы пластик желим жана кескич бычак.

2 -кадам: Ассамблея жана колдонуу

Кураштыруу жана колдонуу
Кураштыруу жана колдонуу
Кураштыруу жана колдонуу
Кураштыруу жана колдонуу
Кураштыруу жана колдонуу
Кураштыруу жана колдонуу

AIY үн калпагы бар Raspberry Pi AIY колдонмосунда сүрөттөлгөндөй орнотулган. Чогулардан мурун, баштыктар HATтагы портторго ширетилген. Сенсордун корпусу үчүн "Dulce Gusto" кофе капсуласы бошотулуп, тазаланган жана түбүнүн бир бөлүгү бычак менен кылдаттык менен алынган. Бул үчүн башка нерсени колдонсоңуз болот, кофе капсуласы туура өлчөмгө жана формага ээ болгон. Табактан 2 мм Forex тегерек бөлүгү кесилген, андан кийин үзүлүш Forex борборундагы пластинкага жайгаштырылган, кийиз калем менен белгиленген позиция жана үзүлүштөгү баш үчүн оюк тиешелүү орунга кесилген.

Эми Forex бөлүгү корпуска жабыштырылган жана Forex пластинкасына бекитилген сенсордун үзүлүшү, Velcro тилкесин колдонуу менен. Андан кийин ички дубалдар жарык сиңирүүчү кара материал менен жабылган, мен желим көбүк колдонгон. Кара картон да иштеши керек. Азыр, секирүүчү кабелдерди колдонуп, HATтин I2C "3.3V" порту сенсордогу "V in" менен Ground to Gnd, sda to sda to scl to scl менен туташты. Мен эки бөлүктү бириктирүү үчүн нан тактасын колдонгон элем, бирок бул зарыл эмес.

AIY_TCS34725 питон скриптин src папкасына коюп, "сек/AIY_TCS34752.py" деп кирип, терминалдан скриптти иштетиңиз. Адегенде python скриптин аткарылуучу кылышыңыз керек болот. Суралганда, сенсор бирдигин өлчөнүүчү нерсенин үстүнө коюп, AIY түзмөгүндөгү баскычты басып, бир -эки секунд күтө туруңуз.

Андан кийин, өлчөнгөн RGB жана ак баалуулуктарга таянып, түзмөк адегенде тиешелүү түстүн маанисин эсептейт, андан кийин бул мааниге негизделген түсүн баалап, AIY үн системасы аркылуу оозеки түрдө сүйлөшөт, д. ж. "кочкул кызыл" катары, бирок ошондой эле түс маанисин берет. RGB, түс жана жарыктык (тактык үчүн) баалуулуктары да экранга басылат.

Түс аннотация процессин жөнөкөйлөтүү үчүн RGB баалуулуктары HSV (түс, каныктыруу, маани) форматына айландырылат. Бул түстү белгилүү бир бурчтуктарга (б.а. пирог кесимине) аннотациялоого жана түстүн эсептелген түс маанисине жараша тандоого мүмкүндүк берет.

Сиз ак жана кара шилтеме каршы аппаратты нормалдаштыруу керек. Колдо бар эң ак жана эң кара кагазды өлчөп, ар бирин өлчөп, бул баалуулуктарды кодго максималдуу жана минималдуу деп коюңуз. Оптималдуу шилтеме баалуулуктары гана түстү жакшы тааныйт.

Негизги көйгөйлөрдүн бири - рефлексия. Эгерде сизде жылтырак же жылтыратылган бети бар объектиңиз бар болсо, анда ал жарыктын көп бөлүгүн чагылдырат, ал чындыгында алда канча жеңил көрүнөт. Жарыкты чачыратуу үчүн сиз мембрананын баракчасын колдонсоңуз болот, бирок сизге түзөтүүчү факторду колдонуу керек болушу мүмкүн.

Тунук объекттерде, аларды ак кагазга коюу ыңгайлуу болушу мүмкүн, антпесе чагылган жарыктын көлөмү кичине болот жана объект "кара" деп кабарланат.

Эгерде сиз жарык чыгаруучу объекттердин түсүн өлчөгүңүз келсе, үзүлүштөгү "LED" портун "Жерге" туташтырып, үзүлүштөгү LEDди өчүрүшүңүз керек. Эми ошого жараша нормалдаштыруу баалуулуктарын коюңуз.

Дагы бир жалпы көйгөй - бул объектинин жарыктандырылышы. Жарылуудагы жылуу ак LED жарыктын үзгүлтүксүз спектрин чыгарат. Ошондуктан кээ бир түстөр RGB спектринде ашыкча же аз көрсөтүлүшү мүмкүн. Бул тема боюнча көбүрөөк маалымат алуу үчүн, мурунку колориметр/ фотометр жана спектрометр боюнча көрсөтмөлөрүмдү карап көрүңүз:

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

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

3 -кадам: Кодекс

Кодекс
Кодекс

Код AIY үн колдонмосунан келген коддун модификациясынын жана Bradspi тарабынан TCS34725 сенсор кодунун айкалышы.

Мен ошондой эле Adafruitтин TCS34725 питон кодун колдонууга аракет кылдым, бирок AIY HAT менен бирге тышкы китепканаларды колдонгон ушул жана башка коддордо көйгөйлөр бар болчу. Ар кандай жардам күтөбүз.

Жогоруда айтылгандай, түстүү аннотация RGBдеги маанилерди өзгөртүүгө негизделген. Ак жана кара урматтоочу материалдардын эксперименталдык өлчөөлөрүнүн негизинде нормалдаштыруу орнотууларын орнотушуңуз керек. R, G жана B min же max үчүн абсолюттук маанилерди толтуруңуз.

Сценарийде үндү жана үндү жөнгө салууга мүмкүндүк берген "айт" командасынын жаңы версиясы колдонулат. Мындай учурда, сиз audio.py жана tty драйверлеринин файлдарын жаңыртууңуз керек же сценарийден "көлөмүн жана кадамдарын" жок кылышыңыз керек болот.

#!/usr/bin/env python3 # Бул скрипт AIY Voice HAT үчүн servo_demo.py сценарийинин адаптациясы, # Afafruit TCS34725 бузулуу импортун aiy.audio импорттоо aiy.cloudspeech импорттоо aiy.voicehat үчүн оптималдаштырылган. # gpiozero импорттук LED # servo-портунда тышкы LED үчүн пайдалуу болушу мүмкүн # from gpiozero import Button # servo-port импорт убактысынын тышкы баскычы үчүн пайдалуу болушу мүмкүн smbus bus = smbus. SMBus (1) importysys def hue2color (реңк): # түс жоромолу эгерде ((реңк> 12) жана (реңк 25) жана (реңк 69) жана (реңк 164) жана (реңк 194) жана (өң 269) жана (реңк 319) же (өң <20)): color = "red" return color else: print ("бир нерсе туура эмес кетти")

def tcs34725 (): # өлчөө жана чечмелөө.

# Өлчөө Bradspi TCS34725 скрипти тарабынан аткарылат: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # версиясы ver == 0x44 болсо, # 0x44 болушу керек: print ("Түзмөк / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = REABLE регистрация bus.write_byte (0x29, 0x01 | 0x02) # 0x01 = Күйгүзүү, 0x02 RGB сенсорлору иштетилген bus.write_byte (0x29, 0x80 | 0x14) # Окуунун жыйынтыгы 14 регистрин баштайт, LSB анда MSB data = bus.read_i2c_block_data (0x29, 0) clear = clear = data [1] << 8 | маалымат [0] кызыл = маалымат [3] << 8 | маалыматтар [2] жашыл = маалыматтар [5] << 8 | маалыматтар [4] көк = маалыматтар [7] << 8 | data [6] crgb = "Абсолюттук саноолор: C: %s, R: %s, G: %s, B: %s / n" %(ачык, кызыл, жашыл, көк) басып чыгаруу (crgb) time.sleep (1) башка: басып чыгаруу ("Түзмөк табылган жок / n") # ченелген RGBW маанилеринин нормалдашуусу жана трансформациясы col = "" # Максималдуу маанилер Нормализация факторлору, эксперименталдык түрдө аныкталышы керек # мис. vs. ак барак. Маал -маалы менен текшерип, оңдоп туруңуз. max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # Фон/Минималдуу баалуулуктарды нормалдаштыруу факторлору, эксперименталдык түрдө аныкталышы керек # мис. кара кагазга каршы. Маал -маалы менен текшерип, оңдоп туруңуз. min_bright = 750 min_red = 340 min_green = 245 min_blue = 225 # нормаланган баалуулуктар, 0 менен 1 ортосундагы rel_bright = ((ачык - мин_жарык)/(max_bright - min_bright)) rel_red = ((кызыл - мин_кызыл)/(max_red - мин_ред)) rel_green = ((жашыл - мин_жашыл)/(max_green - min_green)) rel_blue = ((көк - мин_көк)/(max_blue - мин_көк)) hsv_col = colorsys.rgb_to_hsv (rel_red, rel_green, rel_blue_ 35) hue [0] [9] if rel_bright> 0.9: col = "white" # if very bright -> white elif rel_bright black else: col = hue2color (hue) # түс тандоо түстөр боюнча # тандоо ("салыштырмалуу баалуулуктар ачык, кызыл, жашыл, көк:") # print (rel_bright, rel_red, rel_green, rel_blue) # print ("HSV баалуулуктары (өң, каныктыруу, мааниси):", hsv_col) # басып чыгаруу ("hue in °", hue) return [col, rel_bright, rel_red, rel_green, rel_blue, реңк]

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) # расстояние же башка тышкы баскыч, servo3/GPIO 05ке туташкан

aiy.audio.say ("Саламатсызбы!",, көлөмү = 50, кадамы = 100) # том жана чайыр 2017 -жылдын ноябрь айында audio.py жана _tty.py драйверин кайра карап чыгууну талап кылат!

aiy.audio.say ("Баштоо үчүн сенсорду объектинин үстүнө жылдырыңыз. Андан кийин көк баскычты басыңыз",, көлөмү = 50, кадам = 100) басып чыгаруу ("Түстү өлчөөчү орунду сенсорду иштетүү үчүн, андан кийин көк баскычты басыңыз ") Чынында: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # тышкы баскыч үчүн, баскычты buttoni led.set_state менен алмаштырыңыз (aiy.voicehat. LED. BLINK) aiy.audio.say (" Ченөө ",, көлөм = 50, кадам = 100) натыйжа = tcs34725 () # өлчөө жана чечмелөөнү жаратат col = result [0] # түс, текст hue = str (int (натыйжа [5])) # түсү ° менен, текст катары r_red = str (int (натыйжа [2]*255)) # R мааниси, текст катары r_green = str (int (натыйжа [3]*255)) # G мааниси, текст катары r_blue = str (int (натыйжа [4]*255)) # B мааниси, текст катары r_bright = str (int (натыйжа [1]*100)) # W мааниси, текст катары led.set_state (aiy.voicehat. LED. OFF) эгер col == "white" "or col ==" black ": bright =" "elif (result [1]> 0.69): #жарыктын түсү/жарыктыгынын жарыгы =" light "elif (result [1] <0.25): bright =" dark "башка: жаркын = "орто" # баарлашуучу т ал жыйынтыктар color_text = ("Объектинин түсү" + жаркыраган + "" + col) басып чыгаруу (color_text) aiy.audio.say (color_text,, volume = 75, pitch = 100) hue_text = ("Реңк мааниси "+ Hue+" градус ") басып чыгаруу (hue_text) aiy.audio.say (hue_text,, көлөм = 75, кадам = 100)

if _name_ == '_main_': main ()

4 -кадам: Кээ бир шилтемелер жана эскертүүлөр

TCS34725 сенсорунун маалымат барагын бул жерден тапса болот:

Мен колдонгон сенсорду окуу коду бул жерде сүрөттөлгөн:

Түс өлчөө боюнча кошумча маалыматты ушул жана башка сенсор менен мурунку көрсөтмөлөрүмдөн таба аласыз:

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

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

Сунушталууда: