- 必要な材料
- GT511C3指紋センサー(FPS)モジュール
- GT511C3指紋センサーとArduinoの接続
- GT511C3を搭載したArduino
- GT511C3指紋センサー用のArduinoのプログラミング
- ArduinoでのGT511C3指紋センサーの動作
バイオメトリクスは、信頼できる認証システムとして長い間使用されてきました。今日、心拍リズムやDNAによって人を識別することができる複雑な生体認証システムが存在します。他の実行可能な方法には、音声認識、顔認識、虹彩スキャン、指紋スキャンが含まれます。指紋認識が最も広く使用されている方法の中で、単純な出席システムからスマートフォン、セキュリティチェックなど、さまざまな方法で見つけることができます。
このチュートリアルでは、人気のあるGT511C3指紋センサー(FPS)をArduinoで使用する方法を学習します。利用可能なFPSは多数あり、出席システム、投票機、セキュリティシステムなどの設計を構築するためにそれらを使用する方法をすでに学習しました。しかし、GT511C3はより高度で、高精度で応答時間が速いため、使用方法を学習します。 Arduinoを使用して指紋を登録し、必要に応じて指紋を検出します。それでは始めましょう。
必要な材料
- Arduino Nano / UNO
- GT511C3指紋センサー
- 16x2LCDスクリーン
- ポット– 10kおよび1k、10k、22k抵抗器
- ボタンを押す
- 接続線
- ブレッドボード
GT511C3指紋センサー(FPS)モジュール
プロジェクトに飛び込む前に、GT511C3指紋センサーモジュールとその仕組みについて理解しましょう。このセンサーは、スマートフォンで一般的に使用されている静電容量式および超音波指紋センサーとは大きく異なります。GT511C3は、光学指紋センサであり、それはそのパターンを認識するために、あなたの指紋の画像に依存している意味します。はい、その通りです。センサーには実際にカメラが内蔵されており、指紋の写真を撮り、強力な内蔵ARM Cortex M3ICを使用してこれらの画像を処理します。下の画像は、ピン配列のあるセンサーの前面と背面を示しています。
センサーには青いLEDで囲まれたカメラ(黒いスポット)があることがわかります。指紋を鮮明に撮影するには、これらのLEDを点灯させる必要があります。これらの画像は、EEPROMと組み合わせたARMマイクロコントローラーを使用して処理され、バイナリ値に変換されます。モジュールには、電源を示す緑色のSMDLEDもあります。各指紋画像は、450dpiの解像度で202x258ピクセルです。センサ200は、指紋件まで登録することができ、各指紋テンプレートのためには、199にIDフォーム0を割り当てます。次に、検出中に、スキャンされた指紋を200個のテンプレートすべてと自動的に比較し、一致するものが見つかった場合は、Smack Finger3.0を使用してその特定の指紋のID番号を提供します。ARMマイクロコントローラーのアルゴリズム。センサーは3.3Vから6Vで動作し、9600のシリアル通信を介して通信します。通信ピン(RxおよびTx)は3.3V耐性のみであると言われていますが、データシートにはそれについて多くは指定されていません。 GT511C3FPSのピン配置を以下に示します。
シリアル通信とは別に、モジュールは前の画像に示されているピンを使用してUSB接続を介してコンピューターに直接接続することもできます。コンピューターに接続すると、リンクからダウンロードできるSDK_DEMO.exeアプリケーションを使用してモジュールを制御できます。このアプリケーションを使用すると、ユーザーは指紋を登録/検証/削除したり、指紋を認識したりできます。このソフトウェアは、センサーによってキャプチャされた画像を読み取るのにも役立ちます。これは試してみる価値があります。または、センサーがArduinoに接続されている場合でも、このソフトウェアを使用することもできます。これについては、この記事の後半で説明します。
センサーに関するもう1つの興味深い機能は、検出領域の周囲の金属ケーシングです。前に言ったように、センサーが機能するためには青いLEDをオンにする必要があります。ただし、センサーが指紋を積極的に待機する必要があるアプリケーションでは、センサーが加熱されて損傷するため、LEDを常にオンにしておくことはできません。したがって、これらの場合、金属ケーシングをMCUの静電容量式タッチ入力ピンに配線して、タッチされているかどうかを検出できます。はいの場合、LEDをオンにして、検知プロセスを開始できます。この方法はこの記事の範囲外であるため、ここでは説明しません。
3.3Vで動作する場合、センサーは約130mAを消費します。指を登録するのに約3秒、指を識別するのに1秒かかります。ただし、登録されているテンプレートの数が少ないと、認識速度が速くなります。センサーの詳細については、モジュールの公式メーカーであるADH-Techのこのデータシートを参照してください。
GT511C3指紋センサーとArduinoの接続
GT511C3 FPSには、Arduinoの+ 5Vピンから電力を供給できる2つの電源ピンと、シリアル通信用にArduinoの任意のデジタルピンに接続できる2つの通信ピンRxおよびTxがあります。さらに、センサーのステータスを表示するためのプッシュボタンとLCDも追加しました。GT511C3FPSをArduinoとインターフェースするための完全な回路図を以下に示します。
RxピンとTxピンは3.3Vトレラントであるため、Rx側に分圧器を使用して5Vを3.3Vに変換しました。10k抵抗と22k抵抗は、ArduinoTxピンからの5V信号をFPSのRxピンに到達する前に3.3Vに変換します。センサーは3.3Vから電力を供給することもできますが、Arduinoがセンサーに十分な電流を供給できることを確認してください。Arduinoの5Vピンを搭載した4ビットモードでLCDを接続しました。プッシュボタンはピンD2に接続されており、押すとプログラムが登録モードになり、ユーザーは新しい指を登録できます。登録後、プログラムはスキャンモードのままになり、センサーに触れている指をスキャンします。
GT511C3を搭載したArduino
前述のように、GT511C3 FPSはシリアル通信を介して通信し、センサーは16進コードを認識し、各16進コードに対して特定の操作が実行されます。興味があれば、データシートをチェックして、すべての16進値とそれに対応する関数を知ることができます。しかし、幸運なことに、 bboyho は、Arduinoで直接使用して指紋を登録および検出できるライブラリをすでに作成しています。GT511C3 FPS用のGithubライブラリは、以下のリンクからダウンロードできます。
GT511C3Arduinoライブラリ
リンクはZIPファイルをダウンロードします。次に、コマンド[スケッチ]-> [ライブラリを含める]-> [。ZIPライブラリを追加]に従って、それをArduinoIDEに追加する必要があります。ライブラリを追加したら、IDEを再起動すると、以下に示すように、[ファイル]-> [例]-> [指紋スキャナーTTL]でGT511C3FSPのサンプルプログラムを見つけることができます。
4つのサンプルプログラムが表示されます。点滅プログラムはFPSの青色のLEDを点滅させ、登録およびIDフィンガープログラムを使用して、それに応じてフィンガーを登録および識別できます。一度登録した指は、電源がオフになっていても、モジュールによって常に記憶されることに注意してください。
シリアルパススループログラムをArduinoにアップロードして、この記事の前半で説明した Demo_SDK.exe アプリケーションを使用できます。指紋テンプレートを削除したり、コンピューターにコピーを保存したりするには、このSDKアプリケーションを使用できます。
GT511C3指紋センサー用のArduinoのプログラミング
ここでの目的は、ボタンが押されたときに指を登録し、すでに登録されている指のID番号を表示するプログラムを作成することです。また、プロジェクトをスタンドアロンにするために、LCDにすべての情報を表示できる必要があります。同じことを行うための完全なコードは、このページの下部にあります。ここでは、理解を深めるために、同じものを小さなスニペットに分割しています。
いつものように、必要なライブラリを含めることからプログラムを開始します。ここでは、FPSモジュール用のFPS_GT511C3ライブラリ、シリアル通信でD4とD5を使用するためのソフトウェアシリアル、およびLCDインターフェイス用の液晶が必要です。次に、FPSとLCDがどのピンに接続されているかを説明する必要があります。このように回路図に従った場合、FPSの場合は4と5、LCDの場合はD6からD11になります。同じためのコードを以下に示します
#include "FPS_GT511C3.h" //https://github.com/sparkfun/Fingerprint_Scannerからライブラリを取得-TTL #include "SoftwareSerial.h" //ソフトウェアシリアルライブラリ #include
セットアップ 機能の内部では、LCDに紹介メッセージを表示してから、FPSモジュールを初期化します。コマンドfps.SetLED(true)は、センサーの青色LEDをオンにします。継続的にオンにするとセンサーが加熱されるため、不要な場合はfps.SetLED(false)でオフにできます。また、入力ピンとしてピンD2を作成し、プッシュボタンをピンに接続するために内部プルアップ抵抗に接続しました。
void setup() { Serial.begin(9600); lcd.begin(16、2); // 16 * 2 LCDを初期化します lcd.print( "GT511C3 FPS"); //イントロメッセージライン 1lcd.setCursor(0、1); lcd.print( "with Arduino"); //イントロメッセージライン 2delay(2000); lcd.clear(); fps.Open(); //シリアルコマンドを送信して fpfps.SetLED(true); を初期化します。 // LEDをオンにして、fpsが指紋を認識 できるようにしますpinMode(2、INPUT_PULLUP); //入力ピンとして内部プルアップ抵抗に接続します}
void loop 関数内で、ボタンが押されているかどうかを確認する必要があります。押された場合、新しい指を登録し、enroll関数を使用してそのテンプレートをID番号で保存します。そうでない場合は、センサーで指が押されるのを待ち続けます。押された場合、1:Nメソッドを使用して、登録されているすべての指紋テンプレートと比較することにより、指紋を識別します。 ID番号が検出されると、ようこそとID番号が表示されます。指紋が登録されているどの指とも一致しなかった場合、IDカウントは200になります。その場合、welcomeunknownが表示されます。
if(digitalRead(2))//ボタンが押された場合 { Enroll(); //指紋を登録します } //指紋テストを特定します if(fps.IsPressFinger()) { fps.CaptureFinger(false); int id = fps.Identify1_N(); lcd.clear(); lcd.print( "ようこそ:"); if(id == 200)lcd.print( "Unkown"); //認識されない場合 lcd.print(id); delay(1000); }
登録] 機能が正常に指一本を登録するために3つのサンプルの入力を取る必要があります。登録すると、その特定の指のテンプレートが作成され、ユーザーがHEXコマンドを使用して強制しない限り削除されません。指を登録するためのコードを以下に示します。 IsPressFinger メソッドを使用して、指が検出されたかどうかを確認します。検出された場合は、 CaptureFinger を使用して画像をキャプチャし ます。 最後に、Enroll1、Enroll2、およびEnroll3を3つの異なるサンプルに使用して、1本の指を正常に登録します。正常に登録された場合、LCDには指のID番号が表示されます。それ以外の場合は、コード付きの失敗メッセージが表示されます。コード1は、指紋がはっきりとキャプチャされなかったため、再試行する必要があることを意味します。コード2はメモリ障害の表示であり、コード3は指がすでに登録されていることを示します。
void Enroll()//ライブラリ exmapleプログラムから関数を登録します{ int enrollid = 0; bool usedid = true; while(usedid == true) { usedid = fps.CheckEnrolled(enrollid); if(usedid == true)enrollid ++; } fps.EnrollStart(enrollid); // lcd.print( "Enroll#");を登録します lcd.print(enrollid); while(fps.IsPressFinger()== false)delay(100); bool bret = fps.CaptureFinger(true); int iret = 0; if(bret!= false) { lcd.clear(); lcd.print( "指を離す"); fps.Enroll1(); while(fps.IsPressFinger()== true)delay(100); lcd.clear(); lcd.print( "もう一度押す"); while(fps.IsPressFinger()== false)delay(100); bret = fps.CaptureFinger(true); if(bret!= false) { lcd.clear(); lcd.print( "指を離す"); fps.Enroll2(); while(fps.IsPressFinger()== true)delay(100); lcd.clear(); lcd.print( "もう一度押す"); while(fps.IsPressFinger()== false)delay(100); bret = fps.CaptureFinger(true); if(bret!= false) { lcd.clear(); lcd.print( "指を離す"); iret = fps.Enroll3(); if(iret == 0) { lcd.clear(); lcd.print( "登録成功"); } else { lcd.clear(); lcd.print( "登録に失敗しました:"); lcd.print(iret); } } else lcd.print( "Failed 1"); } else lcd.print( "Failed 2"); } else lcd.print( "Failed 3"); }
ArduinoでのGT511C3指紋センサーの動作
ハードウェアとコードの準備ができたので、プロジェクトをテストします。コードをArduinoにアップロードして電源を入れます。私は、micro-usbポートを使用してプロジェクトに電源を入れています。起動すると、LCDに紹介メッセージが表示され、「Hi!..」と表示されます。これは、FPSが指をスキャンする準備ができていることを意味します。登録されている指が押されると、以下に示すように「ようこそ」の後にその指のID番号が表示されます。
新しい指を登録する必要がある場合は、プッシュボタンを使用して登録モードに入り、LCDの指示に従って指を登録できます。登録プロセスが完了すると、LCDに再び「Hi!..」と表示され、指を再度識別するために読み取られたことを示します。完全な作業は、以下のリンク先のビデオで発見することができます。
ここから、指紋センサーモジュールを使用して、これに加えて多くの興味深いものを開発できます。チュートリアルを理解し、何か役立つものを作成して楽しんだことを願っています。質問がある場合は、コメントセクションに残しておくか、フォーラムを使用して他の技術的な質問をしてください。