数年前にSci-Fiムーブで見られた指紋センサーは、さまざまな目的で個人の身元を確認するために非常に一般的になっています。現在、指紋ベースのシステムは、オフィスへの出席、銀行での従業員の確認、ATMでの現金の引き出しや預金、官公庁での本人確認など、日常生活のいたるところに見られます。すでにArduinoと接続しています。今日は、FingerPrintSensorをRaspberryPiとインターフェースします。このRaspberryPi FingerPrintシステムを使用すると、システムに新しい指紋を登録したり、すでにフィードされている指紋を削除したりできます。システムの完全な動作は、記事の最後にあるビデオに示されています。
必要なコンポーネント:
- ラズベリーパイ
- USBからシリアルへのコンバーター
- 指紋モジュール
- ボタンを押す
- 16x2 LCD
- 10kポット
- ブレッドボードまたはPCB(JLCPCBから注文)
- ジャンパー線
- LED(オプション)
- 抵抗器150オーム-1kオーム(オプション)
回路図と説明:
このRaspberryPi Finger Printセンサーインターフェースプロジェクトでは、4つのプッシュボタンを使用しました。1つは新しい指紋を登録するため、1つはすでにフィードされた指紋を削除するため、残りの2つはすでにフィードされた指紋の位置を増減するためです。A LEDは、指紋センサは、マッチングのために指を取る準備ができていることを示すために使用されます。ここでは、UARTで動作する指紋モジュールを使用しました。そこで、ここでは、USBからシリアルへのコンバーターを使用して、この指紋モジュールをRaspberryPiとインターフェースしました。
したがって、まず、以下の回路図に示すように、必要なすべての接続を行う必要があります。接続は簡単です。USBからシリアルへのコンバーターを使用して、指紋モジュールをRaspberry PiUSBポートに接続しました。16x2 LCDは、すべてのメッセージを表示するために使用されます。10kポットは、LCDのコントラストを制御するためにも使用されます。16x2 LCDピンRS、EN、d4、d5、d6、およびd7は、それぞれRaspberry PiのGPIOピン18、23、24、25、8、および7に接続されています。4つのプッシュボタンがRaspberryPiのGPIOピン5、6、13、および19に接続されています。LEDはRPIのピン26にも接続されています。
指紋センサー用のライブラリのインストール:
すべての接続を確立したら、Raspberry Piの電源を入れ、ターミナルを開いた状態で準備する必要があります。次に、以下の手順に従って、RaspberryPiの指紋ライブラリをPython言語でインストールする必要があります。
ステップ1:このライブラリをインストールするには、root権限が必要です。したがって、最初に、指定されたコマンドで ルート に入力します。
sudo bash
ステップ2:次に、指定されたコマンドを使用して、いくつかの必要なパッケージをダウンロードします。
wget –O – http://apt.pm-codeworks.de/pm-codeworks.de.gpg --apt-key add – wget http://apt.pm-codeworks.de/pm-codeworks.list -P / etc / apt / sources.list.d /
ステップ3:この後、Raspberry piを更新し、ダウンロードした指紋センサーライブラリをインストールする必要があります。
sudo apt-get update sudo apt-get install python-fingerprint –yes
ステップ4:ライブラリをインストールした後、次のコマンドを使用して、指紋センサーが接続されているUSBポートを確認する必要があります。
ls / dev / ttyUSB *
次に、USBポート番号を画面に表示されたUSBポートに置き換え、Pythonコードで置き換えます。完全なPythonコードは、このプロジェクトの最後にあります。
Raspberry Piを使用した指紋センサーの操作:
このプロジェクトの操作は簡単です。Pythonコードを実行するだけで、LCDにいくつかの紹介メッセージが表示され、ユーザーは指紋センサーに指を 置く ように求められます。これで、指紋モジュールに指を置くことで、指紋がすでに保存されているかどうかを確認できます。指紋が保存されている場合、LCDには「 Fountat Pos:2」の ような指紋の保存位置が記載されたメッセージが表示されます。それ以外の場合は 「一致が見つかりません」 と表示 され ます。
今、指登録するには 、印刷をプレス登録]ボタンにユーザーのニーズや液晶画面の指示メッセージに従ってください。
ユーザーが指紋のいずれかを削除したい場合、ユーザーは 削除ボタン を押す必要があり ます。 その後、LCDは削除される指紋の位置を尋ねます。インクリメントとデクリメントに別の2つのプッシュボタンを使用することで、ユーザーは保存された指紋の位置を選択し、登録ボタン(この時点では登録ボタンはOKボタンとして動作します)を押してその指紋を削除できます。詳細については、プロジェクトの最後に提供されているビデオをご覧ください。
Pythonプログラミング:
指紋センサーをRPiとインターフェースするためのPythonは、指紋ライブラリ関数を使用すると簡単です。しかし、ユーザーが自分でインターフェースしたい場合は、初めて少し難しいでしょう。指紋センサーのデータシートには、同じモジュールとのインターフェースに必要なすべてのものが記載されています。指紋センサーを使用してRaspberrypiをテストするためのGitHubコードを利用できます。
ここではライブラリを使用したので、ライブラリ関数を呼び出す必要があります。コードでは、最初に指紋、GPIO、時間などのライブラリをインポートする必要があり、次にLCD、LED、プッシュボタンのピンを定義する必要があります。
pyfingerprint.pyfingerprintからのインポート時間importPyFingerprint import RPi.GPIO as gpio RS = 18 EN = 23 D4 = 24 D5 = 25 D6 = 8 D7 = 7 enrol = 5 delet = 6 inc = 13 dec = 19 led = 26 HIGH = 1 LOW = 0
この後、初期化して、選択したピンに方向を与える必要があります
gpio.setwarnings(False)gpio.setmode(gpio.BCM)gpio.setup(RS、gpio.OUT)gpio.setup(EN、gpio.OUT)gpio.setup(D4、gpio.OUT)gpio.setup(D5、 gpio.OUT)gpio.setup(D6、gpio.OUT)gpio.setup(D7、gpio.OUT)gpio.setup(enrol、gpio.IN、pull_up_down = gpio.PUD_UP)gpio.setup(delet、gpio.IN、 pull_up_down = gpio.PUD_UP)gpio.setup(inc、gpio.IN、pull_up_down = gpio.PUD_UP)gpio.setup(dec、gpio.IN、pull_up_down = gpio.PUD_UP)gpio.setup(led、gpio.OUT)
これで指紋センサーが初期化されました
try:f = PyFingerprint( '/ dev / ttyUSB0'、57600、0xFFFFFFFF、0x00000000)if(f.verifyPassword()== False):raise ValueError( '指定された指紋センサーのパスワードが間違っています!')ただし、例外はe: print( '例外メッセージ:' + str(e))exit(1)
LCDを初期化して駆動する関数をいくつか作成しました。以下のコードセクションで、完全なコードを確認してください。
def begin()、def lcdcmd(ch)、def lcdwrite(ch)、def lcdprint(Str)、def setCursor(x、y)
すべてのLCDドライバー関数を記述した後、指紋の登録、検索、および削除のための関数を配置しました。
def enrollFinger()関数は、新しい指紋を登録または保存するために使用されます。
DEF searchFinger()関数は、既に記憶されている指紋searthcするために使用される
deleteFinger DEF() correspontindプッシュボタンを押すことによってdeoted既に保存されたフィンガープリントに使用されるfunctinos。
上記のすべての関数のコードは、以下に示すPythonコードで示されています。
この後、最後に、指紋センサーに指を 置く ように要求することにより、in while 1 ループでシステムを初期化する必要があります。システムは、この指紋が有効かどうかを確認し、それに応じて結果を表示します。
begin()lcdcmd(0x01)lcdprint( "FingerPrint")lcdcmd(0xc0)lcdprint( "Interfaceing")time.sleep(3)lcdcmd(0x01)lcdprint( "Circuit Digest")lcdcmd(0xc0)lcdprint( "Welcomes You" )time.sleep(3)flag = 0 lcdclear()while 1:gpio.output(led、HIGH)lcdcmd(1)lcdprint( "Place Finger")if gpio.input(enrol)== 0:gpio.output( led、LOW)enrollFinger()elif gpio.input(delet)== 0:gpio.output(led、LOW)while gpio.input(delet)== 0:time.sleep(0.1)deleteFinger()else:searchFinger( )
完全なPythonコードと作業ビデオを以下に示します。