找回密码
 立即注册

微信扫码登录

搜索
查看: 1453|回复: 49

[硬件DIY] 【开源】【更新V2】【ESPhome】海凌科 ZW111 指纹识别模组 esphome组件

[复制链接]

69

主题

379

回帖

3988

积分

元老级技术达人

积分
3988
金钱
3510
HASS币
180
发表于 2026-7-2 16:53:08 | 显示全部楼层 |阅读模式
本帖最后由 gasment 于 2026-7-17 15:35 编辑

坛内貌似没有esphome的指纹项目分享,esphome官方支持那几个型号又大又丑,模组管理也不好用。

咬咬牙自己做吧。
选用了海凌科的ZW111,主要是性价比高,样式也好看
首单5块多,还要什么自行车,支持100个指纹录入,3色动态LED
image.png
在和D指导大战3百回合,废了2亿token后,大致把软件跑通了
依旧先上成品。
HA实体没几个,因为我直接做了web管理系统

  • identity按钮用于手动触发验证流程
  • Fingerprint ID返回验证信息
  • Fingerprint Pressed反馈触摸传感器状态
    image.png
    image.png
    image.png
web管理系统演示:
zw111.webp
丝滑的录入流程:
zw111-2.webp



开源项目地址:
游客,如果您要查看本帖隐藏内容请回复

功能基本都实现了,c3、s3上测试跑起来没什么问题,可能有些边界情况,遇到问题可以附上相关串口日志提交issus

项目说明:

ZW111 指纹模组 ESPHome 外部组件(V2)

ESPHome
License

基于 ESPHome 的 ZW111 海凌科指纹模组外部组件,支持指纹录入、验证、删除、批量管理、Web 管理、低功耗睡眠模式等

V2与V1差异:

V1 V2
Web实现 esp_http_server Mongoose 7.22
指纹模组睡眠 基础睡眠 完整唤醒逻辑
ESP深度睡眠优化
VCC使能模式 ESPHome通用组件(switch/output) 专有配置(必须为高电平使能)
触摸传感器 ESPHome通用组件(binary_sensor) 专有配置
  • V2对V1存在破坏性更新,无法从V1迁移到V2

功能特性

核心功能

  • 指纹录入 — 支持多次按压采集,自动合并特征并存储模版,录入过程中伴有实时 GUI 反馈
  • 指纹验证 — 1:N 搜索,匹配时输出备注名或 ID,不匹配时提示"No Match"
  • 指纹删除 — 单条删除、连续 ID 区间删除、清空全部指纹库
  • 备注管理 — 为每个指纹 ID 绑定最多 32 字符的字母/数字备注,NVS持久化存储
  • 自定义配置 — 验证置信度(1-5级)、录入采集次数(1-8次)、禁止重复注册开关
  • 深度睡眠快速启动 — 配合RTC缓存与阶段式初始化,从深度深眠唤醒到模块响应,时间低至1s

组件提供

  • connection_statusbinary_sensor,指纹模组连接状态
  • sensor_check_statusbinary_sensor,传感器校验结果
  • fp_identify_actiontext_sensor,验证结果文本(ID/备注、"No Match"等)
  • identify_buttonbutton,手动触发验证流程
  • sleep_buttonbutton,触发休眠
  • touch_sensor - binary_sensor,触摸传感器状态

Web 管理界面

  • 内建 HTTP 服务器,无需第三方工具组件
  • 支持STA与AP模式下访问
  • Web GU支持指纹管理、备注编辑、系统设置
  • 用户名与密码认证保护,防止无授权访问
  • 移动端友好的自适应布局

硬件接线

模组引脚 脚位 说明 连接 ESP32
V_SENSOR 1 触摸供电(3V3常供电) --
TOUCH_OUT 2 触摸反馈/休眠唤醒 任意可用GPIO
VCC 3 模组供电(休眠) 不需休眠则直连3V3,如需休眠需搭配PMOS电路,控制端连接任意可用GPIO,必须为高电平唤醒
TX 4 UART 发送 任意可用GPIO (RX)
RX 5 UART 接收 任意可用GPIO(TX)
GND 6 --

ScreenShot_2026-07-16_110325_420.png

  • 官方PMOS电路示例
    ScreenShot_2026-07-16_110028_647.png

使用要求

  • esp32及其变体
  • esp-idf框架

安装与使用

  • yaml配置->引入外部组件:

    external_components:
      - source:
          type: git
          url:   #github仓库连接
          ref: v2
        components: [ zw111 ]
  • yaml配置->uart组件

    uart:
      - id: zw111_uart #自定义ID
        tx_pin: GPIOx  #任意可用GPIO
        rx_pin: GPIOx  #任意可用GPIO
        baud_rate: 57600
        data_bits: 8
        stop_bits: 1
        parity: NONE
  • yaml配置->zw111组件

    zw111:
      - id: zw111_fp  #自定义ID
        uart_id: zw111_uart  #对应上方uart ID
        web_port: 8088  #自定义web访问端口
        web_username: admin  #自定义web登录用户
        web_password: admin  #自定义web登录密码
        power_ctl_pin: GPIO10  #VCC供电控制,任意可用GPIO
        touch_sense_pin: GPIO6  #触摸反馈,任意可用GPIO
    
        connection_status:
          id: zw111_connection_status
    
        sensor_check_status:
          id: zw111_sensor_check
    
        fp_identify_action:
          id: zw111_fp_identify_action
    
        identify_button:
          id: zw111_identify_button
    
        sleep_button:
          id: zw111_sleep_button
    
        touch_sensor:
          id: zw111_touch_sensor
          filters:
            - delayed_off: 1000ms
  • yaml配置->自动化示例

    • fp_identify_action 是一个 text_sensor,可以在 YAML 中配置 on_value 触发器:
      fp_identify_action:
        name: "Fingerprint ID"
        id: zw111_identify_action
        on_value:
          then:
             - if:
                condition:
                     lambda: 'return x == "myfinger";'
                then:
                    - switch.toggle: my_switch

LED 指示说明

场景 LED 效果
验证进行中(Identify) 🔵 蓝灯呼吸慢闪
等待按压手指(录入采集) 🔵 蓝灯呼吸慢闪
图像采集成功 🟢 绿灯常亮
验证匹配成功 🟢 绿灯常亮 2s
验证匹配失败 🔴 红灯常亮 2s
录入错误/失败 🔴 红灯快闪 3 次
指纹重复(防重开启) 🔴 红灯快闪 3 次
录入完成 🟢 绿灯常亮 3s → 熄灭

Web 管理页面

访问 http://device_ip:xxxx进入(AP模式默认为[url=http://192.168.4.1:xxxx]http://192.168.4.1:xxxx`[/url]):

  • 指纹管理标签页

    • 100 个 ID 的网格视图,已注册 ID 绿色高亮
    • 分页浏览(每页 16 个)
    • 点击 ID 弹出详情:录入指纹、编辑备注、删除
    • 批量删除:连续 ID 删除 / 全部清空
    • 录入弹窗实时显示进度(采集次数、LED 动画、状态文字)
  • 设置/关于标签页

    • 模块信息展示(型号、版本、厂商、传感器、注册数等)
    • 验证置信度、录入采集次数、禁止重复注册开关

其他说明

数据存储

  • 录入的指纹位于zw111内置Flash,更换主控或清空主控flash,不会丢失已录入的指纹
  • 指纹备注和配置数据存储在主控NVS分区,更换主控或清空主控flash会丢失以上信息
  • 触发sleep睡眠,会在主控的RTC内存写入睡眠标志,用于深度睡眠唤醒时的zw111快速初始化

深度睡眠

  • 必须在deep_sleep.enter前执行sleep_button的button.press,并给予一定时间等待,否则无法使用快速唤醒
    示例:
    script:
      - id: deep_sleep_mode_sequence
        mode: single
        then:
          - button.press: zw111_sleep_button #zw111进入休眠
          - lambda: |-
                    ESP_LOGD("zw111", "zw111 entered sleep mode");
          - delay: 200ms #等待完成            
          - deep_sleep.enter: deep_sleep_main #进入休眠



✅以上




评分

参与人数 3金钱 +50 HASS币 +20 收起 理由
admin + 20 + 20 高手,这是高手!
sorrypqa + 20 感谢楼主分享!
adamjensen + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

0

主题

92

回帖

967

积分

高级会员

积分
967
金钱
875
HASS币
0
发表于 2026-7-2 17:26:24 | 显示全部楼层
看看赞一个
回复

使用道具 举报

6

主题

68

回帖

905

积分

高级会员

积分
905
金钱
831
HASS币
0
发表于 2026-7-2 17:45:09 | 显示全部楼层
把硬件炎搞出来就完美了
回复

使用道具 举报

7

主题

411

回帖

3174

积分

论坛元老

积分
3174
金钱
2756
HASS币
0
发表于 2026-7-2 17:45:27 | 显示全部楼层
感谢分享,这个不错。
回复

使用道具 举报

200

主题

3257

回帖

1万

积分

元老级技术达人

积分
10752
金钱
7280
HASS币
80
发表于 2026-7-2 17:54:55 | 显示全部楼层
2亿token花了多少?看着好吓人,不过现在国产token便宜,这个确实不错,就是在家庭环境中,有什么具体的场景可以应用
回复

使用道具 举报

1

主题

69

回帖

418

积分

中级会员

积分
418
金钱
348
HASS币
0
发表于 2026-7-2 18:21:48 | 显示全部楼层
1·234567890-

回复

使用道具 举报

68

主题

1725

回帖

1万

积分

元老级技术达人

积分
19235
金钱
17432
HASS币
80
发表于 2026-7-2 19:10:54 | 显示全部楼层
不错不错,我要在洗衣机、空调、热水器等设备各安装一个,只有我按了手指纹才能开机.........
回复

使用道具 举报

0

主题

28

回帖

1003

积分

金牌会员

积分
1003
金钱
975
HASS币
0
发表于 2026-7-2 20:07:49 | 显示全部楼层
感谢大佬,又可以抄作业了
回复

使用道具 举报

0

主题

41

回帖

993

积分

高级会员

积分
993
金钱
952
HASS币
0
发表于 2026-7-2 20:22:51 | 显示全部楼层
这也太强了吧!
回复

使用道具 举报

69

主题

379

回帖

3988

积分

元老级技术达人

积分
3988
金钱
3510
HASS币
180
 楼主| 发表于 2026-7-2 20:33:57 | 显示全部楼层
bugensui 发表于 2026-7-2 17:54
2亿token花了多少?看着好吓人,不过现在国产token便宜,这个确实不错,就是在家庭环境中,有什么具体的场 ...

不到30块
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )|网站地图

GMT+8, 2026-7-17 19:24 , Processed in 0.018414 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表