概要

物体の光の反射率を測定するフォトリフレクタは、発光素子と受光素子が配置されていて光を物体に反射させてその強度を測定することで、物体の存在確認や白黒パターンの検出などをすることができます。

光を検出できるセンサーは色々な種類がありますが、例えば商品パッケージの色を判別したい時など、光の輝度だけではなく色も判別したい場合は、3色に分解して輝度を計測できるカラーセンサーを用いることをおすすめします。

Arduinoでカラーセンサーを使用

 

本記事では、スイッチサイエンス社のBH1745NUC搭載のカラーセンサーを使用してみました。Arduinoで動作させるために必要なライブラリやサンプルコードが提供されており、一瞬で動作確認まで行うことができたのでとてもおすすめです。

基盤のColor Sensorと記載されている部分が実際のセンサー部分となります。

カラーセンサー

Arduinoとの配線

配線は非常に容易で、SCL / SDA / 3.3V / GNDをそれぞれArduino、カラーセンサーに接続するだけで大丈夫です。

Arduino接続

ライブラリのダウンロード

Arduinoでセンサー情報を読み取るためにスイッチサイエンス社が提供している下記ライブラリを使用しましょう。

Arduino IDEの「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」を選択後、ダウンロードしたzipファイルを選んでインストールをしましょう。

サンプルコードの実行

続いてArduinoのコードを書いていきますが、サンプルコードが用意されているので、これを用いましょう。

 

#include 
#include 

/* #define BH1745NUC_DEVICE_ADDRESS_38            (0x38)    // 7bit Addrss */
/* #define BH1745NUC_DEVICE_ADDRESS_39            (0x39)    // 7bit Addrss */

BH1745NUC bh1745nuc(BH1745NUC_DEVICE_ADDRESS_39);

void setup() {
  byte rc;

  Serial.begin(115200);		/*  Modify : set the serial speed to 11500 kbps  */
  while (!Serial);
  
  Wire.begin();
  
  rc = bh1745nuc.init();
}

void loop() {
  byte rc;
  unsigned short rgbc[4];
  
  rc = bh1745nuc.get_val(rgbc);
  if (rc == 0) {
    Serial.write("BH1745NUC (RED)   = ");
    Serial.println(rgbc[0]);
    Serial.write("BH1745NUC (GREEN) = ");
    Serial.println(rgbc[1]);
    Serial.write("BH1745NUC (BLUE)  = ");
    Serial.println(rgbc[2]);
    Serial.write("BH1745NUC (CLEAR) = ");
    Serial.println(rgbc[3]);    
    Serial.println();
  }
 
  delay(500);

}
 

 

0.5秒おきにRGBごとの計測された輝度値が表示されるようになっています。それぞれ、最大65,536の数値が返却されるようになっています。 

シリアルモニタ

チップとしてはROAM社のBH1745NUCというチップを使っており、データシートは下記になります。

データシートによると、RGBそれぞれの敏感度が異なっていて、緑→赤→青→透明という順に敏感度が高い(数字が大きくなりやすい)ので、これを考慮した上で、閾値などを設定していくと良いでしょう。

色敏感度

ArduinoI2cセンサー

Related Posts

ロボットに非常停止スイッチを取り付ける
ロボットに非常停止スイッチを取り付ける
概要 ロボットが予期せぬ動作をし、危害を及ぼしそうになった場合に緊急停止をするスイッチをつけておくことは重要です。 その際、非常停止スイッチは必ず回路的に遮断する設計にする必要があるため、電源との間に非常停止スイッチを挟んでおいて、ス...
Read More
ブレッドボードでジャンパ線が外れる時は端子台がおすすめ
ブレッドボードでジャンパ線が外れる時は端子台がおすすめ
ブレッドボードでジャンパ線が外れる ブレッドボードは気軽に配線を組むことができるのでとても便利ですが、引っかかってしまったり穴がゆるくなったりすると、ジャンパ線が抜けてしまうことも良くあると思います。 とはいえ、プロトタイピングの途中...
Read More
ROSパッケージ紹介 | laserscan_multi_mergerで複数のスキャントピックを1つにマージする
ROSパッケージ紹介 | laserscan_multi_mergerで複数のスキャントピックを1つにマージする
概要 laserscan_multi_mergerは、ira_laser_toolsというパッケージに含まれる、複数のスキャントピックをマージしてくれるノードです。 複数のスキャントピックがある際に1つのスキャントピックに合わせてく...
Read More

サイトについて

RoboStationは誰でも手軽にロボットを製作できるようにすることを目的としたEC・ハウツーサイトです。