이 프로젝트에서는 Raspberry Pi와 함께 TCS3200 컬러 센서 모듈을 사용하여 색상 을 감지 할 것 입니다. 여기에서는 Raspberry Pi 용 Python 코드를 사용하여 TCS3200 센서를 사용하여 색상을 감지했습니다. 색상 감지를 설명하기 위해 RGB LED를 사용했습니다.이 RGB LED는 동일한 색상으로 빛나며 물체가 센서 근처에 있습니다. 현재 우리는 빨강, 녹색 및 파랑 색상 만 감지하도록 Raspberry Pi를 프로그래밍했습니다. 그러나 모든 색상이 이러한 RGB 구성 요소로 구성되어 있으므로 RGB 값을 얻은 후 모든 색상을 감지하도록 프로그래밍 할 수 있습니다. 마지막에 데모 비디오를 확인하십시오.
이전에 Arduino와 동일한 TCS3200을 사용하여 색상의 RGB 값을 읽고 표시했습니다. 더 진행하기 전에 TCS3200 컬러 센서에 대해 알려주십시오.
TCS3200 컬러 센서:
TCS3200은 올바른 프로그래밍으로 여러 색상을 감지 할 수 있는 컬러 센서 입니다. TCS3200에는 RGB (Red Green Blue) 어레이가 포함되어 있습니다. 현미경 수준의 그림에서 보듯이 eye on sensor 내부의 사각형 상자를 볼 수 있습니다. 이 사각형 상자는 RGB 행렬의 배열입니다. 각 상자에는 적색, 녹색 및 청색 광도를 감지하기위한 세 개의 센서가 있습니다.
그래서 우리는 같은 레이어에 Red, Blue, Green 배열이 있습니다. 따라서 색상을 감지하는 동안 세 요소를 모두 동시에 감지 할 수는 없습니다. 이러한 각 센서 어레이는 색상을 감지하기 위해 하나씩 개별적으로 선택되어야합니다. 모듈은 특정 색상을 감지하고 다른 색상은 그대로 두도록 프로그래밍 할 수 있습니다. 나중에 설명 할 선택 목적을위한 핀이 포함되어 있습니다. 필터 모드가없는 네 번째 모드가 있습니다. 필터 모드없이 센서는 백색광을 감지 합니다.
이 센서를 Raspberry Pi에 연결하고 색상에 따라 적절한 응답을 제공하도록 Raspberry Pi를 프로그래밍합니다.
필요한 구성 요소:
여기 에서는 Raspbian Jessie OS와 함께 Raspberry Pi 2 Model B를 사용하고 있습니다. 모든 기본 하드웨어 및 소프트웨어 요구 사항은 이전에 논의되었으며, 시작하려면 Raspberry Pi 소개 및 Raspberry PI LED Blinking에서 찾아 볼 수 있습니다.
- OS가 사전 설치된 Raspberry Pi
- TCS3200 컬러 센서
- CD4040 카운터 칩
- RGB LED
- 1KΩ 저항 (3 개)
- 1000uF 커패시터
회로도 및 연결:
컬러 센서를 Raspberry Pi와 연결하기 위해 수행되는 연결은 아래 표에 나와 있습니다.
센서 핀 |
라즈베리 파이 핀 |
Vcc |
+ 3.3v |
GND |
바닥 |
S0 |
+ 3.3v |
S1 |
+ 3.3v |
S2 |
PI의 GPIO6 |
S3 |
PI의 GPIO5 |
OE |
PI의 GPIO22 |
밖 |
CD4040의 CLK |
Raspberry Pi와 CD4040 카운터의 연결은 아래 표에 나와 있습니다.
CD4040 핀 |
라즈베리 파이 핀 |
Vcc16 |
+ 3.3v |
Gnd8 |
gnd |
Clk10 |
센서 부족 |
재설정 11 |
PI의 GPIO26 |
Q0 |
PI의 GPIO21 |
Q1 |
PI의 GPIO20 |
Q2 |
PI의 GPIO16 |
Q3 |
PI의 GPIO12 |
4 분기 |
PI의 GPIO25 |
Q5 |
PI의 GPIO24 |
Q6 |
PI의 GPIO23 |
Q7 |
PI의 GPIO18 |
Q8 |
연결되지 않음 |
Q9 |
연결되지 않음 |
Q10 |
연결되지 않음 |
Q11 |
연결되지 않음 |
다음은 Raspberry Pi와 컬러 센서를 연결 하는 전체 회로도입니다.
작동 설명:
모든 색상은 빨강, 녹색 및 파랑 (RGB)의 세 가지 색상으로 구성됩니다. 그리고 우리가 어떤 색상의 RGB 강도를 안다면 그 색상을 감지 할 수 있습니다. 우리는 이전에 Arduino를 사용하여 이러한 RGB 값을 읽었습니다.
TCS3200 컬러 센서를 사용하면 적색, 녹색, 청색 빛을 동시에 감지 할 수 없으므로 하나씩 확인해야합니다. 컬러 센서가 감지해야하는 색상은 두 개의 핀 S2와 S3에 의해 선택됩니다. 이 두 개의 핀을 사용하여 측정 할 색상 광도를 센서에 알릴 수 있습니다.
빨간색 강도를 감지해야하는 경우 두 핀을 모두 LOW로 설정해야합니다. RED 라이트를 측정 한 후 S2 LOW 및 S3 HIGH를 설정하여 블루 라이트를 측정합니다. S2 및 S3의 논리를 순차적으로 변경하여 아래 표에 따라 빨간색, 파란색 및 녹색 조명 강도를 측정 할 수 있습니다.
S2 |
S3 |
포토 다이오드 유형 |
낮은 |
낮은 |
빨간 |
낮은 |
높은 |
푸른 |
높은 |
낮은 |
필터 없음 (흰색) |
높은 |
높은 |
초록 |
센서가 RGB 구성 요소의 강도를 감지하면 값이 아래 그림과 같이 모듈 내부의 제어 시스템으로 전송됩니다. 어레이에 의해 측정 된 광도는 모듈 내부의 전류-주파수 변환기로 전송됩니다. 주파수 변환기는 주파수가 어레이에서 보낸 값에 정비례하는 구형파를 생성합니다. ARRAY의 값이 높을수록 전류-주파수 변환기는 더 높은 주파수의 구형파를 생성합니다.
컬러 센서 모듈의 출력 신호 주파수는 4 단계로 조정할 수 있습니다. 이러한 레벨은 아래 그림과 같이 센서 모듈의 S0 및 S1을 사용하여 선택됩니다.
S0 |
S1 |
출력 주파수 스케일링 (f0) |
엘 |
엘 |
전력 다운 |
엘 |
H |
2 % |
H |
엘 |
20 % |
H |
H |
100 % |
이 기능은 낮은 클럭으로이 모듈을 시스템에 연결할 때 유용합니다. Raspberry Pi에서는 100 %를 선택합니다. 그늘 아래에서 컬러 센서 모듈은 각 컬러에 대해 최대 주파수가 2500Hz (100 % 스케일링) 인 구형파 출력을 생성합니다.
모듈은 주파수가 표면에 떨어지는 빛의 강도에 정비례하는 출력 구형파를 제공하지만,이 모듈로 각 색상의 빛 강도를 계산하는 쉬운 방법은 없습니다. 그러나 각 색상에 대해 빛의 강도가 증가하는지 감소하는지 여부를 알 수 있습니다. 또한 Red, Green, Blue 값을 계산하고 비교하여 모듈 표면에 미리 설정된 빛의 색상이나 물체의 색상을 감지 할 수 있습니다. 따라서 이것은 Light Intensity Sensor 모듈이 아닌 Color Sensor 모듈에 가깝습니다.
이제이 구형파 출력을 Raspberry Pi에 공급할 것이지만 Raspberry Pi에는 내부 카운터가 없기 때문에 PI에 직접 제공 할 수 없습니다. 따라서 먼저이 출력을 CD4040 Binary Counter에 제공 하고 100msec의 주기적으로 카운터에서 주파수 값을 가져 오도록 Raspberry Pi를 프로그래밍합니다.
따라서 PI는 각 RED, GREEN 및 BLUE 색상에 대해 최대 2500/10 = 250 값을 읽습니다. 또한 아래와 같이 화면에 빛의 강도를 나타내는 이러한 값을 인쇄하도록 Raspberry Pi를 프로그래밍했습니다. 기본값에서 값을 빼서 0에 도달합니다. 색상을 결정할 때 유용합니다.
여기서 기본값은 센서 앞에 물체를 놓지 않고 찍은 RGB 값입니다. 주변 조명 조건에 따라 다르며이 값은 주변 환경에 따라 다를 수 있습니다. 기본적으로 표준 판독을 위해 센서 를 보정하고 있습니다. 따라서 먼저 물체를 배치하지 않고 프로그램을 실행하고 판독 값을 기록하십시오. 이 값은 센서를 어디에 두든 항상 약간의 빛이 센서에 떨어지기 때문에 0에 가깝지 않습니다. 그런 다음 테스트 할 개체를 배치 한 후 얻을 판독 값으로 해당 판독 값을 뺍니다. 이렇게하면 표준 판독 값을 얻을 수 있습니다.
Raspberry Pi는 R, G 및 B 값을 비교하여 센서 근처에있는 물체의 색상을 결정하도록 프로그래밍되어 있습니다. 이 결과는 Raspberry Pi에 연결된 빛나는 RGB LED로 표시됩니다.
간단히 말해서
1. 모듈은 표면 근처에 놓인 물체에서 반사 된 빛을 감지합니다.
2. 컬러 센서 모듈은 핀 S2 및 S3을 통해 Raspberry Pi가 순차적으로 선택한 R 또는 G 또는 B에 대한 출력 웨이브를 제공합니다.
3. CD4040 카운터는 파동을 받아 주파수 값을 측정합니다.
4. PI는 100ms마다 각 색상의 카운터에서 주파수 값을 가져옵니다. 값을 취한 후 PI가 카운터를 재설정하여 다음 값을 감지합니다.
5. Raspberry Pi는이 값을 화면에 인쇄하고이 값을 비교하여 개체 색상을 감지하고 마지막으로 개체 색상에 따라 적절한 색상으로 RGB LED를 비 춥니 다.
우리는 파이썬 코드에서 위의 순서를 따랐습니다. 전체 프로그램은 아래에 데모 비디오와 함께 제공됩니다.
여기에서 Raspberry Pi는 세 가지 색상 만 감지하도록 프로그래밍되어 있으며, 이에 따라 R, G 및 B 값을 일치시켜 원하는 색상을 더 많이 감지 할 수 있습니다.