Skip to content
Identification / RFID

R307 Optical Fingerprint Sensor Module

Biometric access control for DIY smart locks.

R307 Optical Fingerprint Sensor Module

The R307 is an optical fingerprint reader module from Hangzhou GROW Technology, built around an integrated optical sensor and an onboard DSP that handles image capture, feature extraction, and fingerprint template matching entirely on-module. Rather than sending raw images to your microcontroller, it does the heavy lifting itself and returns simple pass/fail match results over a UART packet protocol (0xEF01 header, 4-byte address, checksum), making it a popular choice for DIY smart locks, biometric attendance systems, and secure-access add-ons for existing projects. Per the manufacturer's manual it draws a modest 50mA typical, images a finger in under 0.5s, and can store up to 1000 templates with sub-1s 1:N search across the full library.

Specifications

Sensor typeOptical fingerprint sensor with onboard DSP/processor — handles image capture, feature extraction, template generation and matching entirely on-module
Operating voltageDC 4.2V–6.0V (5V typical) — per Hangzhou GROW R307 datasheet
Operating currentTypical 50 mA (datasheet-rated; some resellers list higher figures — 50 mA is what GROW's own manual specifies)
InterfaceUART, TTL logic level, default 57600 bps (configurable 9600–115200 bps in 9600 bps steps) — or USB 2.0 on modules that break out D+/D-
Image acquiring time< 0.5 s
Matching modes1:1 verification (match against one specified template) and 1:N search (match against the whole library)
Template / library storageUp to 1000 fingerprint templates in onboard flash; 512-byte template size, 256-byte character file size
Security level5 grades, set via SetSysPara (1 = lowest FRR / highest FAR, 5 = highest FRR / lowest FAR)
False Accept Rate (FAR)< 0.001%
False Reject Rate (FRR)< 0.1%
Average search time< 1 s across a 1000-template library (1:1000)
Sensing window19mm x 21mm
Operating / storage environmentOperating: -10℃ to +40℃, 20%-85% RH; Storage: -40℃ to +85℃, <85% RH
DimensionsModule: 44.1 x 20 x 23.5mm, split-type optical housing

Pinout

PinNameDescription
1VCC (5V)Power input, DC 4.2V–6.0V (5V typical)
2GNDGround, common with power ground
3TXDUART data output, TTL logic level — connect to microcontroller RX
4RXDUART data input, TTL logic level — connect to microcontroller TX
5TOUCHFinger-detect output signal (max 50mA drive) — goes active when a finger touches the sensor window, useful for waking a sleeping MCU
63.3VPower input for the touch/finger-detection circuit only (DC 3.3V–5V, ~5µA) — separate from the main VCC supply on pin 1

The module ships with a 6-pin JST connector carrying VCC, GND, TXD, RXD, TOUCH and 3.3V (the last two power and read the capacitive touch/wake circuit, not the main module). Per GROW's datasheet the module needs 4.2V-6V on pin 1 to operate reliably — running it purely off a 3.3V rail is under spec even though the UART lines themselves are TTL level. On 5V boards like the Arduino Uno you can wire directly; on 3.3V-only boards (ESP32, STM32) power the module from a 5V rail but consider a level-shifter or divider on the module's TX line feeding back into the MCU's 3.3V-only RX pin.

Variants

The R307, AS608, and FPM10A are largely interchangeable at the software level since they all speak the same command set popularized by the Adafruit fingerprint sensor library — pick whichever is cheapest or fastest to ship, and double check the baud rate in your code if switching between them.

VariantProtocolPrice
R307 (JST cable, TTL UART)UART~$8-15
AS608UART~$7-13
FPM10AUART~$6-10

Board Integration

Library

Adafruit Fingerprint Sensor Library by Adafruit

Search "Adafruit Fingerprint" in Library Manager (Sketch > Include Library > Manage Libraries)

Wiring

Component pinArduino Uno pinNote
VCC5V
GNDGND
TXD2 (Arduino RX via SoftwareSerial)
RXD3 (Arduino TX via SoftwareSerial)

Example code

C++

This assumes fingerprints have already been enrolled — enrollment is a separate multi-step process (the Adafruit library's example sketches include a ready-made enroll sketch, worth running once before this matching code). Default baud is 57600, not the more common 9600.

View full Arduino Uno guide

Related