はじめに
GR-LYCHEE デザインコンテストで提供してもらった、ロームさんの各センサがロボットで使用できるかバラックで確認してみました。
1. ROHMカラーセンサモジュール(BH1749NUC-EVK-001)を評価してみる。
接続
このセンサはGR-LYCHEEとは、I2Cで接続するのだが、そもそもGR-LYCHEEのI2CがGR for IDEの場合どこになるのか、はっきりしないが、どうやら通常のA4,A5ではないらしい。
GR-LYCHEEでは、I2Cは、D14:SDA、D15:SCL らしいので、とあえずクリップでセンサと接続して確認する。
GR-LYCHEE側は左から SCL、SDA、3.3V 、GNDの順になる。
センサ側は、VDD、GND、SDA、SCLの順に接続する。
ソフトウェアはマニュアルに記載されているURLからダウンロードできますと言いたい所ですが、BH1749NUCのものは発見できず、BH1747NUCのものを使用しました。
URL:https://www.rohm.co.jp/sensor-shield-support/color-sensor
ダウンロードした、BH1747NUC.ZIP ライブラリを
スケッチ->ライブラリをインクルード->.ZIP形式のライブラリ―をインストール
からArduino IDEにインストールします。
コンパイル
インストールが上手く行くと、スケッチ例に追加されている、
BH1747NUC->example->BH1747NUC
からBH1747NUC.ino を呼び出します。
ただし、BH1747NUC.ino はそのままではコンパイラでエラーになります。
'byte' does not name a type となっており、普通のC/C++だったら、 #include <sys/types.h> とするところ Arduino IDEだったら 以下のように一行追加する必要があるようです。
#include <Arduino.h> // added
昔はデフォルトでインクルードされていたようです。このROHMのサンプルは古いのかな?
コンパイルは成功したが、ワーニングが多数残っているがとりあえずの無視して、 実行させた結果がこれ。9600bpsのシリアルモニタにセンサが読み取ったカラー情報を出力して来ます。
RED/GREEN/BLUE/IRはそれぞれ赤/緑/青/赤外で良いとして、CLEARとGREEN2 が何かと言うと、スペックシートにも記載が無い。ソースコードを読んでも、ただレジスタから読み込んでいるだけだった。
正確に色を判断するには、各カラー値を特性表から演算する必要がありそうです。
以下はBH1749NUCのマニュアル(bh1749nuc-j.pdf)から転記しました。
上の実行結果は、白い紙を見せた場合なので、なんとなく、緑(GREEN)を半分にすれば、読み取った色を表しているのでしょうか。
まとめ
このセンサで床の色やロボットの前の人の色を検出しようとしたのですが、ちょっと難しいようです。また、スペックシートに誤記や漏れがあるものは、今回のコンテストのような短期間での開発では使いずらいです。
色はGR-LYCHEEのカメラでなんとかするかな。
でも (CLEAR)と(GREEN2)が気になるな~。誰か知っていたらこっそり教えて下さい。
購入品情報
このセンサーモジュールは、Amazonでは買えないみたいです。
センサ単価は安いのですが、モジュールはDigikeyとかでは、4000円もするようです。
購入品情報
ROHMさんのセンサーはAmazonでは購入できません。
変わりになりそうなものは、これくらいです。
(中野島ロボットでも入手済みですが、ROHMさんのセンサーを頂いたので、こっちはまだ評価はしていません。)