こんばんは!
今回はFPM10Aという指紋認証モジュールを使ってArduinoで指紋認証をやってみようと思います。
使用するもの
・Arduinoメインボード(https://amzn.to/2vkPIUH)
・USBケーブル(https://amzn.to/2UHhntl)
・ジャンパワイヤ (https://amzn.to/39uBU8T)
・ FPM10A指紋認証モジュール
指紋認証とは
指紋認証とは、名前の通り指紋を利用して人を識別することのできる生体認証のうちの1つです。
iPhoneのホームボタンなどにも搭載されていて、誰もが一度は聞いたことのあるものだと思います。
人の指の表面の凸凹を読み取って、指紋の特徴のデータを得ることで人を識別しています。
FPM10Aについて
今回はFPM10Aという指紋認証モジュールを使用します。
FPM10Aの仕様について
定格電圧:3V~6V
定格電流:120mA未満
誤認率(FAR):0.001%未満
誤拒否率(FRR):1.0%未満
通信ボーレート:(9600×N)bps、N = 1〜12(デフォルト値N = 6、57600bps)
です。
安価で指紋認証ができるモジュールというもはとても魅力的だと思います。
ちなみに、仕様書には安全レベルが5(1~5の5段階、5が最も安全)と書いてありましたが、そもそもの指紋認証の基準に詳しくないのでよく分かりません…(´・ω・`)
配線
まず配線からやっていきます。
上の写真を見て表の通りにFPM10AとArduino UNOを接続します。
Vcc | 5V(3.3Vでも可) |
GND | GND |
TX | デジタル2番ピン(D2) |
RX | デジタル3番ピン(D3) |
FPM10Aに直接ジャンパワイヤを接続することができないためジャンパワイヤをはんだ付けしました。
Adafruit Fingerprint Sensor Libraryを使う
まず、指紋認証ライブラリをこちらからインストールしてください。
次にzipファイルを解凍して、ファイル名を「Adafruit_Fingerprint_Sensor_Library folder」に変更してください。
次にファイルの「ドキュメント」→「Arduino」→「libraries」ファイルを開いてダウンロードしたファイルを移動してください。
これでインストールは完了です。
次にArduino IDEを起動して、「ファイル」→「スケッチの例」→「Adafruit_Fingerprint_Sensor_Library folder」→「enroll」を選択します。
新しいスケッチが起動するのでそのままマイコンボードに書き込んでシリアルモニタを起動してください。シリアルモニタのデータ転送レートは9600にしてください。
このような文字が出ると思うので、1と入力して送信ボタンを押してください。
するとこのような文字が表示され、画面がスクロールされると思います。
スクロールされ始めたら指をセンサーの上にかざして1秒ほど待ってください。そうすると「Image taken Image converted Remove finger」と表示されるので指示に従って指を離してください。
指を離すと「Place same finger again」と表示されるので先ほどと同じ指をセンサーの上に乗せてください。
全てが完了すると下の画面のようになると思います。
これでID「1」にあなたの指の指紋が登録されました。IDは1~127まであり、計127個の指紋を登録することができます。
ID2番3番にも同じ様に1番とは違う指の指紋を登録してみてください。
私はID1番、2番、3番に右人差し指、中指、薬指を登録しました。
次に先ほど登録した指紋が正確に登録されているかを確認します。
「ファイル」→「スケッチの例」→「Adafruit_Fingerprint_Sensor_Library folder」→「fingerprint」を選択してください。
スケッチが起動すると思うのでそのままマイコンボードに書き込んで、シリアルモニタを起動してください。先ほどと同じく、シリアルモニタのデータ転送レートは9600にしてください。
シリアルモニタを起動させたら、先ほど登録した指を一つずつセンサーの上に乗せて下さい、すると下の写真のようにその指紋のIDと信頼度が表示されます。
信頼度は高ければ高いほど登録した指紋と一致していることになります。
信頼度の基準がわからないのでどのくらいの値が高いのかはよく分かりません…(-_-;)
これで下準備は完了しました。
次にコードを書いていきます。
プログラム
Arduino IDEの「ファイル」→「新規」を選択して次のコードを記述してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <Adafruit_Fingerprint.h> #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); int fingerprintID = 0; void setup() { Serial.begin(9600); finger.begin(57600); if (finger.verifyPassword()) { Serial.println("指紋が見つかりました。"); } else { Serial.println("指を乗せてください。"); delayMicroseconds(10); } } void loop() { fingerprintID = getFingerprintID(); delayMicroseconds(10); switch (fingerprintID) { case 1: Serial.println("人差し指です"); break; case 2: Serial.println("中指です"); break; case 3: Serial.println("薬指です"); break; } } int getFingerprintID() { uint8_t p = finger.getImage(); if (p != FINGERPRINT_OK) return -1; p = finger.image2Tz(); if (p != FINGERPRINT_OK) return -1; p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) return -1; return finger.fingerID; } |
このコードは指紋から先ほど登録したIDを見つけ、その指の名前を表示するプログラムです。
先ほども述べた通り、私はID1番、2番、3番に右人差し指、中指、薬指を登録したため、このプログラムになっています。自分の登録したものに合わせて変更してください。
記述したらマイコンボードに書き込んで、先ほど登録した指を乗せてみて下さい。
これまでの過程が上手くいっていれば、このように正しく結果が表示されるはずです。
まとめ
今回は指紋認識モジュールを使ってArduinoで指紋認識をしてみました。
保存したときと違う指の乗せ方をすると上手く認識できないことがあるので、できるだけ登録したときと同じ指の乗せ方をしてください。
安価で生体認証ができるのはとても魅力的だと思います。
最後までお読みいただきありがとうございます。
今回はこれで終わります。
ではまた!
参考
今回参考にさせていただいたサイトです。