M5StackでUnit Finger を使う

Using the Unit Finger ・ 使用 Unit Finger

M5StackのUnit Fingerをコントローラーに接続する最小構成。配線とBOMつき。

この構成をエディタで開く・編集する →

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Unit Fingerunitgrove_uartofficial page — $22.9

配線

作り方

M5Stack Core2とUnit Fingerで作る、指紋認証の入門キットです。Unit Fingerが指紋を読み取り、Core2がそのデータを処理します。登録・照合のサンプルコードで、指紋認証の基本を学べます。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、Unit Finger(指紋認証ユニット)、Groveケーブル1本(通常ユニットに付属)、Core2とパソコンをつなぐUSB-Cケーブル。
  2. Groveケーブルでつなぐ — Unit FingerはUART(青)接続です。Groveケーブルの一端をUnit Fingerに、もう一端をCore2の青いPort.C(UARTポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  4. 指紋を登録する — コードを実行すると、画面に「Place finger on sensor」と表示されます。Unit Fingerのセンサー部分に指を置いてください。数秒で登録が完了し、指紋IDが表示されます。複数の指を登録する場合は、コード内のIDを変更して再度実行します。
  5. 指紋を照合する — 登録後、コードを照合用に書き換えて実行します。センサーに指を置くと、登録された指紋と照合され、一致した場合は「Match found!」、不一致の場合は「No match」と表示されます。

サンプルコード(micropython)

# M5Stack Core2 + Unit Finger (fingerprint enrollment & verification)
# Wiring: Unit Finger -> Core2 blue Port.C (UART)
# This example enrolls a fingerprint with ID 1, then verifies it.

from machine import UART, Pin
from m5stack import lcd
import time

# Initialize UART on Port.C (TX=13, RX=14)
uart = UART(2, baudrate=57600, tx=13, rx=14)

# Helper: send command and get response
def send_cmd(cmd):
    uart.write(cmd)
    time.sleep_ms(100)
    return uart.read()

# Enroll fingerprint ID 1
lcd.clear()
lcd.print('Enrolling fingerprint ID 1...', 10, 20)
lcd.print('Place finger on sensor', 10, 60)

# Command to enroll (0x01 = enroll, 0x01 = ID 1)
cmd = bytes([0xEF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x03, 0x01, 0x00, 0x05])
resp = send_cmd(cmd)
if resp:
    lcd.print('Enrolled successfully!', 10, 100)
else:
    lcd.print('Enrollment failed', 10, 100)

time.sleep(2)

# Verify fingerprint
lcd.clear()
lcd.print('Verifying fingerprint...', 10, 20)
lcd.print('Place same finger', 10, 60)

# Command to verify (0x02 = verify, 0x01 = ID 1)
cmd = bytes([0xEF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x03, 0x01, 0x00, 0x06])
resp = send_cmd(cmd)
if resp and resp[9] == 0x00:
    lcd.print('Match found!', 10, 100)
else:
    lcd.print('No match', 10, 100)

コツ・安全上の注意

この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。

この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。

エディタで開く →

UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。