このプロジェクトでは、カラーセンサーとArduinoを使用して紙幣を感知することにより、紙幣を数え、その金額を計算できる革新的なarduinoプロジェクトのアイデアに取り組みます。TCS230カラーセンサーは紙幣の検出に使用され、ArduinoUNOはデータの処理と16x2LCDでの残りの残高の表示に使用されます。
必要なコンポーネント:
- Arduino UNO
- TCS230カラーセンサー
- IRセンサー
- ブレッドボード
- 16 * 2英数字LCD
- 接続線
TCS3200カラーセンサーが機能している
TCS3200カラーセンサーは、さまざまな色を感知するために使用されます。以前、TCS3200カラーセンサーをArduinoおよびRaspberry piとインターフェースし、色分け機などのいくつかの便利なプロジェクトも構築しました。
TCS230センサーには、色を検出する対象物を照らすために使用される赤外線LEDが組み込まれています。これにより、周囲の外部光がオブジェクトに影響を与えないことが保証されます。このセンサーは、8 * 8アレイのフォトダイオードを読み取ります。このフォトダイオードは、赤色フィルター付きの16個のフォトダイオード、青色フィルター付きの16個、緑色フィルター付きの16個、フィルターなしの16個のフォトダイオードで構成されます。これら3つのアレイの各センサーアレイは、要件に応じて個別に選択されます。したがって、それはプログラム可能なセンサーとして知られてい ます。モジュールは、特定の色を感知し、他の色を残すように機能させることができます。その選択のためのフィルターが含まれています。 センサーが白色光を検出する「フィルターなしモード」と呼ばれる4番目のモードがあります。
TCS230カラーセンサーの出力信号は、デューティサイクルが50%の方形波であり、その周波数は選択したフィルターの光強度に比例します。
TCS3200カラーセンサーのピン配列:
VDD-センサーの電圧供給ピン。5VDCが供給されます。
GND-カラーセンサーのグランド基準ピン
S0、S1-出力周波数スケーリング選択入力
S2、S3-フォトダイオードタイプ選択入力
OUT-カラーセンサーの出力ピン
OE-出力周波数のイネーブルピン
このプロジェクトではIRセンサーも使用しました。その動作は次のリンクで理解できます。
回路図
以下は、Arduinoマネーカウンターの回路図です。
ここでは、段ボールを使ったPOS通貨スワイプマシンのような小さな構造を作りました。この構造では、下の画像に示すように、カラーセンサーとIRセンサーが段ボールで固定されています。
ここでは、IRセンサーを使用してスロット内の通貨の存在を検知し、メモがある場合、カラーセンサーはメモの色を検出し、色の値をArduinoに送信します。そしてArduinoはさらにノートの色に基づいて通貨価値を計算します。
コードの説明
完全なコードとデモビデオは、記事の最後にあります。ここでは、完全なコードの段階的な説明を以下に示します。
まず、プログラムにすべてのライブラリを含めます。ここでは、LCDライブラリをプログラムに含めるだけで済みます。次に、コードで使用されるすべての変数を宣言します。
#include
セットアップ() 内で、ウェルカムメッセージをLCDに印刷し、このプロジェクトで使用されるデジタルピンのすべてのデータ方向を定義します。次に、カラーセンサーの出力周波数スケーリングを設定します。私の場合は20%に設定します。これは、HIGHパルスをS0に、LOWパルスをS1に与えることで設定できます。
void setup(){Serial.begin(9600); lcd.begin(16、2); lcd.setCursor(0、0); lcd.print( "スマートウォレット"); lcd.setCursor(0、1); lcd.print( "サーキットダイジェスト"); delay(2000); lcd.clear(); pinMode(2、OUTPUT); // S0 pinMode(3、OUTPUT); // S1 pinMode(11、OUTPUT); // S2 pinMode(12、OUTPUT); // S3 pinMode(13、INPUT); // OUT digitalWrite(2、HIGH); digitalWrite(3、LOW); }
無限 ループ() 内で、センサーからのすべてのデータ出力を読み取ります。IRセンサーからの出力は、A0ピンを読み取ることで確認でき、出力の色周波数は、赤()、青()、および緑()で記述された個々の関数を呼び出すことで確認できます。次に、それらすべてをシリアルモニターに印刷します。これは、プロジェクトに新しい通貨を追加する必要がある場合に必要です。
intセンサー= digitalRead(A0); int red1 = red(); int blue1 = blue(); int green1 = green(); Serial.println(red1); Serial.println(blue1); Serial.println(green1); Serial.println( "-----------------------------");
次に、すべての条件を書き込んで、カラーセンサーの出力周波数を以前に設定した基準周波数で確認します。一致する場合は、ウォレットの残高から指定された金額を差し引きます。
if(red1> = 20 && red1 <= 25 && blue1> = 30 && blue1 <= 35 && green1> = 30 && green1 <= 35 && a == 0 &&センサー== HIGH){a = 1; } else if(sensor == LOW && a == 1){a = 0; if(total> = 10){lcd.setCursor(0、1); lcd.print( "10ルピー!!!"); 合計=合計-10; delay(1500); lcd.clear(); }}
ここでは、10ルピーと50ルピーのノートカラーの条件のみを設定しました。より多くの条件を設定して、より多くのnoを検出できます。紙幣の。
注:周波数出力は、外部照明とセンサーの設定によって異なる場合があります。そのため、通貨の出力頻度を確認し、それに応じて参照値を設定することをお勧めします。
以下のコードは、16x2LCDのウォレットで利用可能な残高を示しています。
lcd.setCursor(0、0); lcd.print( "Total Bal:"); lcd.setCursor(11、0); lcd.print(total); delay(1000);
次の関数は、通貨での赤のコンテンツの出力カラー頻度を取得します。同様に、他の関数を記述して、青と緑のカラーコンテンツの値を取得できます。
int red(){digitalWrite(11、LOW); digitalWrite(12、LOW); 周波数= pulseIn(OutPut、LOW); 戻り頻度; }
つまり、これがArduinoベースのMoneyカウンターをいくつかのコンポーネントを使用して簡単に構築する方法です。画像処理とカメラを統合して画像を使用して通貨を検出することで、さらに変更できます。これにより、より正確になり、任意の通貨を検出できるようになります。