概要
ひさしぶりのユニット紹介です。溜まっているものを順番に紹介していきたいと思います。今回は指紋センサユニットです。
商品
- M5Stack用指紋センサユニット(スイッチサイエンス)
- Finger Print Sensor Unit (FPC1020A)(公式ストア)
上記の商品になります。

パッケージは普通のユニットですね。コネクタが青いのでUARTでの通信になります。

UARTなのでTXDとRXDですね。

こっち側に指紋センサーがついています。指紋データはセンサー側に保存されており、ボード側からは細かい操作ができないような仕組みになっています。
使い方
ボード | ポート |
M5Stack Basic | |
M5Stack Gray | |
M5GO | C |
M5Stack Fire | C |
M5Stack Core2 | |
M5Stack Core2 for AWS | C |
M5StickC | A |
M5StickC Plus | A |
ATOM Matrix | A |
ATOM Lite | A |
ATOM Echo | A |
M5Stack CoreInk | A |
M5Paper | C |
このユニットはUARTのため、接続する場所に注意が必要です。FireやCore2 for AWS、M5Paperなどのボードに青色のポートが最初から搭載されている場合にはそこに接続します。
M5Stack BASICなどはI2C専用の赤いポートしか搭載されていませんので、そのまま接続することができません。Groveポートを拡張するベースなどを使う必要があります。Core2に関してはちょっと特殊でI2C用のポートですが、内部I2Cとは別系統のため非推奨ですがなんとか利用することも可能です。
M5StickCやATOM系に関しては1つしかポートがないのですが、なんにでも利用できる万能ポートですのでそのまま接続が可能です。
M5StickCの場合
Groveポートに接続し、スケッチ例からFingerprintを開くのですがいろいろ問題があります。画面表示がM5Stack用のままなので、重要な表示がすべて画面外に表示されています。また、タイムアウトなどの設定値がM5Stackと違うので、非常にレスポンスが悪いです。
void CleanScreen()
{
M5.Lcd.setTextColor(WHITE);
M5.Lcd.fillRect(0, 32, 160, 80, BLACK);
M5.Lcd.setCursor(0, 32);
M5.Lcd.setTextSize(1);
userNum = FP_M.fpm_getUserNum();
M5.Lcd.print("userNum:");
M5.Lcd.println(userNum);
}
最低限上記の関数の中は画面内に収まるように修正したほうがよいと思います。
また、実際の利用をする場合にはレスポンスが悪すぎるのでM5Stackのスケッチ例を参考にしながら差分を改修する必要がありそうです。
M5Stackの場合
Fireなどの青色ポートを持つ本体であればそこにさして、スケッチ例からFINGER_FPC1020Aを開くだけで利用できます。
レスポンスもいいので、ある程度実用的な速度で利用が可能です。
UIFlowの場合
使ってみた限りかなり使いやすいです。ユニットによってはUIFlow向けライブラリが充実している場合があるのですが、指紋センサーも使いやすい形にまとまっていました。

サンプル通りに最小限で組むと上記のような使い方になりました。ボタンAを押して指紋登録をして、イベントとして指紋認識をしたときの処理を記述します。ボタンBで全部の指紋データを削除します。

使えるブロックは上記のとおりです。
まとめ
最初にM5StickC+Arduinoで実験しましたが、まったく動いているようには思えませんでした。UIFlowやM5Stack Fireだと普通に動くので、再度確認したところものすごく反応が悪いだけでした。
個人認証としては他にRFIDユニットがありますが、日本だと利用できないと思われるので現状のところこの指紋ユニットしかありません。
使う前はあまり期待していなかったのですが、UIFlowでは比較的きれいに使えそうなので組み込み方によっては実用的なものができる可能性があると思います。
コメント