灵动微MM32W系列低功耗MCU智能锁的解决方案

今日头条

1142人已加入

描述

智能锁方案中使用到灵动微MM32W系列低功耗MCU,配合手机通过APP读取智能锁蓝牙信息,尝试配对,配对成功即可正常通讯,手机APP通过蓝牙把指令发送给智能锁进行解锁,整个流程简单可靠,该方案将彻底告别传统钥匙开锁。蓝牙智能锁安全便捷,符合用户的需求,可应用的日常场景广泛,例如:门锁(家门、仓库门、货车门等);车锁(电动车锁、自行车锁、摩托车锁等);私人箱柜锁(抽屉锁、更衣柜、旅行箱、工具箱等)。接下来灵动微总代理英尚微给大家介绍一个使用场景非常丰富的蓝牙应用方案——基于MM32W系列开发的蓝牙智能锁方案。

本方案基于MM32BLE_TestBoard进行测试验证,搭配上一颗微型的双向直流马达作为开锁方式的载体,这里只用马达驱动开锁,关锁默认为手动操作,用户可以通过手机APP来操作开锁。在硬件原理上,本方案使用到的DC马达是通过一颗专用的IC芯片来驱动,其控制引脚连接到MCU的PD2和PD3,通过控制两个IO的电平可以对马达进行不同运动状态的操作;使用PB1连接到绿色LED指示灯,可作为蓝牙连接状态的指示;模拟锁体状态功能引脚PA1配置为上拉输入,低功耗唤醒引脚选择PA0配置为上拉输入;蓝牙相关的功能引脚与前面介绍的方案一致,此处不做过多展开。以下为DC马达驱动原理图:

mcu

软件资源如下:

结合上述使用到的硬件资源,下面我们着重介绍软件实现流程以及相关配置代码。由于本应用方案ble蓝牙芯片与APP建立连接过程中需要应用到配对的功能,利用蓝牙库的接口函数可以实现,这里将配对秘钥设置为“123456”,在连接时候需要设置正确才能配对成功并且连接上;控制DC马达的功能引脚全都配成推挽输出模式,直接连到驱动IC上去,通过改变高低电平组合来控制电机的正反转和启停;另外再对测试和模拟功能的引脚进行配置,从而更为直观地对应用效果的观测和验证,且使能看门狗复位功能来保证蓝牙服务的稳定性能;由于方案应用电池供电对低功耗的需要,本方案低功耗采用STOP模式。

以下为主函数初始化配置内容,主要将所有的外设资源和蓝牙协议栈初始化,并且以中断服务程序的方式运行蓝牙,主函数的循环中主要实现的功能为判断是否进入低功耗模式,并且唤醒后根据接收到的蓝牙数据对DC马达进行不同的操作。

在MOTOR_Proc()处理函数中针对蓝牙接收到的密码数据进行解析,如果与默认设置的4位0-9数字密码完全匹配上则操作解锁,将DC马达按照设定方向控制运转,为了简易验证,模拟一个信号表示解锁成功,这里是通过采集指定IO引脚PA1的输入来实现,采集到输入为高电平那么停止DC马达转动,且清零锁定标志位。

我们在gatt_user_send_notify_data_callback函数中给手机发送数据,该函数属于回调函数,协议栈会在系统允许的时候(异步)回调本函数,该函数被用于蓝牙模块端主动发送是否解锁状态信息给手机APP,函数内部不得增加阻塞代码。

蓝牙协议会周期性回调本UsrProcCallback()函数,无论是在广播状态还是连接状态,在该函数中可以做运行和低功耗模式切换的超时计数,给IrqMcuGotoSleepAndWakeup()来处理是否进入低功耗模式,并且针对获取到的是否连接信息用LED指示灯做不同的状态显示。

手机操作流程如下:使用手机原生蓝牙界面查找设备,找到MM32_Lock后点击进行配对。默认配对密码为123456,配对成功后MM32_LOCK设备自动保存到配对设备列表,以后不需要该步骤;手机打开App,开始搜索BLE设备,选择对应名称(MM32_LOCK)的蓝牙设备并进行配对,等待连接成功。连接成功后会有相应提示,按钮Connect名字会变成Disconnect;

连接成功后,对UUID为fff1的特征值写0x31323334(模拟用户输入密码”1234”),测试板上连接的马达开始转动,执行开锁动作;给PA1输入低电平模拟锁开启完成,UUID为fff2的特征值结果为0表示锁体开启,给PA1输入高电平模拟锁体锁上,UUID为fff2的特征值结果为1表示锁体锁上。这里只用马达驱动开锁,关锁默认为手动操作。

fqj

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

全部0条评论

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

×
20
完善资料,
赚取积分