用意するもの
1.Arduino(今回はArduino Unoを使用)
2.USBケーブル type-B
3.ジャンパーケーブル
4.ブレッドボード
5.指紋認証センサ(FPM10A)
※5のFPM10Aは海外製で、Amazonなどの通販サイトでは同仕様の製品が複数あります。
買う際に到着日はよく確認して選定して下さい。
(私は1度税関で止められ、買い直しました。)
指紋認証センサ

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

赤枠部はブレッドボードに差し込む際には細すぎるので、ジャンパーをはんだ付けして補強します。

補強するケーブルは使う箇所だけで大丈夫です。
指紋認証センサ(FPM10A)とArduinoの接続
ケーブルは以下のようにします。
| 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をクリックします。

#if~#end ifの間でSoftwareSerial mySerial(2, 3);だけを残し、あとはコメントアウトしてください。
//#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を選択

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

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

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

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

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

指紋認証テスト
Arduino IDEでファイル>スケッチ例>Adafruit Fingerprint Senosr Liberary>fingerprintをクリックします。

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
「書込み」をクリックし、シリアルモニタにNo finger detectedと表示されます。
また、センサのLEDが点滅します。

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

所感ですが、センサの精度はスマホに内蔵されてるものと比べると、比較的高いように思います。
(接触部の表面積が大きいから?)
参考
Arduino MicroとFPM10Aで指紋認証し文字出力させました。
https://qiita.com/yasui_teco/items/476ddd34a51b1429eee9
