رباتیک و هوافضا

تشخیص رنگ با استفاده از رزبری پای

به نام خدا

تشخیص رنگ با استفاده از رزبری پای

در این پروژه قصد داریم تا با استفاده از رزبر پای و سنسور تضخیص رنگ TCS3200 سیستمی ایجاد کنیم که رنگ های مختلف را تشخیص دهد. بری نشان دادن رنگ تشخیص داده شده از یک ال ای دی سه رنگ استفاده کردیم که مطابق با رنگ تشخیص داده شده می درخشد. در این پروژه ما رزبری پای را برای تشخیص رنگ های قرمز و آبی و سبز برنامه نویسی کرده ایم اما شما میتوانید با استفاده از مقادیر بقیه ی رنگ ها آن ها را نیز تشخیص دهید.

 

 

 سنسور رنگ TCS3200:

با برنامه نویسی درست می توان با این سنسور هر تعداد رنگی را تشخیص داد. شماتیک داخلی این سنسور را در شکل زیر مشاهده می کنی. در داخل سنسور یک مربع وجود دارد که به ماتریس RGB معروف است. هر یک از این مربع های کوچک دارای سه سنسور برای تشخیص رنگ های قرمز ، سبز و آبی هستند.

 

قطعات مورد نیاز مدار تشخیص رنگ با استفاده از رزبری پای:

 

رزبری پای با سیستم عامل از پیش نصب شده

سنسور رنگ TCS3200

تراشه ی شمارنده ی CD4040

ال ای دی RGB

سه عدد مقاومت یک کیلو اهمی

خازن یک میلی فاراد

بیشتر بخوانید...  کنترل سرعت وجهت حرکت موتور dc با کمک آردوینو

 

 

 

اتصالات مدار:

در جدول زیر تمامیه اتصالات بین رزبری پای و سنسور تشخیص رنگ را مشاهده می کنید:

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 انتخاب می شود. با استفاده از این دو پین می توانیم به سنسور بگوییم که چه رنگی تشخیص داده شود.

بیشتر بخوانید...  کنترل ال ای دی 8 در 8 با استفاده از رزبری پای

کد برنامه ی تشخیص رنگ با استفاده از رزبری پای:

دانلود فایل
#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)

 

دیدگاه‌ها (2)

*
*

    عليرضا اسماعيلي يزداني مهمان شهریور 19, 1399 پاسخ

    من سورس برنامه تشخیص رنگ با رزبری که گذاشتین رو کپی کردم داخل پایتون ارور میده و اجرا نمیشه !!!!!!!!!!!!دلیلش چیه؟؟؟؟/؟

      Admin مدیر کل آبان 16, 1399 پاسخ

      سلام
      کد ارور چیه؟