【Arduino】 カラーセンサーモジュール

LESSON 044

      カラーセンサーモジュールで色を感知する

 
○ 今回はカラーセンサーモジュールについてを説明します。
   
○ CRGBカラーセンサの原理は色を調べたい部質を近づけると白LEDから発光した光が、物質に反射しIRカットフィルターを通ってカラーセンサーが光を感知しCRGBのデータを出力します。
  IRカットフィルタは、人間の目に極力近いRGBカラー値を取得できます。
   
 ・ クリアー(C)、赤(R)、緑(G)、青(B)のCRGB値を得られます。
   
 ・ 物質とセンサーの角度は垂直であれば、より正確な値が得られます。
 
○ カラーセンサー(TCS34725)の特長は

   ・電源電圧:3.3V~5V
   ・ダイナミックレンジ:1~ 3,800,000
   ・ロジックレベル:TTL(3.3V~5V)
   ・通信形式:I2C(プルアップ抵抗実装済み)
   ・通信速度:MAX 400KHz
   ・アドレス:0x29(固定)
  になります。

              

 
目 次

    • 構成部品
    • 配線図
    • スケッチ
    • 結果
    • まとめ
       
構成部品

Arduino​
USBケーブル​
カラーセンサーモジュール(TCS34725)
ジャンパー線 

      
配線図  

      5V           ⇒  VIN
  GND         ⇒   GND
    GPIO A4 ⇒ SDA
    GPIO A5 ⇒ SDL

         ※ I2Cピンは  I2C(SCL)、I2C(SDA)と
           アナログ入力の4(SDA)、5(SDL
            が利用可能です。

                      
   

スケッチ《 test036》  

   
#include <Wire.h>
#include <Adafruit_TCS34725.h>
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_614MS, TCS34725_GAIN_1X);
uint16_t r, g, b, c;
void setup(void) {
  Serial.begin(9600);
  tcs.begin();
}
void loop(void) {
  tcs.getRawData(&r, &g, &b, &c);
  Serial.print("R: "); Serial.print(r, DEC); Serial.print(" ");
  Serial.print("G: "); Serial.print(g, DEC); Serial.print(" ");
  Serial.print("B: "); Serial.print(b, DEC); Serial.print(" ");
  Serial.print("C: "); Serial.print(c, DEC); Serial.print(" ");
  Serial.println(" ");
}

      


解説

#include <Wire.h>
  I2C/TWI デバイスとの通信を可能にするライブラリです。
   
#include <Adafruit_TCS34725.h>
 TCS34725のカラーセンサーをコントロールするライブラリです。
         
Adafruit_TCS3472 変数 =Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_614MS, TCS34725_GAIN_1X)
 TCS34725_INTEGRATIONTIME_614MS
    センサーからのカラーサンプルの積分時間を614msに設定
 TCS34725_GAIN_1X
    センサーの感度を制御するためにADCのゲインをゲイン無に設定
 
uint16_t  変数
;
 変数を
符号なし16bit整数型に設定
  

  • void setup()
    tcs.begin();

     TCS34725ライブラリを初期化し、I2Cバスにマスタかスレーブとして接続します。
  • void loop() 内
    tcs.getRawData(&r, &g, &b, &c);
     
    TCS34725からデータを取得
       &r 赤の値
       &g 緑の値
       &b 青の値
       &c クリアーの値

結果 

モニター上に下図を置きカラーセンサーでそれぞれの値を測定した。
カラーセンサーはモニターにくっつけた状態で測定

  

測定結果は



多少のバラツキはありましたが、色を判断出来ると思われます。

     

     

まとめ

○ CRGB値のデータは生値のため、大きくても±10程度のバラツキがあり、100で割った方がデータは扱いやすいと思われます。
 
○ このカラーセンサーで測定する時は、測定物の距離は2cm以下出来れば0cmに近い方がより精度の高い値が得られます。
            
○ Arduino を 学ぶ上で書籍やWebpageを参考に作っていますが、私なりに噛み砕いて書いているつもりですが、判らない点がありましたら連絡下さい。

目次