2017年12月22日金曜日

色を認識するライト

色を認識するライトを作ってみました。

数年前、テレビで紹介された「smart light」
下の色に合わせて、ライトの色が変化し、
ビックリした記憶があります。
買いたかったけど、かなり高価で諦めました(笑)

最近、Arduinoを始めたところ、
カラーセンサーを使用すれば、
そのようなものを作れることがわかり、
早速 挑戦してみました。

使用したものは
カラーセンサーTCS230 TCS3200
フルカラーLED 7個
Arduino pro mini(互換品 3.3V 8M㎐)

装置全体は、ダイソーの2WAY懐中電灯に
おさめることにしました。

仕組みはカラーセンサーで色の周波数を読み取り
マイコン(Arduino)内に組んだ条件式に従って、
準備した13色の中から 近い色を選び出し、
フルカラーLEDをその色で点灯させるといった感じです。

基板に7個のフルカラーLEDを
並列に取り付けました。

①を2WAY懐中電灯のテープLEDがついてたところに
ネジ留めしています。

カラーセンサーをミニブレッドボードに差し込んで
2WAY懐中電灯の下の方にネジ留めしました。

Arduinoにプログラムを書き込んでから
配線をしたところです。

赤、緑、青色のLEDにはそれぞれ抵抗を入れました。
(赤 300Ω、緑 2000Ω、青 100Ω)
緑はかなり明るく見えたので、抵抗値を高くしましたが、
ちょっと高すぎたかも?(^^;
各色の調整はプログラムの中でも行っています。

カラーセンサーを入れるため、
懐中電灯の下のネジのところを壊したので
外からネジで留めました。
下部は安定して立つように 4隅にビーズの脚を取り付けました。

 ⑥
スイッチや電池ケースも懐中電灯のものを使っています。

こんな感じになりました。

動画で撮影してみました。
桃色と紫色が同じように見えますが、実際は違って見えます。
全体的に実際の色と少し違っています(^^; 
青や水色は光が波打ってるように映っていますが、
実際はそのようには見えないです。

光り物の動画や写真撮影は難しいですね。
最初、作ったそのままで動画撮影すると
どの色も真っ白になってしまいました。
LEDに拡散キャップをかぶせたり、
ライトの上にトレーシングペーパーを巻いて拡散させたりしましたが
どうしてもダメで、結局 プログラムの中で
赤・青・緑の色指定を変更して、
ビデオ撮影しました。
ビデオ撮影した状態では、実際に見た感じでは薄暗くて
いまいちなので、撮影後、元のプログラムに戻しました。


カラーセンサーの使い方はこちらを参考にさせて頂きました。

カラーセンサーから得られるデーターそのものを
LEDを光らせるための数値として使用するのが困難だったので、
得られたデーターの条件を指定して、
LEDの色(13色)に紐付けることにしました。

例えば得られたデーターが
(R,G,B)=(350,1500,1400) なら 赤(0,255,255)に紐付け
(R,G,B)=(950,600,1300) なら 緑(255,0,255) に紐付け
(R,G,B)=(1900,900,500) なら 青(255,255,0) に紐付け
 赤(0,255,255) としていますが フルカラーLEDを使用した時は
本来の赤(255,0,0)の真逆になります。
(得られたデータはスケーリング割合2%時のデータです。)

もし、赤・緑・青の3色のみの認識で良ければ
得られたデーターの最小値の色を選択すればOKですが、
4色以上を認識させるには
もう少し、条件式が必要になってきます。
今回は(R,G,B)の数値範囲の指定や、
比率の指定、R,G,Bの差の範囲 等々で条件設定を行って、
13色を認識できるようにしました。
(赤・青・緑・ピンク・桃色・紫・水色
黄色・クリーム色・オレンジ・黄緑・黒・白)

このセンサーを使用して作られたYoutube動画も色々と見てみましたが
3色~6色くらいの認識が多かったです。
中にはこんな楽しい装置も・・・
https://www.youtube.com/watch?v=H7HTQai7Wwg
こんなの作れるようになりたいなぁ・・・

色々と調べてみると、
販売商品ではありますが、
256×256×256=1677万色を表現できるライトもありました。
https://plusstyle.jp/shopping/item?id=20
これを見ると、私が作ったものなんて
まだまだダメですね・・・
いずれ、こんなのも作れるようになりた~い!!

私の映像では紙と果物で試していますが
光る素材のもの
例えばガラス越し、金属製品、光沢紙等では
色の認識は悪く、思った色に光りませんでした。

今回使用したカラーセンサーは
こちら

フルカラーLEDは
こちら

Arduino Pro mini(互換品 3.3V)は
こちら
です。

<2018年1月2日 自分用の覚書>
2018年1月1日、親族の集まりに持って行ったところ、
途中から光り方がおかしくなってしまいました。
どうも青色LEDが光っていない感じです。
持って帰って、分解してみると
フルカラーLED 7個のうちの1個の
青色チップが壊れていたようです。
壊れた1個のLEDだけじゃなく、他の6個のLEDも光らなくなるのですね・・・
この1個を取り換え、無事に元通りになりました。

<2018年2月12日 テープLEDを使って作ってみました>
DCーDC昇圧コンバーターを使用し
カラーセンサーとArduinoには5V一定の電圧がかかるようにしました。
電池からだと電圧が変動しますが、
電圧変動するとカラーセンサーからの値が変化するようです。





これ以外の実験や工作も掲載していますので、
こちらも見てみて下さい。

6 件のコメント:

  1. Chieさんこんばんは
    また凄い物を作りましたね、素晴らしいです。13色を見分けて再現するとは凄すぎる技術です。
    この技術は少し改造すれば、果物の熟れ具合を検査するとか、産業的に利用できそうですね。
    凄すぎです。キャンディーを色別に選別する機械も良く出来ていますね、見ていて楽しいです。
    私はDCモーターとサーボモーターの制御は何とか出来るようになりましたが、次のステッピングモーターの制御で悪戦苦闘中です。

    返信削除
    返信
    1. 啄童さん
      見て下さって、嬉しいコメントをくださって、ありがとうございます♪
      産業利用にはまだまだ遠い道のりになりそうですが・・・(^^;

      啄童さんのサーボモーターテストの映像、拝見しました。
      90度ずつのいい動きをしていますね。
      私もサーボモーターを購入したので、近いうちに試してみようと思います。
      ステッピングモーターはさらにハードルが高いのですね?
      また色々と教えて下さいね♪

      削除
  2. chieさんお早うございます。
    あなたの頭脳ネットワークは触れたものをすべて取り込み、それをエレメントにしてネットワークを拡大しているように思えます。素晴らしいです。再現性のあるブログ感心しながら拝見しています。

    返信削除
    返信
    1. 渡辺先生
      嬉しいコメント、ありがとうございます。
      でもそんなに素晴らしいものではなく、諦め半分でやってみたところ、うまくいく兆しが見え始め、夢中になって作りました。うまく認識してくれないものも多くありますが、何でも出来上がると嬉しい物ですね~♪
      ところで、ここのところ 青森は大変な暴風雪のようですが、大丈夫ですか・・・?
      ニュース映像を見る度に、心配しています。

      削除
  3. 24日に畑へ行ってきました。途中に車を置き片道2000歩の道のりです。最終雪対策を済ませました。25日から今日まで猛吹雪で24日に行けたのは幸運でした。外は吹雪で本当に寒いです。軽トラックの鍵部分が凍ってしまい、キイをずうっと握っていて溶かしました。
    今は、友達がハーレーダビッドソンのサイドカーのトーインの決め方を教えてということなので、数日前から、無い知恵を絞りだしていたところです。
    智恵さんの嬉しい気持ちよくわかります。本当に。

    返信削除
    返信
    1. 青森はやはり大変なことになっているのですね・・・
      24日は雪の中を2000歩もですか。雪道はかなり歩きにくいでしょうに、
      本当におつかれさまです。
      25日以降はやはり吹雪になっているのですね。
      鍵のところまで凍ってしまうなんて、ビックリです。
      また、バイクにも精通しておられることも知りませんでした。
      ハーレーのサイドカーの件、凄いですね・・・

      削除