LoginSignup
3
4

More than 1 year has passed since last update.

セキュリティ検証をやってみよう!!~指紋認証デバイス製作~

Last updated at Posted at 2021-10-01

用意するもの

1.Arduino(今回はArduino Unoを使用)
2.USBケーブル type-B
3.ジャンパーケーブル
4.ブレッドボード
5.指紋認証センサ(FPM10A)

※5のFPM10Aは海外製で、Amazonなどの通販サイトでは同仕様の製品が複数あります。
買う際に到着日はよく確認して選定して下さい。
(私は1度税関で止められ、買い直しました。)

指紋認証センサ

MicrosoftTeams-image (3).png
これが指紋認証センサです。
電源、GND、TX、RXの4つのケーブルで接続されます。
(TX,RXでシリアル通信により、データの送受信が行われます。)
赤枠の部分に指を置いて認証します。

ケーブル

コネクタのケーブルを補強します。
コネクタ.png
赤枠部はブレッドボードに差し込む際には細すぎるので、ジャンパーをはんだ付けして補強します。
コネクタ (1).png
補強するケーブルは使う箇所だけで大丈夫です。

指紋認証センサ(FPM10A)とArduinoの接続

FPM10Aのピン番号右から1番目です。

ケーブルは以下のようにします。

FPM10A Arduino Uno
1.VCC(赤) 5V
2.GND(黒) GND
3.TX(黄) D2
4.RX(白) D3

*FPM10Aの5,6はNCです。ケーブルの色は購入するものによって、違います。


抵抗やコンデンサは必要ありません。
配線の設定はこれで完了です。

Arduino環境構築

今回、OSはWindowsを使用しました。

以下のアドレスよりダウンロード、インストールしてください。
https://www.arduino.cc/en/main/software

また、FPM10A用のライブラリをダウンロード,解凍し、ライブラリに保存してください。
https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library/archive/master.zip

指紋の登録

Arduino IDEでファイル>スケッチ例>Adafruit Fingerprint Senosr Liberary>enrollをクリックします。
image.png
#if#end ifの間でSoftwareSerial mySerial(2, 3);だけを残し、あとはコメントアウトしてください。

enroll
//#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino  (WHITE wire)
// Set up the serial port to use softwareserial..
SoftwareSerial mySerial(2, 3);

//#else
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
// #0 is green wire, #1 is white
//#define mySerial Serial1

//#endif

ボードの設定は以下のようになります。
ツール>ボード>ボードマネージャーよりArduino Unoを選択
image.png

USBケーブルをArduinoに接続し、シリアルポートを確認して、「書き込み」をクリックします。
sozai1.png

書込みが完了すると、赤枠のメッセージが表示
シリアルモニタ(黄枠)をクリックします。
sozai2.png

シリアルモニタが以下のように表示されれば、指紋登録の待ち受け状態です。
ボーレート(赤枠)が9600になっているか確認してください。
sozai3.png

1~127の数字を最上部の入力フォームに入力します。この数の範囲で指紋を登録できます。
数字を入力し、センサに指を当てると登録処理が開始します。
認識すると、赤枠のようにIDが表示されます。
sozai4.png

もう一度、同じ指を当てて、赤枠のStored!が表示されれば、登録完了です。
sozai5.png

指紋認証テスト

Arduino IDEでファイル>スケッチ例>Adafruit Fingerprint Senosr Liberary>fingerprintをクリックします。
image.png
enrollと同じように初期宣言を編集します。

fingerprint
//#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino  (WHITE wire)
// Set up the serial port to use softwareserial..
SoftwareSerial mySerial(2, 3);

//#else
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
// #0 is green wire, #1 is white
//#define mySerial Serial1

//#endif

「書込み」をクリックし、シリアルモニタにNo finger detectedと表示されます。
また、センサのLEDが点滅します。
output.gif

指を当てた時、成功した場合、IDの番号と整合率(confidence)が表示されます。
失敗した場合、Communication errorが表示されます。
image.png

所感ですが、センサの精度はスマホに内蔵されてるものと比べると、比較的高いように思います。
(接触部の表面積が大きいから?)

参考

Arduino MicroとFPM10Aで指紋認証し文字出力させました。
https://qiita.com/yasui_teco/items/476ddd34a51b1429eee9

次回、ファームウェア解析をやっていきます。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4