فهرست مطالب:

سنسور رنگ صحبت ، بر اساس کیت صدای AIY: 4 مرحله
سنسور رنگ صحبت ، بر اساس کیت صدای AIY: 4 مرحله

تصویری: سنسور رنگ صحبت ، بر اساس کیت صدای AIY: 4 مرحله

تصویری: سنسور رنگ صحبت ، بر اساس کیت صدای AIY: 4 مرحله
تصویری: BMW Mini Cooper S Rear Rally Suspension Upgrade - Edd China's Workshop Diaries 17 2024, نوامبر
Anonim
سنسور رنگ صحبت ، بر اساس کیت صدای AIY
سنسور رنگ صحبت ، بر اساس کیت صدای AIY
سنسور رنگ صحبت ، بر اساس کیت صدای AIY
سنسور رنگ صحبت ، بر اساس کیت صدای AIY
سنسور رنگ صحبت ، بر اساس کیت صدای AIY
سنسور رنگ صحبت ، بر اساس کیت صدای AIY
سنسور رنگ صحبت ، بر اساس کیت صدای AIY
سنسور رنگ صحبت ، بر اساس کیت صدای AIY

من اخیراً با خط بریل کمی آموخته بودم ، می پرسیدم آیا می توانم چیزی را با استفاده از کیت صدای AIY برای رزبری پای بسازم ، که ممکن است برای افراد کم بینا مفید واقع شود. بنابراین در ادامه توضیح داده شده است که نمونه اولیه یک دستگاه تشخیص رنگ ساده را خواهید یافت که یافته های آن را با صدای بلند می خواند.

نسخه مفصل تر این سیستم ممکن است برای افراد دارای اختلال بینایی یا کوری رنگ مفید باشد.

این سیستم از رزبری پای استفاده می کند که HAT صدای HAT متصل شده است. شکست سنسور TCS34725 RGB به پورت I2C HAT متصل است. برک آوت دارای یک LED سفید روشن و گرم است تا شی مورد تجزیه و تحلیل را روشن کند. شکست به منظور بهینه سازی و استانداردسازی شرایط اندازه گیری در محفظه ای قرار گرفت.

سنسور سه رنگ تقریباً سه محدوده فرکانسی را با سنسورهای رنگ در چشم شما اندازه گیری می کند. سپس از مقادیر قرمز ، سبز و آبی (RGB) برای محاسبه تاثیر کلی رنگ استفاده می شود.

نکته خوب در مورد این سیستم ویژه این است که اکنون با استفاده از فرمان "say" کیت های صوتی AIY رنگ را به صورت شفاهی به شما می گوید. لطفاً ویدیوی همراه آن را مشاهده کنید.

این دستگاه همچنین ممکن است به عنوان مثال برای دستگاه حسگر I2C متصل به AIY voice HAT مفید باشد.

مرحله 1: مواد مورد استفاده

Raspberry Pi 3. ~ 35 دلار آمریکا یا یورو

کیت صدای AIY ، با سرصفحه به HAT لحیم شده است. 25 دلار آمریکا یا یورو

شکست Adafruit TCS34725 ، با هدر لحیم شده. US 8 دلار آمریکا یا یورو

کابل های بلوز.

تخته نان (اختیاری)

برای محفظه سنسور:- یک کپسول قهوه "دولچه گوستو" استفاده شده- یک قطعه کوچک گرد 2 میلی متری فارکس (صفحه فوم پی وی سی) ، با قطر حدود 37 میلی متر- یک ماده سیاه منعکس کننده برای پوشش دیوارهای داخلی محفظه. من از فوم لاستیکی سیاه چسب استفاده کردم.

اختیاری: یک سوئیچ کوچک برای برانگیختن اندازه گیری ها

چند قطره چسب پلاستیکی و چاقوی برش.

مرحله 2: مونتاژ و استفاده

مونتاژ و استفاده
مونتاژ و استفاده
مونتاژ و استفاده
مونتاژ و استفاده
مونتاژ و استفاده
مونتاژ و استفاده

رزبری پای با صدای HAT AIY مطابق راهنمای AIY تنظیم شده است. قبل از مونتاژ ، سرصفحه ها به بنادر روی HAT لحیم می شوند. برای محفظه سنسور ، یک کپسول قهوه "Dulce Gusto" تخلیه ، تمیز و قسمتی از قسمت زیرین آن با دقت با چاقو برداشته شد. ممکن است از چیز دیگری برای این منظور استفاده کنید ، کپسول قهوه فقط اندازه و شکل مناسب را داشت. یک قطعه گرد از فارکس 2 میلی متری از یک صفحه بریده شد ، سپس برک آوت به صورت مرکزی بر روی صفحه فارکس قرار گرفت ، موقعیت با قلم نمدی مشخص شد و یک شکاف برای سربرگ روی برک آوت در موقعیت مناسب بریده شد.

در حال حاضر قطعه فارکس به محفظه چسبیده و شکست سنسور با استفاده از نوار Velcro به صفحه فارکس متصل شده است. سپس دیوارهای داخلی با یک ماده سیاه جذب کننده نور پوشانده شد ، من از یک فوم لاستیکی خود چسب استفاده کردم. مقوای سیاه نیز باید کار کند. اکنون ، با استفاده از کابل های جهنده ، پورت I2C "3.3V" HAT به سنسور "V in" ، Ground to Gnd ، sda به sda و scl به scl متصل شد. من برای اتصال هر دو قسمت از تخته نان استفاده کرده بودم ، اما این لازم نیست.

اسکریپت AIY_TCS34725 پایتون را در پوشه src قرار دهید و اسکریپت را از ترمینال dev اجرا کرده و "sec/AIY_TCS34752.py" را وارد کنید. شاید لازم باشد ابتدا اسکریپت پایتون را اجرایی کنید. وقتی از شما خواسته شد ، واحد حسگر را روی شی مورد اندازه گیری قرار دهید ، دکمه را در دستگاه AIY فشار دهید و یک یا دو ثانیه صبر کنید.

سپس ، بر اساس مقادیر اندازه گیری RGB و سفید ، دستگاه ابتدا مقدار رنگ مربوطه را محاسبه می کند ، سپس رنگ را بر اساس این مقدار برآورد می کند و آنها را از طریق سیستم صوتی AIY به صورت شفاهی ارسال می کند ، به عنوان مثال. گرم به عنوان "قرمز تیره" ، اما ارزش رنگ را نیز می دهد. مقادیر RGB ، رنگ و روشنایی (به طور دقیق روشنایی) نیز روی صفحه چاپ می شوند.

برای ساده سازی روند حاشیه نویسی رنگ ، مقادیر RGB به فرمت HSV (رنگ ، اشباع ، مقدار) تبدیل می شوند. این اجازه می دهد تا یک رنگ را در محدوده خاصی از زوایا (یعنی یک تکه پای) حاشیه نویسی کنید و رنگ را بر اساس مقدار رنگ محاسبه شده انتخاب کنید.

شما باید دستگاه خود را در برابر مرجع سفید و سیاه عادی کنید. فقط سفیدترین و سیاه ترین کاغذهای موجود را اندازه بگیرید ، هر کدام را اندازه گیری کنید و این مقادیر را به عنوان حداکثر و حداقل مقادیر در کد قرار دهید. فقط مقادیر مرجع بهینه تشخیص رنگ خوبی را ارائه می دهند.

یک مشکل اساسی تأمل است. اگر جسمی با سطح براق یا صیقلی دارید ، مقدار زیادی از نور ساطع شده توسط LED را منعکس می کند و بسیار سبک تر از آنچه که واقعاً به نظر می رسد ، نشان می دهد. ممکن است برای پراکندگی نور از ورقه ای از غشا استفاده کنید ، اما ممکن است نیاز به پیاده سازی ضریب تصحیح داشته باشید.

در مورد اجسام شفاف ، قرار دادن آنها بر روی کاغذ سفید مفید است ، در غیر این صورت میزان نور منعکس شده بسیار کوچک و شیء "سیاه" گزارش می شود.

اگر می خواهید رنگ اجسامی که نور ساطع می کنند را اندازه گیری کنید ، باید LED را در محل شکست با اتصال پورت "LED" در شکست به "Ground" خاموش کنید. حال مقادیر نرمال سازی را بر این اساس تنظیم کنید.

مشکل کلی دیگر ، روشنایی جسم است. چراغ سفید گرم روی بریکت طیفی از نور غیر مداوم را منتشر می کند. بنابراین رنگهای خاصی ممکن است در طیف RGB بیش از حد یا کم نشان داده شوند. برای کسب اطلاعات بیشتر در مورد این موضوع ، لطفاً به دستورالعمل های قبلی من در مورد رنگ سنج/ نورسنج و طیف سنج نگاه کنید:

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

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

مرحله 3: کد

کد
کد

کد ترکیبی از اصلاح یک کد از دفترچه راهنمای صوتی AIY و کد سنسور TCS34725 توسط بردسپی است.

من همچنین سعی کرده بودم از کد پایتون TCS34725 از Adafruit استفاده کنم ، اما در اجرای این و برخی کدهای دیگر که از کتابخانه های خارجی در ترکیب با AIY HAT استفاده می کنند ، مشکل داشتم. هر کمکی استقبال می شود

همانطور که قبلاً نیز گفته شد ، حاشیه نویسی رنگ بر اساس تغییر رنگ RGB به رنگ است. شما باید تنظیمات عادی سازی را بر اساس اندازه گیری آزمایشی مواد احترام سفید و سیاه تنظیم کنید. مقادیر مطلق R ، G و B min یا max را مطابق آن پر کنید.

این اسکریپت از نسخه جدیدی از دستور "say" استفاده می کند که به شما امکان می دهد میزان صدا و گام را تنظیم کنید. در این صورت ، ممکن است مجبور شوید فایل های درایور audio.py و tty را به روز کنید یا "قطعات حجم و گام" را از اسکریپت حذف کنید.

#!/usr/bin/env python3 # این اسکریپت یک اقتباس از اسکریپت servo_demo.py برای صدای HAT AIY است ، # برای تشخیص رنگ از طریق واردات شکست Afafruit TCS34725 aiy.audio import aiy.cloudspeech import aiy.voicehat # از واردات gpiozero LED # می تواند برای یک LED خارجی در سرو پورت مفید باشد # از دکمه واردات gpiozero # می تواند برای یک دکمه خارجی در زمان واردات سروو پورت smbus bus = smbus مفید باشد. (رنگ): تفسیر # رنگ بر اساس مقادیر رنگ محاسبه شده در صورتی که ((رنگ> 12) و (رنگ 25) و (رنگ 69) و (رنگ 164) و (رنگ 194) و (رنگ 269) و (رنگ 319) یا (رنگ <20)): color = "قرمز" رنگ دیگر را برگردانید: چاپ ("مشکلی پیش آمد")

def tcs34725 (): # اندازه گیری و تفسیر.

# اندازه گیری توسط اسکریپت Bradspi TCS34725 انجام می شود: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29، 0x80 | 0x12) ver = bus.read_byte (0x29) # نسخه # باید 0x44 باشد اگر ver == 0x44: print ("Device found / n") bus.write_byte (0x29، 0x80 | 0x00) # 0x00 = فعال کردن ثبت نام bus.write_byte (0x29، 0x01 | 0x02) # 0x01 = روشن ، سنسورهای 0x02 RGB bus.write_byte (0x29 ، 0x80 | 0x14) # خواندن نتایج از ثبت 14 شروع می شود ، LSB سپس داده های MSB = 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) else: print ("دستگاه پیدا نشد / n") # عادی سازی و تغییر مقادیر اندازه گیری شده RGBW col = "" # حداکثر مقادیر عوامل عادی سازی ، باید به صورت تجربی تعریف شوند # مثال در مقابل یک کاغذ سفید. هر از گاهی بررسی و تصحیح کنید. 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 = ((روشن - min_bright)/(max_bright - min_bright)) rel_red = ((قرمز - min_red)/(max_red - min_red)) rel_green = ((سبز - min_green)/(max_green - min_green)) rel_blue = ((آبی - min_blue)/(max_bluue - min_blue)) hsv_col = colorsys.rgb_to_hsv (rel_red ، rel_green ، rel_blv_) 35 = 9 [0] if rel_bright> 0.9: col = "white" # if very bright -> white elif rel_bright black other: col = hue2color (hue) # انتخاب رنگ با مقادیر رنگ # print ("مقادیر نسبی روشن ، قرمز ، سبز ، آبی:") # چاپ (rel_bright ، rel_red ، rel_green ، rel_blue) # print ("مقادیر HSV (رنگ ، اشباع ، مقدار):" ، hsv_col) # print ("hue in °" ، hue) بازگشت [col، rel_bright ، rel_red ، rel_green ، rel_blue ، hue]

def main ():

button = aiy.voicehat.get_button () # تغییر وضعیت دکمه led = aiy.voicehat.get_led () # تغییر وضعیت دکمه-LED aiy.audio.get_recorder (). شروع () # buttoni = دکمه (5) # سنسور فاصله یا دکمه خارجی دیگر ، متصل به servo3/GPIO 05

aiy.audio.say ("سلام!" ، ، حجم = 50 ، pitch = 100) # حجم و گام نیاز به بازنگری درایور audio.py و _tty.py در نوامبر 2017 دارد!

aiy.audio.say ("برای شروع ، سنسور را به بالای جسم منتقل کنید. سپس دکمه آبی را فشار دهید" ، ، حجم = 50 ، زمین = 100) چاپ ("برای فعال کردن سنسور اندازه گیری رنگ در بالای شی ، سپس دکمه آبی را فشار دهید ") while True: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # برای دکمه خارجی ، دکمه را با buttoni led.set_state (aiy.voicehat. LED. BLINK) aiy.audio.say (" اندازه گیری "، ، حجم = 50 ، زمین = 100) result = tcs34725 () # اندازه گیری و تفسیر را تداعی می کند col = result [0] # color، as text text = str (int (result [5])) # hue in °، به عنوان متن 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 "یا col ==" black ": bright =" "elif (نتیجه [1]> 0.69): #روشنایی/روشنایی رنگ bright =" light "elif (نتیجه [1] <0.25): bright =" dark "دیگری: bright = "medium" # ارتباط t او نتایج color_text = ("رنگ شی" + روشن + "" + col) چاپ (color_text) aiy.audio.say (color_text ، ، حجم = 75 ، زمین = 100) hue_text = ("مقدار رنگ "+ رنگ+" درجه ") چاپ (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…

توصیه شده: