2019年校级大学生创新训练项目(CX2019189);获得“广东省大学生电子设计竞赛”-2020年“5G-AI”专题广东省一等奖
作者简介:梁友槟(1999—),男,主要是做 FPGA 异构加速与嵌入式开发的学习。
摘要:随着物联网时代的来临,慢慢的变多的智能设备走进人们的生活,万物互联将会是将来发展的大趋势。随着90后与00后的成长,人们对智能设备的接受程度将极大的提升,智能家居的普及率将迎来一波新浪潮。而智能锁作为智能家居的一大切入点,将对人们接受智能家居产品起到及其重要的作用。但是,目前市场上智能锁的多种开锁方式导致其价格居高不下,传统钥匙开锁的保留也导致其机械结构更复杂[3]。但实际上使用智能锁的用户几乎已不会再使用钥匙开锁的方式。因此研发一款超高的性价比的智能锁具备极其重大意义。本文基于NB-IoT通信方式,以STM32L431RC作为主控MCU设计了一款密码开锁,手机APP开锁两种开锁方式的智能门锁。
本文系统主控芯片为STM32L431 单片机,实现门锁系统的整体控制及信息交互。本文系统的三大功能模块分别为基于NB-IoT 通信方式的移动端远程监测控制功能和基于4×4 矩阵键盘的密码开锁功能模块,以及基于JR6001 语音控制芯片的语音播报功能模块。系统硬件组成如图1 所示。基本结构必不可少,锁体结构设计主要通过控制微舵机的转动驱动锁体的开关。为保证总系统的完善性,本系统分别有电源模块保证总系统的正常供电从而稳定运行,基于OLED12864 液晶显示屏模块用于人机交互,提升用户的使用体验。用户可使用电子设备,电脑等移动电子设备或通过矩阵键盘输入正确的密码进行身份验证与系统交互,获得权限后可对门锁来控制或使用修改密码等服务。
电源控制模块是基于RT8059GJ5 的高效率DC-DC转换器设计的,适用于由单一锂电池供电的电子设备,且其输出电压从2.8 V 至VIN 可调,为STM32L431 单片机机器外延电路提供稳定的直流电,保证系统的正常运作。不同模块对于供电电压有不同的需求,因此在硬件电路设计上使用大容量5 V 锂电池外部输入供电,再经稳压芯片RT8059GJ5 转换为3.3 V 的电压[4]。电源控制模块电路如图2 所示。输出的3.3 V 电压作为按键解锁模块的稳定供电,输入的5 V 电压同时为JR6001 语音控制模块的语音播报模块的供电系统,输出的3.3 V 电压作为主控芯片STM32L431、基于LED12864 的显示模块以及微舵机驱动电路的供电系统。当EN 脚位为低电位时,进入关机模式,消耗电流小于0.1 μA。
微舵机驱动锁体模块主要由SG90 舵机和基本锁体组成如图3 所示。舵机控制线的输入是一个宽度可调的周期性方波脉冲信号,当方波的脉冲宽度改变时,舵机的转动角度就会发生改变。SG90 舵机的转动角度与脉冲宽度成正比。因此,用STM32L431 单片机通过PWM 控制方式控制舵机的转动角度,从而带动锁体的转动完成开关锁的基本操作。
OLED 液晶屏显示模块主要由一块0.96 英寸(注:1 英寸=2.54 cm)的OLED12864 组成,由于其较小的尺寸和比较高的分辨率,让它有很好的显示效果和便携性。OLED 内部集成OLED 液晶显示屏、SSH1106 驱动模块和偏置电压产生电路,单片机可通过IIC 协议控制其显示对应的内容。利用中文字库和图形库,可配合STM32L431 单片机,使其显示任意的内容,构成友好的人机交互界面,即STM32L431 通过SDA 和SCL 两条控制线对OLED 显示屏显示对应的英文、汉字或图形。OLED12864 显示电路如图4 所示。其主要的设计目的是指导用户和门锁系统更好地进行人机交互。
本文系统的采用的NB-IoT 通信模组为上海移远通信技术股份有限公司(Quectel)的BC35-G 系列。NB-IoT 通信模组指的是将Baseband(基带)芯片,RF芯片和NB-IoT 协议栈等组合在一块PCB 上,并且向外提供硬件管脚和软件接口的模组。在目前NB-IoT 通信模组的市场上,应用较为广泛的是移远通信的BC95和BC35-G 两大系列。BC35-G 系列是BC-95 系列的增强型,优化了定位、移动性、功耗、数据传输速率等模组性能,并且增强了系统的安全性。此外,BC35-G尺寸小巧,功耗极低,工作时候的温度范围极宽,被认为是IoT 应用领域的理想选择,常被用于远程抄表、智慧城市、智能路灯、农业和环境监视测定等领域[2],用以提供完善的短信和数据传输服务。因此,本文系统选用移远通信的BC35-G 系列的通信模组。BC35-G 模组可通过AT 命令控制,AT 命令作为一种接口标准,他有确定的命令格式与相应的返回值。AT 命令的命令集一般都是以AT起始,以回车键结束。无论AT 命令能否成功执行,都应有相应的返回值。使用软件对STM32L431 进行编程,设置串口通信波特率为9600 bit/s,STM32L431 通过发送AT 命令,可以很容易地对BC35-G 模组进行控制。
按键解锁模块用于密码输入、密码修改等,采用4×4 矩阵行列式键盘。4×4 矩阵键盘有4 行4 列按键,使用STM32L431 的8 个I/O 口分别连接键盘的行线和列线,通过检验测试电平变化,判断是哪个按键按下。16 个键值分别是0、1、2、3、4、5、6、7、8、9、*、#、A、B、C、D。STM32L431 读出输入的4 位键值,与提前储存在EEPROM 中的密码进行匹配,匹配成功后单片机驱动微舵机控制门锁的打开。具体使用方式为先输入“#”进入密码输入模式,输入4 位密码后在按“#”结束,密码正确或错误都将有语音提示,正确即可打开门锁,修改密码的方法为先输入“*”进入密码修改模式,修改密码需要先输入正确的密码后再输入需要修改的密码,修改成功后新密码将覆盖原密码储存进EEPROM 中且会有语音提示。键值输入的过程也会通过OLED12864 进行有关显示。
语音播报模块用于人机交互,对用户的相关操作进行语音提示,同时在用户关锁时进行语音提醒。本文系统采用的语音控制芯片为JR6001 语音模块,该模块支持MP3、WAV 高品质音频格式,声音优美,24 位DAC输出,动态范围支持90 dB,信噪比85 dB,支持AT 命令控制,控制方式简单,同时支持USB 更新语音文件,可轻松对存储芯片中的语音进行更新。
NB-IoT 智能锁终端使用C 语言编写开发程序,并且在Keil uVision5 下进行编译和调试。Keil uVision5窗口管理系统的灵活性很好。本文系统采用的开发软件是Keil MDK-ARM,它的编译器和调试工具均与ARM器件实现了最完美的匹配。通过Keil uVision5 开发环境支持的硬件调试器,研发人员可以方便地访问被调试处理器的所有外围设备,通过STLINK-V2 还可以直接烧录下载程序。
软件的实现主要为完成模组初始化、参数设置、BC35-G 初始化检查与数据收发等工作。软件执行流程如图5 所示。系统上电后,首先初始化终端模块;初始化完成后,调试软件工作参数,如IP 地址、端口号及模块频率等;参数设置完成后,检查BC35-G 模组的初始化状态,如网络信号、信号信息等。当检查完成后,即可与基站进行数据传输。通过执行AT(Attention)命令,门锁终端对BC35-G 进行操控。程序主要实现的功能是以华为云IoT 服务器为媒介,移动端设备发送信息给华为云IoT 云服务器,服务器接收到信息后发送相应的信息给NB-IoT 模块,NB-IoT 模块接收信息后发送给STM32L431 单片机,单片机根据接收到的指定的信息运行指定的程序。软件工作流程图如图6 所示。通过华为云物联网平台集成开发,可以将门锁终端、华为云IoT 服务器平台和移动端APP 三部分进行连接,轻易实现移动电子设备对门锁的控制。
针对传统门锁系统存在的弊端以及智能家居设备走进我们正常的生活的时代发展背景,本文设计了一款以STM32L431 为主控芯片,以基于NB-IoT 通信方式的移动端远程控制和密码按键为解锁模式的智能锁系统。该系统还包括由NB-IoT 通信模块、基于4×4 矩阵键盘的密码解锁模块、基于JR6001 语音控制芯片的语音播报模块、微舵机SG90 驱动锁体结构模块,以及基于RT8059GJ5 高效率DC-DC 转换器的电源电压适配模块、OLED12864 显示模块组成的硬件系统,通过软件编程对硬件系统实施控制,最终实现智能解锁等基本功能。通过实际验证,本系统能满足实际应用中对门锁准确率的要求,同时为用户所带来了良好的体验。智能锁整体结构如图7 所示。
[2] 胡栋辉.基于MSA和NB-IoT的高校寝室智能锁系统的设计与实现[D].安徽大学,2020.