فهرست مطالب:
تصویری: سنسور رنگ صحبت ، بر اساس کیت صدای AIY: 4 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
من اخیراً با خط بریل کمی آموخته بودم ، می پرسیدم آیا می توانم چیزی را با استفاده از کیت صدای 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…
توصیه شده:
چراغ های LED چند رنگ رنگ Reactive - سنسور تشخیص صدا آردوینو - نوار LED RGB: 4 مرحله
چراغ های LED چندرنگ Reactive Music | سنسور تشخیص صدا آردوینو | RGB LED Strip: پروژه چراغ های LED چند رنگ LED فعال در برابر موسیقی. در این پروژه ، از یک نوار LED 5050 RGB ساده (نه LED WS2812 آدرس پذیر) ، سنسور تشخیص صدا آردوینو و آداپتور 12 ولت استفاده شد
ردیابی شی بر اساس تشخیص رنگ: 10 مرحله
ردیابی شیء مبتنی بر تشخیص رنگ: داستان این پروژه را برای یادگیری پردازش تصویر با استفاده از Raspberry PI و CV باز انجام دادم. برای جذابیت بیشتر این پروژه ، من از دو موتور SG90 Servo و دوربین نصب روی آن استفاده کردم. یک موتور برای حرکت افقی و موتور دوم برای حرکت عمودی استفاده می شود
ربات ردیابی رنگ بر اساس چرخ همه کاره و OpenCV: 6 مرحله
ربات ردیابی رنگ بر اساس چرخ همه کاره و OpenCV: من از یک شاسی چرخ همه جهته برای پیگیری رنگ خود استفاده می کنم و از یک نرم افزار تلفن همراه به نام OpenCVBot استفاده می کنم. با تشکر از توسعه دهندگان نرم افزار در اینجا ، از شما متشکرم. OpenCV Bot در واقع هر شیء بلادرنگ را از طریق پردازش تصویر شناسایی یا ردیابی می کند
کیت تمرین لحیم کاری SMD ، یا چگونه یاد گرفتم که دیگر نگران نباشم و کیت ارزان چینی را دوست داشته باشم: 6 مرحله
کیت تمرین SMD Soldering Practice ، یا چگونه یاد گرفتم که دیگر نگران نباشم و کیت ارزان چینی را دوست داشته باشم: این روش لحیم کاری را نمی توان آموزش داد. این دستورالعمل نحوه ساخت یک کیت چینی ارزان است. ضرب المثل این است که شما آنچه را که برای آن پرداخت می کنید دریافت می کنید ، و این چیزی است که شما دریافت می کنید: ضعیف مستند شده است. کیفیت قسمت مشکوک بدون پشتیبانی. بنابراین چرا باید یک
سنسور باد صحبت (با کیت ضبط صدا): 6 مرحله
سنسور باد صحبت (با کیت ضبط صدا): این یک سنسور باد با نخ های رسانا ، پارچه های رسانا و یک توپ فلزی است