سنسور های تشخیص رنگ قابلیت تیشخیص رنگ های RGB را دارند و میتوانند تمامی رنگ ها را شناسایی کنند. با کدنویسی میتوانیم کد رنگ ها را دریافت و سپس برای نمایش رنگ از هر خروجی استفاده کنیم. در این پروژه برای نمایش رنگ تشخیص داده شده توسط سنسور تشخیص رنگ RGB از ال ای دی حلقه ای RGB با کد WS2812B استفاده شده است. بدین صورت که با نزدیک شدن هر رنگ به سنسور، همان رنگ تشخیص داده شده بر روی ال ای دی حلقه ای نمایش داده میشود. در ادامه پروژه تشخیص رنگ آردوینو با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
سنسور تشخیص رنگ TCS34725
سنسور تشخیص رنگ TCS34725 از ال ای دی های RGB ساخته شده و به دلیل حذف فیلتر های IR دقت اندازه گیری نور افزایش یافته است. سنسور TCS34725 از رگولاتور داخلی ۳٫۳ بهره میبرد و به راحتی میتوانید تغذیه ۳ تا ۵ ولت DC را به برد اعمال کنید. این سنسور از تراشه I2C 7 بیتی ساخته شده است و به راحتی با تمامی بردهای میکروکنترلر که از رابط I2C پشتیبانی میکنند قابل راه اندازی و اجرا است. هر ال ای دی با خروجی لاجیک لول روشن و خاموش خواهد شد. این سنسور حساسیت بالایی داشته و در طیف رنگی RED, GREEN, BLUE تشخیص بسیار دقیقی انجام میدهد. سنسورهای رنگ در پروژه های تشخیص یک رنگ خاص کاربرد دارند. به این معنی که با قرار گرفتن شی رنگی در مقابل سنسور، ال ای دی به همان رنگ تغییر خواهد کرد: در صورتکیه رنگ مورد نظر آبی باشد، سنسور به رنگ آبی تبدیل میشود و حتی میتوانید یک کد رنگ خاص را به آن اختصاص دهید تا پس از تشخیص رنگ مورد نظر یک عمل خاصی در مدار رخ دهد. از قابلیت های منحصر به فرد سنسور TCS34725 تشخیص شدت نور بر واحد Lux و اندازه گیری دما بر واحد کلوین است.
بررسی پایه های سنسور TCS34725
- پروتکل ارتباطی سنسور تشخیص رنگ به صورت I2C است و به همین دلیل از دو پایه SCL , SDA تشکیل شده است. اگر از برد آردوینو UNO استفاده میکنید، پایه های I2C به ترتیب A4, A5 هستند.
- پایه های تغذیه POWER برای برقراری ارتباط با مدار بر روی برد تعبیه شده است. در صورت نیاز به تغذیه ۵ولت از پایه VIN استفاده کنید.
- پایه INT برای انتخاب آدرس I2C در صورت نیاز استفاده میشود.
- پایه ال ای دی برای مشخص شدن وضعیت ACTIVE LOW بودن فعال میشود.
- VCC: تغذیه ۵ ولت
- ۳٫۳: تغذیه ۳٫۳ ولت
- GND: زمین
- SLC: کلاک I2C
- SDA: دیتا I2C
- INT: تنظیم آدرس I2C
- LED: فعال شدن ACTIVE LOW
نصب کتابخانه Adafruit TCS34725
جهت راه اندازی سنسور رنگ TCS نیاز به کتابخانه داریم. کتابخانه تراشه TCS34725 به صورت پیش فرض در لیست کتابخانه های آردوینو قرار دارد. از مسیر زیر آن را پیدا و نصب کنید.
در این مرحله کتابخانه را نصب کنید تا دسترسی به برنامه های پیش فرض نوشته شده برای سنسور در دسترس شما قرار گیرد.
ال ای دی حلقه ای NEOPIXEL WS2812B
ال ای دی نئوپیکسل نوعی ال ای دی RGB هستند که در ساختار آن ها از آی سی آدرس پذیر و برنامه پذیر استفاده شده است. ال ای دی های نئوپیکسل به دلیل پشتیبانی از کتابخانه های تعریف شده، نمونه برنامه های آماده و آسان در بین سازندگان طرفداران زیادی را جذب کرده است. چرا که بدون نیاز به دانش برنامه نویسی میتوانید توسط یک میکروکنترلر به ال ای دی فرمان دهید. ال ای دی نئوپیکسل با انواع بردهای آردوینو و ESP8266 و رزبری پای سازگاری شده و کتابخانه آن در دسترس عموم قرار گرفته است. ال ای دی نئوپیکسل بر اساس چهار پایه ساخته شده است. پایه VCC, GND, DIN , Dout که یکی از ویژگی های منحصر به فرد ال ای دی نئوپیسکل را به نمایش میگذارد. ال ای دی های نئوپیکسل قابلیت سری شدن دارند. بی نهایت ال ای دی را میتوانید توسط پایه های DIN, Dout به یکدیگر متصل کرده و تعداد ال ای دی های متصل شده به هم را در کد برنامه آردوینو تعریف کنید تا همزمان تغییرات اعمالی را نمایش دهند. پایه ی دیتا به هر پایه از میکروکنترلر متصل شده و از قابلیت دیگر این ال ای دی میتوان به فرمان به تمامی ال ای دی ها فقط توسط یک پایه از میکرو اشاره کرد. فوق العاده است.
بررسی پایه های LED NEOPIXEL
- پایه VCC پایع تغذیه ۵ ولت است که با هر میکروکنترلری که از تغذیه ۵ ولت پشتیبانی میکند، سازگاری دارد.
- پایه GND برای برقراری ارتباط زمین در مدارهای الکترونیکی است.
- پایه IN پایه ورودی است.
- پایه OUT پایه خروجی است.
- پایه DIN, DOUT جهت اتصال سری ال ای دی ها استفاده میشود. به عنوان مثال اگر بخواهید ۴ عدد ال ای دی نئوپیکسل ۸X1 را به یکدیگر متصل کنید، پایه DIN ال ای دی اول را به پایه DOUT ال ای دی دوم متصل میکنیم. به همین ترتیب روند اتصالات ادامه پیدا میکند.
نصب کتابخانه Adafruit Neopixel
کتابخانه Adafruit Neopixel جهت راه اندازی ال ای دی های نئوپیکسل توسعه یافته است. پس از نصب کتابخانه نمونه برنامه های مناسبی جهت شروع و یادگیری کار با ال ای دی ها در کتابخانه قرار گرفته شده است. جهت نصب کتابخانه ابتدا از مسیر زیر کتابخانه را سرچ کنید.
سپس در صفحه باز شده عبارت Neopixel را سرچ و بر روی install کلیک کنید.
کتابخانه neopixel نصب و آماده تست برنامه است.
اتصال سنسورها به آردوینو
در این پروژه از برد آردینو ARDUINO UNO استفاده شده است. برد آردوینو میکروکنترلری با قابلیت دسترسی به پورت های دیجیتال و آنالوگ و پروتکلهای I2C و SPI است. در این آموزش از آردوینو Arduino مدل UNO استفاده شده است. برد آردوینو Arduino دارای تراشه Atmega328P است و با در اختیار داشتن پایههای کنترلی آنالوگ و دیجیتال I/O میتوان با سنسورهای مختلف ارتباط برقرار کرد. با در نظر گرفتن پروتکل ارتباطی، آنها را راه اندازی و کدنویسی کرد. محیط برنامه نویسی IDE Arduino است که نیاز به دانش برنامه نویسی C++ خواهد داشت. با انتقال کد به محیط برنامه نویسی و کامپایل کد پروژه آماده اجرا خواهد بود. مراحل نصب نرم افزار آردوینو Arduino در آموزش زیر نوشته و منتشر شده است. در صورتیکه تا به حال با برد آردوینو کار نکرده اید، ابتدا آموزش زیر را مطالعه و سپس مراحل بعدی را اجرا کنید. آموزش کار با برد آردوینو Arduino و نصب نرم افزار Arduino IDE همچنین به صورت مستقیم میتوانید نرم افزار آردوینو را از طریق لینک زیر دانلود کنید.
کد آردوینو کیت تشخیص رنگ
کد آردوینو کیت تشخیص رنگ RGB با سنسور ال ای دی RGB RING NEOPIXEL ضممیه شده است. در ابتدا طبق مرحله ی اول آموزش کتابخانه های مورد نیاز را نصب کنید. سپس اتصالات را انجام دهید. کد را کپی کنید. یک تب جدید در نرم افزار آردوینو ARDUINO IDE باز کنید. کد را انتقال دهید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
در قدم اول کتابخانه های مورد نیاز فراخوانی میشود. سپس کلاس های مورد نیاز برای فعال سازی هر دو سنسور یعنی سنسور نور و سنسور رنگ در بخش اولیه برنامه نوشته میشود. برای تبدیل رنج ADC به دیجیتال از بازه ۰ تا ۲۵۶ استتفاده میکنیم. به همین دلیل در بخش اول برنامه یک آرایه با بازه ۲۵۶ انتخاب میکنیم. دیتای دریافتی از سنسور نور بر واحد لوکس و بین بازه ۰-۶۵۵۳۶ است که برای تبدیل این بازه به دیجیتال به بازه ۲۵۶ نسبت میدهیم.
Max RGBC Count = (256 − ATIME) × ۱۰۲۴ up to a maximum of 65535
توسط تابع SETPIXELCOLOR با تغییر رنگ سنسور رنگ توسط تابع Y به همان نسبت رنگ متغیرهای تابع ال ای دی تغییر میکند.
pixels.setPixelColor(i, pixels.Color(Y[(int)r], Y[(int)g], Y[(int)b]));
پس از تشخیص رنگ توسط دستور زیر رنگ ال ای دی نئوپیکسل تغییر میکند.
for(int i = 0; i < NUMPIXELS; i++){ pixels.setPixelColor(i, pixels.Color(Y[(int)r], Y[(int)g], Y[(int)b])); } pixels.show();
اجرای پروژه تشخیص رنگ آردوینو
پس از آپلود کد برنامه و انجام اتصالات نوبت به تست و اجرای پروژه است. سنسور تشخیص رنگ قابلیت تشخیص رنگ RGB دارد. بدین صورت که با نزدیک کردن اشیا رنگ در مجاورت و رو به روی سنسور رنگ خوانده شده و تشخیص میدهد. برای نمایش رنگ در این پروژه از ال ای دی حلقه ای نئوپیکسل استفاده شده است. کد رنگ خوانده شده توسط برنامه نویسی بر روی ال ای دی به همان رنگ روشن میشود. یک شی رنگی را رو به روی سنسور قرار دهید. ال ای دی مطابق با رنگ شی به همان رنگ تغییر پیدا میکند. این پروژه با تمامی بردهای میکروکنترلری که از ARDUINO IDE پشتیبانی میکند، سازگاری دارد.
وسایل مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سنسور استفاده شده rgb?
یعنی هر رنگی میشه واسش تعریف کرد؟
با سلام
هر کد رنگی را میتوانید با rgb برای سنسور رنگ در کد برنامه تعیین کنید.
این سنسور را چگونه میتوانم در شبیه ساز tinkercad یا پرتیوس پیدا کنم ؟؟؟؟؟؟
با سلام
این مورد توسط بنده تست نشده است.
سلام
من کیت رو از دانشجوکیت خریدم و طبق آموزش بستم
میتونید هر رنگی که خواستید به ال ای دی برای تشخیص معرفی کنید و دستتون بازه
با سلام
کاربر گرامی از اینکه تجربه خود را با دیگر کاربران به اشتراک میگذارید، صمیمانه سپاسگزاریم.
با سلام
سنسور از چه طریقی به آردوینو وصل میشود/؟ از کدام پایه برای اتصال استفاده کنیم
با سلام
همانطور که در متن آموزش نوشته شده است، این سنسور از رابط I2C بهره میبرد. از پایه A4 , A5 استفاده کنید.
سنسور تشخیص رنگی میشه معرفی کنید که سرعت تشخیص اون خیلی بالا باشه و از فاصله مثلا ۱۰ تا ۲۰ سانتی بتونه رنگ رو تشخیص بده؟
با سلام
در این خصوص سنسور با رنج ۱۰ تا ۲۰ سانتی متر توسط بنده تست نشده است.
سلام
۱- مثلا برای یک تکه پارچه آبی یکدست که در حالت طبیعی بصورت یکنواخت دیده نمیشود و سایه و روشن دارد، آیا تشخیص RGB آن درست است؟ و تا چه حد دقت دارد؟
۲- کل سنسورها و بردها و تجهیزات لازم برای این پروژه جقدر است؟
با سلام
بایستی این مورد را خودتان آزمون و خطا کنید تا به نتیجه دلخواه برسید.