☆youtube更新中☆
▶Youtubeのチャンネル登録で更新頻度がUPするかも!!

Youtubeで文章にするのが難しい内容について
実際にしゃべって解説しています。
ブログでは紹介していない(しにくい)内容も
じゃんじゃん更新中。

▶Youtubeでhobbyhappyを応援する

指紋認証モジュール【AS606】をArduinoで動作させてみる。

Arduino(マイコンボード)
この記事は約12分で読めます。

今回はちょっとおもしろいですよ。

指紋認証モジュールを使います。指紋認証モジュールって

実は通販でも普通に販売されています。

指紋認証で扉のロックを解除するとか、なんかわくわくしませんか??

しかもArduino用のライブラリが整っているので、

比較的簡単にArduinoで導入することが可能です。

ただ、英語での情報ばかりで日本語の情報がほとんどなかったので

今回紹介していこうと思います。

動画にしても面白いかと思っているので、そのうちYoutubeにも

動画撮影してUPするかもしれません。

自己紹介

東証一部上場企業でサラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

転職に成功して現在は超大手企業でシステム系の開発をしています。

Youtubeチャンネルにさまざまな動画を上げています

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

今回使用した指紋認証モジュール

さてここで指紋認証モジュールの説明をしていきます。

指紋認証モジュールにも世の中にそこそこ流通していますが、

今回使用するのは、AS606というチップが載っている指紋認証モジュールです。

わたしはいつも秋月電子かAmazonでこういった類のものを購入していますが、

この指紋認証モジュールはAmazonで購入しました。

価格も購入時税込みで2,000円前後だったような気がします。

現在いくらなのかはご自分で確かめてみてください。

↓↓Amazonのページの飛べます。↓↓

FTVOGUE 07光学式指紋認証モジュールリーダーセンサーアクセス制御出席認識デバイス
FTVOGUE 07光学式指紋認証モジュールリーダーセンサーアクセス制御出席認識デバイス
fingerprint-authentication
指紋認証モジュールが起動した状態

上の画像は起動した状態で、

指を窓に載せると自動で認識が開始されます。

なにかの装置に埋め込んで使用したらセキュリティレベルを一気に上げることが可能です。

何より近未来的でカッコ良くないですか??

機能的にも申し分ないのでそれを少しここで紹介しておきます。

商品説明の内容

ここで注目は、ストレージ容量1000個とか、誤受理率が0.0001%未満みたいな記述でしょうか。

ほんとかな??という感じもしますが、もしほんとなら

指紋は1000パターン保存できることになりますし、

100万回に1回程度しか誤った判断をしないという性能ということになります。

結構2000円前後にしてはこれを使いこなせると

いろんなことができそうですよね!?

コスパとしてはなかなか優秀そうです。

実際に使うときに引っかかった点2つ紹介します

じつはこの指紋認証モジュールですが、

どこかのデータシートを適当に確認すればすぐに使えるだろ…

なんて思っていたのですが結構厄介でした。

具体的にはこの2つです。

  • 配線が、同じAS606搭載のモジュールでも異なる。
  • 配布されているライブラリに少々癖がある。

この二つを詳しく解説していきます。

最後はしっかり応用例なんかもご紹介します。

配線が、同じAS606搭載のモジュールでも異なる。

AS606は指紋認証モジュールに多く使用されているICチップのようです。

現に、”AS606 fingerprint”とgoogleで検索すると無数の指紋認証モジュールがヒットします。

さらにAS608という後継機??なんかもあるようです。

ただ確認してみたところAS606のほうが高性能なスペック表しか出てこないんですよね…

まあとりあえずAS606を選択しておけば特に問題ないです。

さて、ここから配線のお話になりますが、

基本はモジュールとコネクタ、

そのコネクタから配線が付いた状態で商品が届きます。

この写真はコネクタに付属の配線付きコネクタを挿した状態です。

fingerprint-module-line
指紋認証モジュールの裏側。付属の配線付きコネクタを装着した状態。右から順に+5VDC,GND,Tx,Rx,NC,NCとなっている。

まあ赤が+DC5Vで、黒がGNDだろうなくらいの予想はつきますが、

さてRXとTXつまりRS232C通信用の線が2本どこかに隠れているはずなのです。

ですがどの線がRxか、Txかまあわからないですね…

そこで必死にGoogleの画像検索で似たようなモジュールでやっている人を探したところ…

日本人ではいませんでしたが、外国の方で写真をアップしていました。

それによると、黄色がTx、その隣の緑色がRxとのことでした。

そこでその情報を信じてArduinoに配線していった感じです。

AS606自体はもちろんピンの配置が決まっているわけですが、

それを汎用の基板に載せて別会社が実装するときにコネクタの何番ピンをGNDにするか、

+5VDCにするか?なんてのは各社さまざまあるわけですね。

ですから、似たような構成でも付属してくるコネクタについている配線の色が

全然違うものだったりするわけです。

わたしのものは赤(+5VDC)が一番端に来ているタイプですが、

インターネット上の情報なんかでは

GNDが一番端に来ているタイプも存在したりしていて、

ここは必ず確認が必要なところです。

配布されているライブラリに少々癖がある。

実際に指紋認証モジュールを使って、

例えば指紋を登録したり、置かれた指の指紋が登録されたものか?

なんかをArduinoで実行するわけですが、

一からスケッチを書く必要はありません。

ライブラリがすでに用意されていますので、

そちらを活用していきます。が…

インターネット上では、2通りのやり方が紹介されています。

  1. ライブラリをダウンロードしてライブラリフォルダに格納する。
  2. ArduinoIDE内のライブラリの管理から、ライブラリを追加する。

どちらでもいいような気もするのですが、

情報が古くなっても更新されているという利点を考えると、

2番のArduinoIDE内のライブラリの管理からライブラリを追加する

方法をオススメしたいと思います。

具体的には、スケッチタブから、

ライブラリの管理の出し方

こんな感じでライブラリの管理をクリックします。

その後、fingerprint

と打ち込みましょう。

fingerprintのライブラリ

するとこんな感じのライブラリが出てくるのでインストールします。

Ver.は最新のモノでいいと思います。

それでは癖があるというのがどういうことなのか。

早速インストール後、ArduinoIDEを再起動してこのように

スケッチ例からenrollを選択して開いてください。

enrollはスケッチ例の中に入っています。

ここで注目すべきは、ここですかね

enrollの序盤のコメントアウトされているところ

そもそもpin#2は緑色の線で、pin#3は白だと言っています。が、

わたしの白色の線は明らかにNCです…さらに、Arduinoは0番pinと1番pinが

シリアル通信用のpinとなっていて、Rx,TxとArduino上に書いてあって

そこに指紋認証モジュールのTx,Rxを挿したくなるというトラップもあって、

何重にもトラップが仕掛けられているので

引っかからないように注意が必要です。

指紋認証モジュールをArduinoUNOと接続する。

それでは実際に使ってみるために、

ArduinoUNOと接続していきましょう。

配線図はこんな感じです。

fingerprint_arduino
指紋認証モジュールとArduinoの配線図

配線の色はわたしの手持ちのモジュールに最初から付属されていた

配線の色そのままです。購入した時期によって異なる可能性もあるので

注意してください。

ちなみに、5VとGNDは赤と黒の線をつなげるのは何となくいいと思いますが、

黄色と緑色のTxとRxの線は、2番と3番にそれぞれつなぎます。

これは配布されているサンプルコードに合わせるためなので、

サンプルコードを書き替えてあげれば自由な位置で動作させることができます。

Arduinoで指紋認証モジュールを認識させてみる

さて、配線が完了したところで、

Arduinoのサンプルスケッチから指紋認証モジュールを認識させていきましょう。

先ほど開いた、サンプル例のenrollを使います。

enrollをArduinoUNOに書きこんで、シリアルの窓を開きましょう。

すると、このように表示されます。

もし、ここでこのように表示されたら接続がうまくいっていない状態です。

指紋認証モジュールがいないと怒られている状態

Did not find fingerprint sensor

と書かれている通り、認識できていない状態です。

接触不良も考えられるので、オススメはこちらの記事のように、

指紋認証モジュールから出ている配線の先を、

ジャンパーワイヤーのオス化する方法です。

そうすれば接触不良は防げます。

何かと便利なテクニックなので、道具も一緒にそろえてしまうのもアリです。

指紋認証モジュールが認識されたところで指紋の登録

ArduinoIDEのシリアル窓から、

指紋認証モジュールが認識されていると先ほど示したような画面になります。

もう一度載せておきますね。

こちらのように、enrollでは指紋の登録を行うスケッチになっています。

すべて英語ですが、その指示に従ってあげれば指紋の登録は比較的簡単にできます。

実際に指示された通りに指紋を登録していきましょう。

手順はこちらです。

  • 指紋を登録したいIDを入力
  • 実際に登録したい指を載せる
  • 指示されたらもう一度指を載せる

それではやっていきましょう。

指紋を登録したいIDを入力

例えばこれから左の人差し指をID5番に登録したい場合、

このように5と打ち込みます。※半角です。

その後送信ボタンを押すと、

こんな感じで指を載せるの待ち状態に移行します。

ID5番を宣言して、指が置かれるのを待っている状態

このまま指を載せないとずっとこの黒い〇が永遠と出力されます。

落ち着いて登録したい指を指紋認証モジュールに載せましょう。

実際に指紋登録したい指を載せる

Arduino側で指が来るのを待っている状態なので、

登録したい指を載せます。

pur-your-finger
IDを入力して送信すると勝手にモジュールが反応して光ります。この状態で指を載せます。

すると、シリアル窓が更新されてこのようになります。

ID5番に登録されて、また同じように指を載せるように指示される。

指をいったん離して、もう一度同じ指を載せるように指示されます。

Remove finger⇒Place same finger again

という流れですね。簡単な英語なのでわかると思います。

指示されたらもう一度指を載せる

それでは指紋登録の仕上げです。

この状態で再度同じ指を載せてみましょう。

すると、

正しくID 5に指紋が登録された

このような感じで、

Stored!

と表示されたらID5番に左の人差し指が無事に登録されました。

続けて異なるIDを登録することも可能です。

その場合はまた窓に半角の数字を打ちこんで送信ボタンで実行できます。

ちゃんと指紋が登録されたか確認する方法

指紋の登録はenrollのスケッチ例で行いましたが、

指紋がしっかり登録されているかのテストは

また別のスケッチを使用します。

それが、スケッチ例の中の、fingerprinを使用します。

何も変えずにArduinoに書き込みを行います。

その後シリアル窓を起動してみると、

正しく指紋認証モジュールが認識されているはずです。

fingerprintを書き込んでシリアル窓を起動した状態

この状態で指を載せないと、もちろん指がいないので、

このような表示になります。

No finger detected

No finger detectedなので、指がいないよと言われています。

さて、ここで先ほど登録した左手の人差し指を

指紋認証モジュールに載せてみましょう。

すると、

指を置くと認証が始まる

このように、指紋の認証が始まり、

無事ID#5と一致したと返ってきます。

つまりID#5の指だと認識されたわけですね。

confidenceの値、つまり精度も一緒に表示されます。

ここまでくれば応用は簡単そうですよね。

応用編:登録された指紋によって挙動を変える(LED点灯)

最後にこの指紋認証の仕組みを使って応用例を一つ作ってみます。

具体的にはこんな感じです。

  • 登録された指のIDが1だったら右のLEDを、IDが2だったら左のLEDを点灯させる

基本的にスイッチって、LED1個につき1つ必要になりますよね?

ただ、指紋認証を行っているので、モジュールは1つで指紋で分岐させるので

複数のトリガーにできるという仕組みです。

今回はあらかじめ右手の薬指をID1に、右手の中指をID2に登録しています。

まずはイメージが大事なのでYoutubeに上げた動画をご覧ください。

このように指紋の種類によって分岐ができているのがわかると思います。

それでは配線からご紹介していきましょう。

指紋認証の応用編の配線

基本はLEDを追加するだけで済みます。

こんな感じにしましょう。

fingerprint_LED
指紋認証とLEDを組み合わせた状態

6番ピンの右のLEDを、7番ピンの左のLEDを接続しています。

スケッチ

ここからは、スケッチの解説です。

スケッチ例で解説されているところから何を追加すればいいのかですが、

以下2点の追加をfingerprinの中にしていきましょう。

  • 6,7番ピンを出力指定(pinMode)
  • 読み取ったIDで分岐(if else)

では具体的にどこに何を追加すればよいか見ていきます。

6,7番ピンを出力指定(pinMode)

LEDの点灯をさせるときに忘れがちなpinModeですが、

必ず記載する必要があります。

fingerprintのsetupの中に記載しましょう。

void setup()
{
  pinMode(7,OUTPUT);
  pinMode(6,OUTPUT);

Serial.beginの前あたりに入れておけば大丈夫です。

読み取ったIDで分岐(if else)

 // found a match!
  Serial.print("Found ID #"); Serial.print(finger.fingerID);
  if(finger.fingerID == 1)
  {
    digitalWrite(7,HIGH);
    digitalWrite(6,LOW);
  }
  else if(finger.fingerID == 2)
  {
    digitalWrite(6,HIGH);
    digitalWrite(7,LOW);
  }

正しく指紋が認証された場合は、finger.fingerIDの中に

該当するIDがint形式で格納されています。

ですから、そのIDで分岐させてあげるイメージです。

応用編の冒頭でご説明しましたが、ID#1には右手の薬指

ID#2には右手の中指をあらかじめenrollで登録しておいてください。

これで動画と同じことが再現可能です。

今回のまとめ

今回は指紋認証モジュールの使い方の解説と、

実際に応用してみる方法まで解説しました。

応用例ではIDによって分岐していますが、

実際使用するとなると、IDは関係なく登録されているかどうかで判定に

使用するかと思いますので、そこは工夫してやってみてください。

fingerprintをよく読めば、どのタイミングで認証が完了しているかわかると思います。

そこのタイミングをトリガーとして使ってあげると、

きっと思い通りの動作をさせることができると思います。

コメント

  1. ふうと より:

    arduino を使ってボリュームのカーブ変更したいですBカーブしか持ち合わせ無いのですがCカーブもAカーブも使えるようにしたいです。ぜひブログでボリュームのカーブ変更記事書いて欲しいです。お願いします。

    • hobbyhappy より:

      ふうとさん
      コメントありがとうございます!
      可変抵抗のお話のようですね。
      BカーブをAカーブにもCカーブにもしたいということですが、物理的に抵抗を入れて擬似的に「っぽく」することは可能ですが、完全に変更するのは難しいですね。
      データ上だけで良いのであれば、抵抗値から対数になるようにarduinoの中で計算してあげれば可能ですね。
      データ上だけということでいいですかね??
      それとも実際に抵抗値を変更したいということでしょうか??

タイトルとURLをコピーしました