
視覚障害者に色を知りたいというニーズがあるとのことで、色センサーを作りはじめました。
ところが、これが一筋縄ではいかないのですねぇ。
まず部品構成は
センサーは通販で892円(高いねぇ。。。でも入手できなければ何もできないのでいやいや通販、後で千石でも売っていることが判ってがっかり)のTexasAdvancedOptoelectronicSolutions社のTCS230Dという三色の半導体マルチカラーセンサーです。これはRGBの色フィルタを通った光の強度に応じて、矩形波出力の周波数が変化するというセンサー。フルスケールの設定ピンにより最大周波数600kHzあるいは12kHzと設定します。PICを内部クロック4MHzで動かしたいので、12kHzの設定にしました。
PICは今回はアナログ入力がないので 12F629で考えました。(後で16F648Aに変更します。写真は16F648Aです。)IOはセンサーの色指定に2bit、センサーからの入力に1bit、スイッチに1bit、USBコントローラ接続に2bit 計6bitでなんとぴったりでした。
対象物を照らすのに白色LED。
色の強度(明るさ)を人に知らせるのに音声が必要ですが、スタンドアローンの音声ICを使うか、データをPCに送って、PCのスクリーンリーダに発声させるか、考えどころです。使い勝手は前者がいいですが、まだどんなデータになるか判りませんので、予備実験ということで今回は後者としました。いずれ次のステップで前者を検討することにします。PCでデータの確認ができるのは、デバッグが非常に楽になるというメリットもあります。
PCとの接続はUSB経由で、USBコントローラはFTDI社のFT232BMです。仮想COMポートドライバーによるシリアル転送となります。
電源はUSB接続なのでUSBバスから+5Vを供給してもらう、バスパワーです。
ソフトは
PICのソフトは、色指定をし、安定時間をとってから、RB0(センサー出力)割込みが入ったときのTM1の値を取り込んで周期(=周波数)を計ることでその色の強度データとする。USBドライバーに強度データを送る。以上をRGB3色と白色についてくりかえす処理です。どの部分でどの程度の平均化処理をするかはデータをとってみてから考えるつもりです。
PC側のソフトはシリアル転送のソフトが必要です。Windowsではアクセサリにハイパーターミナルがあるので、これを使おうとしました。が転送データの履歴が転送のはじめの部分から残っているのかなぁ、スクリーンリーダで読ませると起動したあとの通信の最初から読み始めてしまうのです。
結局、転送データをクリップボードに転送するソフトを作る羽目になりました。
FT232BMはユニバーサル基板では実装できないので、この試作基板では、USB基板は梅コース?で購入しました。本番では感光基板をつかって専用基板を起こすつもりです。
さて結果は?
色センサーは作っている人がいました。センサーは違うが参考にさせて頂きました。ありがとうございます。
http://www.lentek.co.jp/pic/color.htm