به نام خدا
تشخیص رنگ با استفاده از رزبری پای
در این پروژه قصد داریم تا با استفاده از رزبر پای و سنسور تضخیص رنگ TCS3200 سیستمی ایجاد کنیم که رنگ های مختلف را تشخیص دهد. بری نشان دادن رنگ تشخیص داده شده از یک ال ای دی سه رنگ استفاده کردیم که مطابق با رنگ تشخیص داده شده می درخشد. در این پروژه ما رزبری پای را برای تشخیص رنگ های قرمز و آبی و سبز برنامه نویسی کرده ایم اما شما میتوانید با استفاده از مقادیر بقیه ی رنگ ها آن ها را نیز تشخیص دهید.
سنسور رنگ TCS3200:
با برنامه نویسی درست می توان با این سنسور هر تعداد رنگی را تشخیص داد. شماتیک داخلی این سنسور را در شکل زیر مشاهده می کنی. در داخل سنسور یک مربع وجود دارد که به ماتریس RGB معروف است. هر یک از این مربع های کوچک دارای سه سنسور برای تشخیص رنگ های قرمز ، سبز و آبی هستند.
قطعات مورد نیاز مدار تشخیص رنگ با استفاده از رزبری پای:
رزبری پای با سیستم عامل از پیش نصب شده
سنسور رنگ TCS3200
تراشه ی شمارنده ی CD4040
ال ای دی RGB
سه عدد مقاومت یک کیلو اهمی
خازن یک میلی فاراد
اتصالات مدار:
در جدول زیر تمامیه اتصالات بین رزبری پای و سنسور تشخیص رنگ را مشاهده می کنید:
Sensor Pins |
Raspberry Pi Pins |
Vcc |
+۳٫۳v |
GND |
ground |
S0 |
+۳٫۳v |
S1 |
+۳٫۳v |
S2 |
GPIO6 of PI |
S3 |
GPIO5 of PI |
OE |
GPIO22 of PI |
OUT |
CLK of CD4040 |
اتصالات بین شمارنده ی CD4040 و رزبری پای در جدول زیر آمده است :
CD4040 Pins |
Raspberry Pi Pins |
Vcc16 |
+۳٫۳v |
Gnd8 |
gnd |
Clk10 |
OUT of sensor |
Reset11 |
GPIO26 of PI |
Q0 |
GPIO21 of PI |
Q1 |
GPIO20 of PI |
Q2 |
GPIO16 of PI |
Q3 |
GPIO12 of PI |
Q4 |
GPIO25 of PI |
Q5 |
GPIO24 of PI |
Q6 |
GPIO23 of PI |
Q7 |
GPIO18 of PI |
Q8 |
No connection |
Q9 |
No connection |
Q10 |
No connection |
Q11 |
No connection |
در تصویر شماتیک تمامیه اتصالات این پروژه را مشاهده می کنید:
هر رنگ خود به تنهایی از سه رنگ دیگر تشکیل می شود. قرمز ، سبز و آبی. اگر بتوانیم میزان هر کدام از این رنگ ها را در رنگ مورد نظر بسنجیم ، می توانیم رنگ را تشخیص دهیم. اما این امکان وجود ندارد که با استفاده از این سنسور هر سه رنگ را در یک زمان بسنجیم این سنسور آن سه رنگ را یکی یکی بررسی میکند. رنگی که می خواهیم بسنجیم با اتاده پین های S2 و S3 انتخاب می شود. با استفاده از این دو پین می توانیم به سنسور بگوییم که چه رنگی تشخیص داده شود.
کد برنامه ی تشخیص رنگ با استفاده از رزبری پای:
دانلود فایل#working import time import RPi.GPIO as IO IO.setmode (IO.BCM) IO.setwarnings(False) #do not show any warnings x=0 IO.setup(6,IO.OUT #pins 6,5,… are set as output IO.setup(5,IO.OUT) IO.setup(27,IO.OUT) IO.setup(17,IO.OUT) IO.setup(13,IO.OUT) IO.setup(22,IO.OUT) IO.setup(26,IO.OUT) IO.setup(21,IO.IN) #pins 21,20… are set as input IO.setup(20,IO.IN) IO.setup(16,IO.IN) IO.setup(12,IO.IN) IO.setup(25,IO.IN) IO.setup(24,IO.IN) IO.setup(23,IO.IN) IO.setup(18,IO.IN) while 1: IO.output(6,0) #choose red array by putting S2 and S3 low IO.output(5,0) time.sleep(0.1) IO.output(26,1) #reset counter one time time.sleep(0.2) IO.output(26,0) IO.output(22,0) #enable output of module for 100msec for counter to read frequency time.sleep(0.01) IO.output(22,1) if(IO.input(21)==True): x=1 if(IO.input(20)==True): x=x+2 if(IO.input(16)==True): x=x+4 if(IO.input(12)==True): x=x+8 if(IO.input(25)==True): x=x+16 if(IO.input(24)==True): x=x+32 if(IO.input(23)==True): x=x+64 if(IO.input(18)==True): x=x+128 print("Red=") #detect value counted by counter R = x-50 print(R) x=0 IO.output(6,0) #choose blue array IO.output(5,1) time.sleep(0.1) IO.output(26,1) #reset counter one time time.sleep(0.2) IO.output(26,0) IO.output(22,0) #enable output of module for 100msec for counter to read frequency time.sleep(0.01) IO.output(22,1) if(IO.input(21)==True): x=1 if(IO.input(20)==True): x=x+2 if(IO.input(16)==True): x=x+4 if(IO.input(12)==True): x=x+8 if(IO.input(25)==True): x=x+16 if(IO.input(24)==True): x=x+32 if(IO.input(23)==True): x=x+64 if(IO.input(18)==True): x=x+128 print("Blue=") #detect value counted by counter B = x-20 print(B) x=0 IO.output(6,1) #choose green array IO.output(5,1) time.sleep(0.1) IO.output(26,1) #reset counter one time time.sleep(0.2) IO.output(26,0) IO.output(22,0) #enable output of module for 100msec for counter to read frequency time.sleep(0.01) IO.output(22,1) if(IO.input(21)==True): x=1 if(IO.input(20)==True): x=x+2 if(IO.input(16)==True): x=x+4 if(IO.input(12)==True): x=x+8 if(IO.input(25)==True): x=x+16 if(IO.input(24)==True): x=x+32 if(IO.input(23)==True): x=x+64 if(IO.input(18)==True): x=x+128 print("Green=") #detect value counted by counter G=x-42 print(G) x=0 print print print print print print if((R>=B+10)and(R>=G+10)): #if RED color intensity is high light RED led IO.output(17,0) elif((G>=B+10)and(G>=R+10)): #if GREEN color intensity is high light GREEN led IO.output(13,0) elif((B>=R+10)and(B>=G+10)): #if BLUE color intensity is high light BLUE led IO.output(27,0) time.sleep(2) #after 2 sec turn off LEDs IO.output(17,1) IO.output(13,1) IO.output(27,1)
من سورس برنامه تشخیص رنگ با رزبری که گذاشتین رو کپی کردم داخل پایتون ارور میده و اجرا نمیشه !!!!!!!!!!!!دلیلش چیه؟؟؟؟/؟
سلام
کد ارور چیه؟