工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino NanoとTCS3200センサーによる物体の色検出

必要な部品と用品

Arduino Nano R3 ×1
TCS3200 カラーセンサーモジュール ×1
I2C接続 16x2 LCDディスプレイ(青バックライト) ×1
ブレッドボード ×1

使用するアプリとオンラインサービス

プロジェクト概要

このチュートリアルでは、ArduinoとTCS3200センサーを使用して色を読み取る方法を解説します。物体の色を検出し、その結果をLCDに表示します。このプロジェクトは、物体の色に基づいて適切なアクションを選択するロボットアームの構成要素として位置づけられます。

Arduino NanoとTCS3200センサーによる物体の色検出
主要コンポーネントのブロック図

Step 1: 部品表 (BoM)

以下の価格とリンクは参考用です。

Step 2: TCS3200カラーセンサーの仕組み

Arduino NanoとTCS3200センサーによる物体の色検出
TCS3200カラーセンサーモジュール

データシートによると、TCS3200は設定可能なシリコンフォトダイオードと電流-周波数変換器を単一のモノリシックCMOS集積回路上に組み合わせた、プログラマブルなカラー光-周波数コンバーターです。

出力は50%デューティサイクルの方形波で、周波数が光強度(照度)に直接比例します。フルスケール出力周波数は、2つの制御入力ピン(S0、S1)を介して3つのプリセット値のいずれかにスケーリング可能です。デジタル入出力により、マイクロコントローラやその他のロジック回路との直接インターフェースが可能です。

Arduino NanoとTCS3200センサーによる物体の色検出
TCS3200内部構成:8×8フォトダイオードアレイ

TCS3200では、光-周波数コンバーターが8×8のフォトダイオードアレイを読み取ります:

ピンS2とS3で、どのグループのフォトダイオード(赤、緑、青、クリア)をアクティブにするかを選択します。フォトダイオードのサイズは110μm×110μm、中心間隔は134μmです。

OE(出力イネーブル)ピンはGND(LOW)に接続しておく必要があります。センサーは2.7〜5.5V DCで動作し、ここではArduinoの5V出力を使用します。横方向からの光を遮断するため、センサーの周囲に小さなゴムリングを取り付け、ホットグルーで固定すると精度が向上します。

Arduino NanoとTCS3200センサーによる物体の色検出
遮光リングを装着したセンサー

Step 3: ハードウェア接続

Arduino NanoとTCS3200センサーによる物体の色検出
配線図

TCS3200センサーの接続

I2C LCD(16x2)の接続

Arduino Nanoをブレッドボードに取り付け、5V出力とGNDを両方の電源レールに接続します。

Step 4: Arduinoコード

Arduino NanoとTCS3200センサーによる物体の色検出
メインコードの構造

周波数スケーリングの設定

S0とS1ピンで出力周波数のスケーリングを設定します。ここでは両方をHIGH(100%)に設定:

digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);

色成分の読み取り

S2とS3の組み合わせで読み取る色成分を切り替えます:

// 赤成分
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
red = pulseIn(outPin, LOW);

// 緑成分
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
grn = pulseIn(outPin, LOW);

// 青成分
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
blu = pulseIn(outPin, LOW);

実際のコードでは、各RGB成分を複数回読み取って平均化し、ノイズの影響を軽減します。

色の判定(キャリブレーション)

既知の色のテスト用紙や物体を使って、各色のRGB値の範囲を事前に調べます。以下は一例です(環境光によって値は変化します):

void getColor() {
  readRGB();
  if (red > 8 && red < 18 && grn > 9 && grn < 19 && blu > 8 && blu < 16)
    color = "WHITE";
  else if (red > 80 && red < 125 && grn > 90 && grn < 125 && blu > 80 && blu < 125)
    color = "BLACK";
  else if (red > 12 && red < 30 && grn > 40 && grn < 70 && blu > 33 && blu < 70)
    color = "RED";
  else if (red > 50 && red < 95 && grn > 35 && grn < 70 && blu > 45 && blu < 85)
    color = "GREEN";
  else if (red > 10 && red < 20 && grn > 10 && grn < 25 && blu > 20 && blu < 38)
    color = "YELLOW";
  else if (red > 65 && red < 125 && grn > 65 && grn < 115 && blu > 32 && blu < 65)
    color = "BLUE";
  else
    color = "NO_COLOR";
}

ここでは白、黒、赤、緑、黄、青の6色を定義しています。環境光が暗くなると、パラメータの値は大きくなる傾向があります。loop()内では、1秒ごとにLCDへ判定結果を表示します。完全なコードはGitHubで公開されています。

Step 5: まとめ

Arduino NanoとTCS3200センサーによる物体の色検出
完成したカラー検出デバイス

このプロジェクトが、電子工作、ロボティクス、IoTのエキサイティングな世界への一助となれば幸いです!

南の世界からサルードス!
次回のチュートリアルでお会いしましょう。
Thank you,
Marcelo

製造プロセス

  1. Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
  2. Arduino UNOとOLEDディスプレイでクラシックPongゲームを自作:ステップバイステップチュートリアル
  3. Arduinoオーディオ周波数検出器 – 高感度サウンドモジュールで最大音量ピークの周波数を測定
  4. Arduinoで作る自作デジタルペット「Tamaguino」─ 3Dプリンター製ケース付き完全ガイド
  5. スマートワイヤレス照明スイッチコントローラー:Arduinoで物理スイッチを遠隔操作
  6. Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
  7. Arduino Nanoで作るスマートな動体検知水鉄砲
  8. SparkFun 7セグメントディスプレイで作る信頼性の高いArduinoカウントダウンタイマー
  9. Arduino RGB LEDカラーミキサー:初心者向けDIYプロジェクト
  10. Arduino向日葵:太陽を追尾する電子ヒマワリの製作
  11. Arduinoで自作RCポルシェカー:ステップバイステップガイド