怎样去设计一种基于RT-Thread的智能指纹门锁?

描述

W600-RT-Thread智能指纹门锁

硬件电路

APP项目

1.1 项目简介

主控芯片使用W600的TW-03 WIFI模组,指纹识别使用FPC1020A,这里开门使用MG996R舵机拉开门锁。W600运行RT-Thread操作系统并连接OneNET进行数据交互。

●使用W600嵌入式WiFi芯片

●使用FPC1020A电容式指纹识别模块

●支持指纹识别开门

●支持NEC红外遥控开门

●支持OneNET远程开门

●支持oneshot web配网

●OneNET查看开门状态和记录开门方式和自定义id

●网络自动检测保持连接状态

●安卓APP控制开门和查看历史记录

1.2 硬件电路

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

硬件项目地址

WiFi芯片

表1

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

1.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等。

1.4 代码

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

WiFi芯片

图2

WiFi芯片

表2

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

1.5 OneNET

1.5.1 创建项目

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

WiFi芯片

图3

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

WiFi芯片

图4

1.5.2 获取连接参数

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

●产品ID

●Master-APIkey

●设备注册码

WiFi芯片

图5

WiFi芯片

图6

1.5.3 配置RT-Thread

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

WiFi芯片

图7

这里为了方便可直接修改rtconfig.h。

如果需要继续开发本项目请使用env工具修改这三个参数,env工具使用方法参考[Env用户手册]。

1.5.4 数据流

设备上传了两个数据流:

●门开关状态

●历史开门方式

进入设备详情查看。

WiFi芯片

图8

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

历史开门记录由type和id组成,type类型定义在applicationsuser_def.h中。

 

enum {IR_MSG = 1, FP_MSG, REMOTE_MSG};

 

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

1.5.5 开门测试

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

WiFi芯片

图9

开门数据格式为:

 

{"opendoor":id}

 

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

验证开门标识代码在applicationsonenet_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);
    .....
}

 

1.6 APP

APP项目:

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

WiFi芯片

图10

注:如果需要其他方式接入OneNET进行控制,请参考[OneNET文档中心](https://open.iot.10086.cn/doc/multiprotocol)进行开发。

二 RT-Thread项目编译指南

2.1 RT-Thread简介

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

2.3 环境搭建

2.3.1 编译环境搭建

●Keil MDK

●下载W60x_RT-Thread SDK源码:GitHub

2.3.2 工程目录介绍

W60X SDK的目录结构如11所示:

WiFi芯片

图11 

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

2.4 编译烧录

2.4.1 编译

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

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

WiFi芯片

图12

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

WiFi芯片

图13

2.4.2 烧录

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

WiFi芯片

图14

注意:

1.本项目使用W600芯片,FLASH为1M版本,选择rtthread_layout_1M.FLS烧录。

2.其它烧录问题请参考:[W600固件烧录指南]。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分