본문 바로가기

포트폴리오

아두이노 TCS 34725 센서로 RGB 값 감지하기(쉬움)

구글에서 수정 후 재사용 가능한 이미지를 퍼왔습니다.

TCS 34725 센서는 아두이노 컬러 센서입니다. (Adafruit TCS34725)

동작전압: 3.3v ~ 5v

통신방식: i²c address 0x29

이 센서는 RGB 색상의 정보를 얻어낼 수 있습니다.

https://learn.adafruit.com/adafruit-color-sensors/overview

 

Adafruit Color Sensors

Your electronics can now see in dazzling color with this lovely color light sensor. We found the best color sensor on the market, the TCS34725, which has RGB and Clear light sensing elements. An IR blocking filter, integrated on-chip and localized to the c

learn.adafruit.com


주의할점!

1. 어두운 곳에서 측정하는 것을 권장

2. 절대 강한 빛을 쬐어주지 말것! (ex. 스마트폰 플래쉬 라이트)

3. 부품이 납땜되어 있는것도 있고 본인이 납땜해야 할 수도 있다. (제일 중요)


TMI: 스마트폰 플래쉬 라이트는 몇 루멘일까?

보통 50~100 루멘 사이이고 물론 150을 넘을 수도 있다.

우리가 쓰는 이 TCS34725는 조도 감지(cds cell)센서가 아니므로 적어도 50루멘이 넘어가는 빛을 쬐어준다면 센서가 뻣거나

사망에 이른다.

직접 해보았더니 센서가 죽진 않았지만 3분간 뻣었다.

https://www.icbanq.com/P006971592

 

한진데이타 0~20만 루멘 I2C지원 조도센서모듈(P5144) - 전자부품쇼핑몰 아이씨뱅큐

전자부품쇼핑몰 아이씨뱅큐에서 판매하는 0~20만 루멘 I2C지원 조도센서모듈(P5144)으로 0~200,000 lm(루멘)의 빛의 세기를 측정하는 모듈입니다.입니다. 38000원!!

www.icbanq.com

이렇게 0~20만 루멘까지 측정 가능한 조도센서 모듈도 따로 파니까 이런 부품에는 스마트폰 플래쉬를 비추어도 상관 없다.


어쨋든 컬러 센서를 동작시켜보자.

코드는 요짝으로 코딩하자 (컬러센서 관련 라이브러리 활용하자)

#include <Wire.h>
#include "Adafruit_TCS34725.h"
 
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);   // Adafruit_TCS34725라이브러리 사용을 위한 객체 생성
 
void setup() {
  Serial.begin(9600); // 시리얼 통신 시작, 속도는 9600
 
  if (tcs.begin()) {    // tcs34725센서가 연결되어 인식했을 경우
    Serial.println("Found sensor");
  } else {              // tcs34725센서가 연경되지 않아 인식하지 못했을 경우
    Serial.println("No TCS34725 found ... check your connections");
    while (1);          // 중단
  }
}
 
void loop() {
  uint16_t clear, red, green, blue;   // unit16_t = unsigned short int 타입
 
  //tcs.setInterrupt(false);      // led 켜기 turn on LED
 
  delay(60);
 
  tcs.getRawData(&red, &green, &blue, &clear);    // 색상 감지 센서에서 데이터 값 받아오기
 
  //tcs.setInterrupt(true);  // turn off LED
 
  int r = map(red, 0, 21504, 0, 1025);            // 색상 감지 센서에서 받아온 빨간색 데이터값을 3색led에서 사용할수 있도록 수치 변경 
  int g = map(green, 0, 21504, 0, 1025);          // 녹색
  int b = map(blue, 0, 21504, 0, 1025);           // 파란색

  Serial.print("\tR:\t"); Serial.print(r);      // 시리얼 모니터에 3색 led에 출력중인 붉은색 값 출력
  Serial.print("\tG:\t"); Serial.print(g);      // 녹색 값 출력
  Serial.print("\tB:\t"); Serial.println(b);    // 파란색 값 출력
}

코딩 결과 (실행시키면)

아무것도 감지 안했을때 모습

저 빛나는 부분에 색있는 물체를 대면 된다.


초록색을 비추면?

초록색을 비추면 당연히 G의 값이 많이 올라간 것을 볼 수 있다. 당연히 저 초록색은 RGB의 퓨어한 초록색이 아니다.


파란색을 비추면?

역시 RGB중 B의 값이 올라간다.


빨간색을 비추면?

RGB중 R의 값이 올라가는 것을 확인할 수 있다.


지금까지 RGB 컬러센서 활용(?)법이었다.

정말 간단하고 쉬운 센서 활용이니까 부품만 사면 누구나 할 수 있을 정도다.