你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【逢7发帖赢大礼】STM32开发之指纹识别!

[复制链接]
A0dy 发布时间:2026-7-1 18:24

一、硬件介绍

产品特点

使用的是天空星STM32F407开发板,搭载ARM Cortex-M4F内核的STM32F407VET6,最高主频为168MHz,Flash 512KB,SRAM 192KB,板载SPI Flash、Micro SD卡插槽等;

STM32F407VET6

image-20260622181129215.png

主要原理图

image-20260706150834625.png


二、环境搭建

1、下载Arduino IDE

image-20251009205311004.png

2、搭建方法

搭建方法点此查看!!!


三、硬件设备

指纹识别模块(ZW101)

ZW101模块由主动式半导体指纹采集SENSOR和指纹识别处理芯片构成,指纹识别算法芯片采用高性能、低功耗riscv内核,运行360度自适应自学习算法;

image-20260706190258399.png

模块UART默认波特率为57.6Kbps;

(数据格式:8 位数据位,1 位停止位,无校验位)

引脚定义 说明
V_SENSOR 3.3V 触摸供电
TOUCH_OUT 唤醒 IRQ (true:1, flase:0)
VCC 3V3
TX UART_TX(指纹模组->MCU)
RX UART_RX(MCU->指纹模组)
GND GND

实物连接效果

硬件引脚 - - - -
STM32 PB15 PB14 3V3 GND
ZW101模块 TX RX V_SENSOR / VCC GND

image-20260706204557654.png


四、代码编写

效果:通过不同的串口指令,实现指纹录入、指纹匹配、指纹清除等操作功能;并在串口上显示,当前操作的相关信息;

主要相关代码


#include <SoftwareSerial.h>

typedef unsigned short u16;
typedef unsigned int u32;

HardwareSerial Serial1(PA10, PA9);

#define FINGERPRINT_RX PB15
#define FINGERPRINT_TX PB14
bool isInit = false;

SoftwareSerial fingerprintSerial(FINGERPRINT_RX, FINGERPRINT_TX);   // 软件串口

...

void setup()
{
  Serial1.begin(115200);
  fingerprintSerial.begin(57600);   // 模块初始化
  delay(200);
}

void loop()
{
  if(!isInit)
  {
    isInit = true;
    int ret = read_FP_info();
    if(ret == 0){
      Serial1.println("读取模组参数失败!");
    }
    command_use();
  }
  run_command();
  delay(100);
}

void command_use(void)
{
  Serial1.println("------------------------------------------");
  Serial1.println("操作指令说明:");
  Serial1.println("输入 1  -> 录入新指纹");
  Serial1.println("输入 2  -> 识别按压的指纹");
  Serial1.println("输入 3  -> 清空全部指纹库");
  Serial1.println("------------------------------------------");
}

int run_command(void)
{
  if (Serial1.available() > 0)
  {
    String command = Serial1.readStringUntil('\n');
    command.trim();

    if (command == "1")
    {
      Serial1.println("【操作】开始录入指纹,请多次按压手指...");
      if(register_FP()) {
        Serial1.println("录入指纹成功!");
      }else{
        Serial1.println("录入失败,指纹图像模糊或两次纹路不一致");
      }
    }
    else if (command == "2")
    {
      Serial1.println("【操作】开始指纹识别,请放置手指");
      if(search_FP()) {
        Serial1.println("识别成功,库内存在匹配指纹!");
      }else{
        Serial1.println("识别失败,无匹配指纹或采集图像异常");
      }
    }
    else if (command == "3")
    {
      Serial1.println("【操作】清空全部指纹库");
      if(clear_FP_all_lib()) {
        Serial1.println("指纹库清空完成!");
      }else{
        Serial1.println("清空指纹库失败!");
      }
    } else {
      Serial1.print("【错误】未知指令:");
      Serial1.println(command);
    }
  }
  return 0;
}

int read_FP_info(void)
{
  uint8_t response[32] = {0};
  uint8_t index = 0;
  u32 startTime = millis();

  send_cmd(CMD_READ_SYSPARA);

  while (millis() - startTime < 2000)
  {
    if (fingerprintSerial.available())
    {
      response[index++] = fingerprintSerial.read();
      if (index >= 28) break;
    }
  }

  if (index >= 28 && response[9] == 0x00)
  {
    return 1;
  }
  return 0;
}


五、效果演示

分别执行不同的功能指令;

image-20260706212200071.png

1、录入指纹

image-20260706212549627.png

2、指纹匹配

成功匹配时

image-20260706212626515.png

匹配失败时

image-20260706212645191.png

3、清空指纹库

image-20260706212707139.png

收藏 评论0 发布时间:2026-7-1 18:24

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版