良许Linux教程网 干货合集 基于RT-Thread的智能指纹门锁

基于RT-Thread的智能指纹门锁

一、W600-RT-Thread智能指纹门锁

  • 硬件电路:https://oshwhub.com/hanxiaohu/zhi-wen-men-suo
  • APP项目:https://gitee.com/hanxiaohu/SmartLock-Android

1.项目简介

该项目使用W600的TW-03 WIFI模组作为主控芯片,使用FPC1020A作为指纹识别模块。门锁的开启动作使用MG996R舵机来实现。W600运行RT-Thread操作系统,并通过OneNET连接进行数据交互。

主要特点如下:

  • 集成W600嵌入式WiFi芯片
  • 使用FPC1020A电容式指纹识别模块
  • 支持指纹识别开锁功能
  • 支持NEC红外遥控开锁
  • 支持OneNET远程开锁
  • 支持oneshot web配网功能
  • 通过OneNET可以查看开锁状态和记录开锁方式及自定义id
  • 支持网络自动检测以保持连接状态
  • 提供安卓APP来控制开锁和查看历史记录

2.硬件电路

image-20230826210702563
image-20230826210702563

电路设计使用了立创EDA,项目所有硬件资料在立创开源硬件平台上。

  • 硬件项目地址:https://oshwhub.com/hanxiaohu/zhi-wen-men-suo
模块 描述
TW-03 WIFI模组 W600主控芯片
FPC1020A 电容式指纹识别模块
MG996R舵机 开门装置
霍尔传感器模块 监测门的状态

详细元件清单请看原理图,开门装置请根据实际情况替换,指纹模块的控制和指纹录入请参考FPC1020A SDK里面有详细资料和调试工具,在立创开源硬件平台附件里有FPC1020A SDK和离线版STM32指纹门锁项目全部资料。

3.W600 简介

芯片资料:[W600文档中心] ( https://docs.w600.fun/)

W600是北京联盛德自主研发设计的一款嵌入式WiFi芯片,该系列模块支持标准的802.11 b/g/n 协议,内置完整的 TCP/IP 协议栈。

600_SoC芯片集成 Cortex-M3 内核,内置 Flash,集成射频收发前端 RFTransceiver,CMOS PA 功率放 大器,基带处理器/媒体访问控制,支持SDIO、SPI、UART、GPIO、I²C、PWM、I²S、7816 等接口, 支持多种加解密协议,如 PRNG(Pseudo random Number Generator)/ SHA1/ MD5/ RC4/DES/ 3DES/ AES/ CRC 等。

4.代码

项目环境搭建和编译在 项目编译指南 中介绍 ,这里只是简单介绍项目组成

image-20230826210706743
image-20230826210706743
文件名 描述
wifi_control.c wifi连接和oneshot配网
door_control.c 门状态获取,开门操作,RGBLED指示灯
fpc1020_control.c 指纹模块串口驱动和指纹对比
infrared_control.c NEC红外遥控扫描
onenet_control.c 所有OneNET有关的操作
wdt_control.c 硬件看门狗
main.c main函数

按住WIFI键然后复位可以进入oneshot配网,设备热点名称door_wifi_config,连接ap后打开http://192.168.169.1

5.OneNET

参考资料:[OneNET文档中心] (https://open.iot.10086.cn/doc/multiprotocol)

5.1 创建项目

打开OneNET控制台 进入多协议接入

image-20230826210709279
image-20230826210709279

在MQTT(旧版)页面点击添加产品,设备接入协议确保是MQTT,其他随便填写

image-20230826210711593
image-20230826210711593

5.2 获取连接参数

项目创建成功后需要获取三个参数

  • 产品ID
  • Master-APIkey
  • 设备注册码
image-20230826210714483
image-20230826210714483
image-20230826210717326
image-20230826210717326

5.3 配置RT-Thread

打开rtconfig.h文件将自己的这三个参数粘贴到对应位置image-20230826210721326

这里为了方便可直接修改rtconfig.h
如果需要继续开发本项目请使用env工具修改这三个参数,env工具使用方法参考 Env 用户手册

5.4 数据流

设备上传了两个数据流

  • 门开关状态
  • 历史开门方式

进入设备详情查看image-20230826210724638

开关状态取决于检测开门状态的传感器,这里使用了一个霍尔传感器模块,将一块磁铁安装在门框上,关门时霍尔传感器靠近磁铁,并输出低电平,此时W600读取电平并上传到OneNET

历史开门记录由type和id组成,type类型定义在applications\user_def.h

enum {IR_MSG = 1, FP_MSG, REMOTE_MSG};

红外类型是1,指纹是2,OneNET远程开门是3 、红外id是遥控器nec码,指纹id是模块内存储指纹id,远程id是用户下发的id。

5.5 开门测试

这里可以手动测试远程开门功能

image-20230826210727854
image-20230826210727854

开门数据格式为:

{"opendoor":id}

如果 id != 0 则开门,并上报开门方式和id。

验证开门标识代码在applications\onenet_control.c中,可自行数据格式

static void onenet_cmd_rsp_cb(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size)
{

 int open_id = 0;
 cJSON *root = cJSON_Parse((char *)recv_data); 
 cJSON_item_get_number(root,"opendoor",&open_id);
  
    if (open_id != 0)
    {
        rt_sem_release(&door_open_sem);
    .....
}

6. APP

  • APP项目:https://gitee.com/hanxiaohu/SmartLock-Android

通过安卓APP接入OneNET下发指令控制开门和查看门的开关状态,历史开门记录。

image-20230826210731590
image-20230826210731590

注:如果需要其他方式接入OneNET进行控制,请参考 OneNET文档中心 进行开发


二、RT-Thread项目编译指南

1.RT-Thread 简介

RT-Thread 是一个来自中国的开源物联网操作系统,它具备非常强的可伸缩能力:从一个可以运行在ARM Cortex-M0 芯片上的极小内核,到中等的 ARM Cortex-M3/4/7系统,甚至是运行于 MIPS32、ARM Cortex-A 系列处理器上。RT-Thread项目的源代码托管在 [GitHub repo] (https://github.com/rt-thread) 上。

2.参考资料

  • RT-Thread文档:RT-Thread 文档中心
  • W60x参考文档:W600 文档中心
  • W60x参考资料:正点原子 W601 IoT开发板
  • W60x_RT-Thread源码:GitHub
  • 串口下载工具:串口调试助手

3.环境搭建

3.1编译环境搭建

  • Keil MDK
  • 下载W60x_RT-Thread SDK源码:GitHub

3.2 工程目录介绍

image-20230826210735215
image-20230826210735215

docs文件夹下放着W600_RTT相关的参考文档,建议先阅读 UM3103-RT-Thread-W60X-SDK 快速上手.pdf UM3101-RT-Thread-W60X-SDK开发手册.pdf

4.编译烧录

4.1 编译

将仓库克隆放到工程目录examples文件夹内

进入项目文件夹,双击打开 project.uvprojx工程文件,打开工程后直接编译即可(注意,一定要先搭建好Keil环境)。

image-20230826210738297
image-20230826210738297

固件生成在当前示例所在目录的Bin文件夹下。

image-20230826210740919
image-20230826210740919

4.2 烧录

打开星通智联下载调试软件选择rtthread_layout_1M.FLS烧录,型号可以不选,如果串口没有连接接复位,点击下载后需要手动复位W600。

image-20230826210743559
image-20230826210743559

注意:

  1. 本项目使用W600芯片,FLASH为1M版本,选择rtthread_layout_1M.FLS烧录
  2. 其它烧录问题请参考:[W600固件烧录指南] (https://github.com/w600/docs/blob/master/zh/app/download.md)

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部