در این نوشته به آموزش ساخت پروژه تشخیص رنگ با آردوینو میپردازیم. یک سنسور رنگ، همانطور که از نامش پیداست، دیوایسی است که رنگها را حس میکند یا تشخیص میدهد. یک سنسور رنگ از یک دیوایس خارجی، برای انتشار نور استفاده میکند (مانند آرایهای از LED های سفید). سپس برای تعیین رنگ آن، نور منعکسشده از جسم را تجزیه و تحلیل میکند.
سنسورهای رنگی، رنگ دقیقی از جسم میدهند. طیف گستردهای از کاربردهای سنسورهای رنگی مانند مرتبسازی اشیاء بر اساس رنگ، سیستمهای کنترل کیفیت، تقویت رنگ چاپگر و غیره وجود دارد.
در این پروژه، ما یک برنامه سنسور رنگ آردوینو ساده طراحی کردهایم که توانایی تشخیص رنگهای مختلف را دارد. ما برای این منظور از سنسورهای رنگی TCS3200 استفاده کردهایم. آشنایی با سنسور رنگ، شماتیک مدار و نحوه کار پروژه سنسور رنگ آردوینو در زیر توضیح داده شده است.
شماتیک مدار
قطعات مورد نیاز
- برد آردوینو Mega
- ماژول سنسور رنگ (TCS3200 (RGB + Clear
- برد بورد (یا پرف بورد)
- منبع تغذیه
- سیم جامپر
توجه: ما از آردوینو مگا در این پروژه استفاده کردهایم. زیرا تعداد زیادی پین I / O دارد و دیوایسهای زیادی مانند سنسور رنگی TCS3200، LCD 16X2 و 4 LED را به آن وصل کردهایم. برای دادههای سنسور ساده با استفاده از ارتباط سریال (اطلاعات سنسور در ترمینال سریال)، میتوان از آردوینو UNO ساده استفاده کرد. البته سنسور TCS230 نیز در ایران مشهور است. البته باید قیمت Tcs3200 و قیمت TCS230 را ببینید و بنا به نیاز خودتان انتخاب کنید ولی ما در این پروژه از Tcs3200 استفاده کردیم.
طرز کار سنسور تشخیص رنگ
از نظر فنی، رنگها تخیلاتی از تصورات ما هستند. هنگامی که سیب قرمز را میبینیم، به این معنی است که طول موج خاص آن (700 نانومتر برای رنگ قرمز) طیف الکترومغناطیسی را منعکس میکند. این انرژی توسط چشم جذب میشود و براساس برخی واکنشهای شیمیایی، مغز میگوید طول موج خاص رنگ قرمز است.
برای رایانهها، سنسورهایی که بین رنگهای مختلف تمایز قائل هستند؛ در تعیین رنگ جسم کمک میکنند. یک سنسور رنگ ساده را با استفاده از یک مقاومت نوری (مقاومت وابسته به نور – LDR) و دو جسم رنگی متفاوت، مثلاً قرمز و آبی میبینیم.
هنگامیکه ما به هر دو جسم، نور قرمز میتابانیم؛ جسم قرمز نور را منعکس میکند. در حالیکه جسم آبی آن را جذب میکند. بنابراین، هنگامیکه نور قرمز بر روی هر دو جسم قرمز و آبی میتابد، جسم قرمز برای LDR درخشانتر به نظر میرسد، زیرا بیشتر نور قرمز را منعکس میکند.
به همینترتیب، هنگامیکه یک نور آبی به در هر دو جسم میتابد، جسم آبی درخشانتر در سنسور به نظر میآید. این روش فقط برای درک نحوه کار سنسور رنگ است و ممکن است نتایج واقعی دقیق نباشند.
سنسورهای رنگی عملی مانند TCS3200، کمی پیچیدهتر از این هستند. سنسور رنگ TCS3200، یک سنسور رنگ قابل برنامهریزی است که نور رنگ را به فرکانس تبدیل میکند. فرکانس خروجی سنسور، به طور مستقیم با شدت نور منعکس شده از جسم متناسب است.
ماژول سنسور رنگی TCS3200 دارای سنسور RGB + Clear به همراه 4 LED سفید است که روی فیبر مدار چاپی تعبیه شده است. TCS3200 دارای یک آرایه 8 x 8 از دیودهای نوری است، که هر 16 عدد از آن برای فیلترهای قرمز، آبی، سبز و شفاف (بدون فیلتر) میباشد.
نمودار بلوکهای عملکرد سنسور رنگ TCS3200 در تصویر زیر نشان داده شده است. که شامل فیلترهای رنگ، آرایه دیودهای نوری، مبدل جریان به فرکانس و خروجی موج مربع نهایی است که میتواند مستقیماً به میکروکنترلر داده شود.
آی سی سنسور رنگ TSC3200 یک آی سی 8 پین با بسته SOC است. تصویر زیر شماتیک پینهای آی سی سنسور رنگ را نشان میدهد. در آن پینهای 1 و 2 (S0 و S1)، پینهای مقیاسگذاری فرکانس خروجی هستند. پین 3 یک پین فعالسازی خروجی است و یک پین active low است. پین 4، GND است.
پین 5، پین VDD است و حداکثر ولتاژ تأمین آن 5.5 ولت است. پین 6 پین خروجی است که از طریق آن میتوانیم خروجی موج مربع را بدست آوریم. پینهای 7 و 8 (S2 و S3)، پینهای انتخاب دیودهای نوری هستند.
پینهای 1، 2 (S0 ، S1) و 7، 8 (S3 ، S4) در سنسور رنگ TCS3200 دارای توجه ویژهای هستند. S0 و S1، پینهای مقیاس گذاری فرکانس خروجی هستند. با استفاده از این پینها، فرکانس موج مربع خروجی را میتوان مطابق برنامه یا میکروکنترلر مورد استفاده مقیاسبندی کرد.
دلیل مقیاسبندی فرکانس خروجی، میکروکنترلرهای مختلف با تنظیمات تایمر مختلف هستند و ممکن است محدودیتهایی در عملکرد شمارنده میکروکنترلرها وجود داشته باشد. در جدول زیر درصد مقیاسبندی خروجی برای حالتهای مختلف S0 و S1 نشان داده شده است.
فرکانس در مقیاس کامل | مقیاس گذاری فرکانس خروجی | S1 | S0 |
———– | Power Down | L | L |
KHz 12 – 10 | 2% | H | L |
KHz 120 – 100 | 20% | L | H |
KHz 600 – 500 | 100% | H | H |
S3 و S4، پین انتخاب دیود نوری هستند. آنها برای انتخاب دیودهای نوری مختلف که با فیلترهای رنگ مختلف (قرمز، آبی، سبز و شفاف) در ارتباط هستند؛ استفاده میشوند. جدول زیر ترکیبهای مختلف S3 و S4 را برای انواع مختلف دیودهای نوری نشان میدهد.
نوع دیود نوری | S4 | S3 |
قرمز | L | L |
آبی | H | L |
شفاف (بدون فیلتر) | L | H |
سبز | H | H |
سنسور رنگ TCS 3200 در قالب یک ماژول به همراه تمام اجزای آن مانند پین هدر، 4 LED سفید، مقاومت و خازن علاوه بر سنسور رنگ واقعی TCS 3200 ارائه میشود. تصویر زیر ماژول سنسور رنگ ریل تایم را نشان میدهد.
نحوه کار پروژه تشخیص رنگ با آردوینو
یک سنسور رنگی ساده با استفاده از آردوینو در این پروژه ایجاد شده است. ماژول سنسور رنگ، رنگ را در محیط اطراف خود حس میکند.
همانطورکه در مقدمه بخش سنسور رنگ ذکر شد، سنسور رنگی TCS3200 دارای فیلترهای قرمز، آبی، سبز و شفاف است. شدت هر رنگ، به عنوان یک فرکانس نشان داده میشود. در آردوینو، ما با HIGH کردن پینهای S0 و S1 در سنسور رنگ، مقیاس فرکانس خروجی را در 100٪ ثابت کردیم.
برای انتخاب نوع دیود نوری یعنی قرمز، سبز یا آبی باید از پین S2 و S3 روی سنسور رنگ استفاده کنیم. هر زمان که یک دیود نوری خاص انتخاب شود، ویژگی PULSEIN آردوینو روی پینی که به خروجی سنسور رنگ متصل است؛ فعال میشود.
این امر به ما کمک میکند تا فرکانس سیگنال خروجی را محاسبه کنیم. همان روند برای هر سه دیود نوری تکرار میشود: R ، G و B. فرکانس در همه موارد با استفاده از ویژگی PULSEIN اندازهگیری میشود و در ترمینال سریال نمایش داده میشود.
علاوهبراین، از این اطلاعات میتوان برای شناسایی رنگی که در قسمت جلوی سنسور قرار گرفته، استفاده کرد. سپس رنگ آن را روی LCD نمایش داد و همچنین LED مربوطه را روشن کرد.
کد پروژه
/*Arduino Mega - Melec.ir*/ #include<LiquidCrystal.h> LiquidCrystal lcd(42,43,44,46,48,50); const int S0 = 7; const int S1 = 6; const int outPut= 5; const int S2 = 4; const int S3 = 3; unsigned int frequency = 0; void setup() { Serial.begin(9600); pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); pinMode(OutPut, INPUT); digitalWrite(S0,HIGH); digitalWrite(S1,HIGH); } void loop() { Serial.print("R="); digitalWrite(S2,LOW); digitalWrite(S3,LOW); frequency = pulseIn(outPut, LOW); Serial.print(frequency); Serial.print("\t"); delay(500); Serial.print("B="); digitalWrite(S2,LOW); digitalWrite(S3,HIGH); frequency = pulseIn(outPut, LOW); Serial.print(frequency); Serial.print("\t"); delay(500); Serial.print("G="); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH); frequency = pulseIn(outPut, LOW); Serial.print(frequency); Serial.print("\t"); delay(500); Serial.print("\n"); }
کاربردهای پروژه تشخیص رنگ با آردوینو
- سنسورهای رنگی در زمینههای پردازش تصویر، پردازش سیگنال دیجیتال، آشکارسازی اشیاء، شناسایی رنگ و غیره کاربردهای گستردهای دارند.
- در صنایع، سنسورهای رنگ اغلب در مرتبسازی اشیاء بر اساس رنگ استفاده میشوند.
منبع: ترجمه از وبسایت ElectronicHub
پروژهها و آموزشهای پیشنهادی دیگر
خیلی خوشحال میمیشیم اگر نظر خودتان را در مورد پروژه تشخیص رنگ با آردوینو در قسمت کامنتها بنویسید. همچنین اگر علاقمند بودید دیگر پروژههای آردوینو را هم ببینید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
سلام و خسته نباشید
ببخشید یک سوال داشتم
من میخوام یک کیتی طراحی کنم که وقتی سنسورش رنگ قرمز رو ببینه با استفاده از بوق به صدا در بیاد
آیا همچین سنسوری وجود داره ؟