基于单片机的蓝牙加密密码锁的设计

2019-01-12 07:29魏平俊胥浩阳
中原工学院学报 2018年6期
关键词:密码锁串口端口

魏平俊, 杨 洁, 胥浩阳

(1.中原工学院 电子信息学院, 河南 郑州 450007; 2.郑州工业应用技术学院 信息工程学院, 河南 新郑 451100)

随着社会的进步和科技的发展,人们的安全意识越来越强,传统的机械锁已不能满足人们的需要。电子密码锁因其操作简单、密码可变、误码保护等特点,成为密码锁的主流产品,并得以迅速推广。但有些产品密码键盘外露,易被破解;有些产品需携带遥控器、卡片等,安全性和易用性较差。蓝牙是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换,并可通过密码算法对数据进行处理,安全性得到极大提升。本文设计了一种蓝牙加密密码锁,系统以STC89C52单片机为主控模块,运用蓝牙技术实现安卓手机和密码锁的通信,在单片机编程的基础上,通过蓝牙地址配对、算法加密、密码校验等技术,实现了随机密码功能。用户只需携带手机即可实现自由密码修改,安全性和便捷性大大提高。

1 系统总体方案

1.1 系统流程

系统包括智能手机端和单片机端。其中,手机端采用安卓系统自带的蓝牙模块;单片机端采用STC公司生产的高性能芯片STC89C52作为中央处理器[1],基于HCI协议层的开发方式,用HC-06蓝牙模块实现密码信息的无线传输。蓝牙模块通信的建立主要分为5个步骤:初始化蓝牙芯片、查询周边蓝牙地址、建立连接、数据传输、断开连接[2]。初始化过程中,通过编写C语言程序,单片机产生6位初始密码信息,通过HC-06蓝牙模块查询周边蓝牙地址,并进行初始化密码的验证,待6位密码配对成功后,建立手机端和单片机端的连接。手机随机设置4位密码信息,通过蓝牙无线信道发送到单片机,单片机接收随机密码信息并存储。开锁时,通过键盘输入密码并与单片机存储器中的密码进行比对,实现密码验证;若密码验证不成功,则通过继电器控制和无源蜂鸣器等作出反馈。系统流程如图1所示。

图1 系统流程

1.2 E0加密算法

由于蓝牙协议是一个公开协议,为保证信息的安全传输,每个蓝牙设备都须具备密钥管理的功能,如加密、解密和破解等。本文采用的E0加密算法是一种作用于链路层的对称的单钥加密算法,加密过程就是将数据流与密钥比特流进行异或运算[3]。

E0算法实现结构如图2所示[4]。它主要包含3个部分:LFSR(线性反馈移位寄存器)、混合器和组合逻辑。混合器中L1、L2表示线性变换网络,可通过异或来实现,Z-1表示延时网络。E0算法的实现过程如下[5]:首先进行初始化,以加密私钥Kc、蓝牙设备地址ADR、时钟信号CL和随机数RAND作为输入,产生有效载荷字(净荷密钥);然后有效载荷字发生器对输入的比特位以适当的形式进行组合,再传送给LFSR,LFSR产生伪随机序列,形成密钥流;最后将密钥流按模二加运算作用于数据流完成加密,若将密文和形成的密钥流再异或即可实现解密。

图2 E0算法实现框图

2 硬件设计

硬件系统主要包括手机、控制电路、电插锁和电源等部分,其结构如图3所示。

图3 硬件系统结构

2.1 控制电路模块设计

控制电路由单片机、液晶显示屏、HC-06蓝牙模块、继电器和无源蜂鸣器模块等组成。电路原理如图4所示。

2.1.1 单片机

单片机采用高性能、低功耗的8位微控制器STC89C52,它具有8 k字节Flash,32位I/O口,具有可在线编程功能[6],可直接使用串口下载、编写和烧录程序实现电路控制。本设计使用了STC89C52单片机的15个I/O口,其中P0为LCD1602数据,P2. 2为电插锁控制端口,P2. 4为蜂鸣器控制端口,P2. 5为读/写端口,P2. 6为液晶数据指令端口,P2. 7为液晶使能端口,P3. 0为RXD接口(接蓝牙的TX端,是单片机串口的接收端),P3. 1为TXD接口(接蓝牙的RX端,是单片机串口的发送端)。

2.1.2 液晶屏

液晶屏采用并行驱动的LCD1602,通过电压控制显示区。开机后打开背光灯,成功连接后显示“enter password:”,每输入一位密码,显示一个“*”,密码输入错误显示“error!try again:”,密码输入正确显示“welcome!!!”。

2.1.3 蓝牙模块

HC-06蓝牙模块支持蓝牙2.0协议标准,采用CSR蓝牙芯片,具有2~3 Mbps的调制度,内置2.4 GHz天线[7],有效距离可以达到10 m,输入电压为3.6~6 V,未配对时电流约为30 mA,配对后约为10 mA,具有标准HCI端口(UART or USB)并采用自适应跳频技术。

2.2 双电源供电系统

采用内置和外接双电源供电系统,如图5所示。Vcc IN为12 V、1 A的电源适配器,BT1为13 V、0.6 A、2 000 mAh的锂电池。当外接电源断开时使用内置电源供电,采用继电器切换,继电器采用T73型12 V电磁式5脚继电器。

图4 控制电路原理图

图5 双电源供电电路图

2.3 电插锁

采用XL03型电磁式电插锁,工作电流为0.6 A,电压为12 V,额定功率为7.5 W,开锁时间为1 s,允许连续通电时间10 s。通过继电器来控制一个D触发器,电流通过,触点断开,开锁;断电时,触点闭合,关锁。

3 软件设计

该系统软件采用上位机和下位机分别编程的方法来实现。上位机利用Eclipse平台,使用Java语言编程,将智能手机设置的随机密码信息通过HC-06模块传输给下位机[8]。

单片机作为下位机,采用Keil平台,使用C语言编程。89C52单片机具有3个16位的定时/计数器,其中,T1、T2都可以用作串口波特率发生器。在本设计中采用T2作为波特率发生器,使用11.059 2 MHz的晶振,其产生的波特率最高且误差较小[9]。采用RS-232C通信标准,8位数据位、1位停止位、无奇偶校验的通信格式。

采用随机编码方式,逐一传输6组密码信息,每组范围为0X00到0XFF,可以表示“0”到“9”的任意数,具有256种变化方式。主要程序如下:

if (RI) //RI接收中断标志

{ RI=0; //清除RI接收中断标志

table3[i]=SBUF-m; /*SUBF为接收/发送缓冲器;m为随机编码种子,若使用ASCII码,m为48*/

i++; }

单片机通过随机编码产生6位密码信息与手机进行地址匹配,匹配成功后接收手机端设置的4位密码,同样采用随机编码方式进行编码并保存在单片机存储芯片中。开锁时,与键盘输入的随机密码信息进行比对,密码正确则开锁。

4 系统调试

4.1 硬件电路调试

硬件电路搭建完成后,暂不通电,先观察焊接情况,看有无虚焊漏焊现象;然后根据电路原理图判断线路连接是否正确;再用万用表检查关键元件的电压、电流是否正常,排除隐患后进行系统调试。

4.2 蓝牙模块调试

采用单片机开发装置调试单片机程序,用蓝牙串口通信助手调试HC-06蓝牙模块[10]。将单片机I/O口的P3.0接HC-06蓝牙模块的TX端,P3.1接蓝牙模块的RX端,给HC-06模块上电,进入AT指令模式;在PC端启动串口调试助手,选择正确的端口和波特率并打开串口,勾选自动发送,在输入框中输入AT指令并回车,回收框中显示OK,则说明串口正常;打开手机的蓝牙,利用串口调试助手查询HC-06蓝牙地址并进行连接,匹配成功后在输入框中输入一个AT命令,若LED灯亮且回收框中显示返回值,则说明HC-06蓝牙模块调试成功,可以与手机及单片机连接进行数据传输。

4.3 报警电路调试

在单片机烧写程序和电路板制作时,电路报警装置提前设置好参数,若输入密码错误,则单片机会驱动报警装置,蜂鸣器做出响应,时间为2 s。若连续5次出现密码输入错误,则蜂鸣器长时间鸣叫,需按下复位键方可停止报警。

5 结 语

本文设计的密码锁,利用蓝牙无线技术进行数据传输,通过加密算法和随机密码的设置,实现了手机对密码的控制,提高了密码锁的安全性和方便性。实验表明,该密码锁具有安全性高、使用方便、价格低廉等特点,可以应用在图像处理设备、安全产品、建筑、家用电器等领域,具有广阔的应用前景。本设计已通过中华人民共和国国家知识产权局审批,被授予实用新型专利权(201420358698X)。

猜你喜欢
密码锁串口端口
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
一种有源二端口网络参数计算方法
一种端口故障的解决方案
浅谈AB PLC串口跟RFID传感器的通讯应用
多按键情况下,单片机端口不足的解决方法
开启密码锁
船舶电子设备串口数据的软件共享方法
数字密码锁的逻辑实现
串口技术的实物调试和虚拟仿真联合教学模式
卫星三端口DC-DC变换器技术综述