【 Arduino 】Color Sensor
Arduino を使った、色検出ロボットの実験です。
ロボカップジュニア・レスキュー競技等において、ライントレース・コースの交差点に進行方向指示のための緑マーカーが貼られています。
この緑色マーカーを検出するためのカラーセンサーを選定しArduinoに取り込む実験を行います。
センサはカラーセンサなので、基本的には何色でもスケッチにて検出色を指定することが可能です。センサには浜松フォトにクス製「S11059-02DT」を使用します。
前回は、1個のカラーセンサを使用した実験でした。実際はラインをトレースしながら緑マーカーを検出する必要があるので最低 2 個のカラーセンサが必要となります。
そこで、まずは2個のセンサを使う実験をしてみましょう。基本的には前回の延長です。
回路の検討
今回、回路を検討するにあたり「センサ」と「CPU系」の電圧レベルが合わないという事が多くあり回路上で工夫をする必要がでるので思い切ってレベル変換を基板化
されているものを使いこの問題を解決するとともに、この様なデバイスの使用感を体験をしてみます。
レベル変換基板(TI社製:PCA9306使用)AE-PCA9306 を使用します。<詳細仕様>
・広い対応電源範囲1.8〜5.5V
・I2Cバス専用レベル変換ICPCA9306を使用
・プルアップ抵抗付き(1kΩx4個)
・ジャンパ切断により外部プルアップに対応可能
・DIP−8ピンICと形状互換により付属ピン実装で8ピンICソケットに装着可能
・電源ラインにパスコン実装済み
カラーセンサと上記基板との接続は下記の通りです。
配線が完了した基板です。
Arduino基板には、拡張シールドを使い接続します。

Arduino基板上に拡張シールドを載せます。
拡張シールド上のパターンには、VCC(5V)、GNDが配線されているので
比較的簡単に配線ができます。

拡張シールド基板上に、センサ基板からの配線を行います。
センサ基板上のTOP面上側レベル変換基板SCL2 ー> Arduino(A2)へ
SDA2 ー> Arduino(A3)へ
センサ基板上のTOP面下側レベル変換基板SCL2 ー> Arduino(A4)へ
SDA2 ー> Arduino(A5)へ
その他 電源3.3V、5V、GND を配線します。
動作結果
早速、下記スケッチで動作テストをしてみます。 まずはArduinoIDEの設定を行います。
マイコンボードの設定は「Arduino/Genuino UNO」を選択します。 次にシリアルポートの設定では ArduinoボードをUSBに接続してデバイスマネージャーで表示される
ポート(COM と LPT)に表示されている「USB-SERIAL CH340(COM3)」の COM ナンバーを設定します。

上下記画像は拡大可能です。
設定完了すれば、スケッチの読み込みを行い「検証」ボタンを選択します。 スケッチをコンパイル開始、スケッチにミスがあればエラー表示されます。
「検証」ボタンを押しコンパイルを行った結果が下記です。

あれ!! エラーがでました。
ArduinoIDEの下段にある黒い部分の内容を見てみましょう。
下段がエラーメッセージの内容です。
Arduino:1.6.9 Hourly Build 2016/03/24 06:33 (Windows 10), マイコンボード:"Arduino/Genuino
Uno"
C:\WorkSpace\Arduino\ColorSenser\tstussz8\tstussz8.ino:33:22: fatal
error: MsTimer2.h: No such file or directory
#include <MsTimer2.h>
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Uno.
どうやら<MsTimer2.h>が見つからない様です。 ArduinoIDE を インストール直後には「lbraaries」に「MsTimer2.h」が無いためです。
早速、ネットから「MsTimer2.h」を検索して、ダウンロードしましょう。ダウンロードした物を Arduino 内にある「libraries」内に保存します。再度「検証」をします。
画像拡大可能 「検証」結果が下記です。 どうやら成功です。

続いて、カラーセンサーからのデータをグラフィック表示させるために「Processing」 を使います。 スケッチ(後記)を読み込み「Run」させます。
エラーが出ました。 エラー内容は ArduinoIDE 同様、下部の黒い部分に表示されます。
スケッチ