本系统主要由单片机、GSM短信模块、RFID读写卡模块、OLED显示模块和舵机组成。首先,其具备IC卡读写功能,用户无需佩戴钥匙只需刷卡就可以实现开门功能,且支持录入卡功能。其次,借助最可靠、最成熟的GSM移动网络,以最直观的中文短消息或电话形式,直接控制开门动作或者拨号报警。它采用矩阵键盘进行输入密码、录入、删除、和修改密码功能,亦是一个电子密码锁。
目录
1.引言
2.主要功能
3.设计原理
3.1 单片机
3.2RFID模块
(4)基本指令
3.3 GSM模块
3.4OLED模块
4.硬件设计
5.软件设计
5.1设计框图
5.2设计思想
6.测试与分析
6.1 下载测试
6.2 关于用万用表测量虚焊与短接的办法
随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。另外,如:宾馆、办公大楼、仓库、保险柜等,由于装修施工等人住时也要把原有的锁胆更换,况且钥匙随身携带也诸多便。随着单片机的问世,出现了带微处理器的智能锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能。从而使密码锁具有很高的安全性、可靠性。目前西方发达国家已经大量应用智能门禁系统,可以通过多种的更加安全更加方便可靠的方法来实现大门的管理。但智能门禁系统在我国的应用还不广泛,成本还很高,希望通过不断地努力使电智能门禁系统能够在我国及居民日常生活中得到广泛应用,这也是一个国家生活水平的体现。
很多行业的许多地方都要用到门禁,随着人们生活水平的提高,如何实现家庭或公司的防盗这一问题也变的尤其突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,再者,普通密码锁的密码容易被多次试探而破译,所以,考虑到单片机的优越性,一种基于单片机的智能门禁系统应运而生。智能门禁系统由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲睐。
设计本课题时构思的方案:采用以STM32F103C8T6为核心的单片机控制方案;防止因门禁卡遗失而产生的安全隐患;能防止多次试探而不被破译,从而有效地克服了现实生活中存在的许多缺点。
(1)具有读卡功能,读卡时蜂鸣器响并且OLED屏上具有相应显示。
(2)实现识别卡并判断相应卡号开门的功能,显示有效与无效卡。
(3)开门动作由舵机实现。
(4)具有输入密码开门的功能。
(5)共有六位密码,每位取值范围1~16。
(6)用户可以自行设定和修改密码。
(7)OLED屏上显示输入密码位数以及密码错误提示。
(8)具有录入新卡功能,录入后可刷卡开门。
(9)具有删除旧卡功能,删除后无法刷卡开门。
(10)刷卡或输入密码错误次数总和超过四次,系统拨号报警。
(11)系统拨号后进入锁定状态,只能通过短信解锁。
(12)具备接收特定短信开锁的功能。
(13)具有复位功能,使其恢复出厂设置。
本系统采用STM32F103C8T6核心板作为控制核心,其核心板原理图如下图
本系统使用的RFID读写卡模块为PN532,PN532是一个高度集成的传输模块,在13.56 MHz的非接触式通信中,包括基于80C51核心的微控制器功能,有40 k字节的ROM和1 kb的RAM。PN532结合了一种调制和解调概念,完全集成到不同类型的非接触式通信方法和协议,在13.56 MHz,为不同的支持模式和所需的主机控制器接口。
嵌入式固件和内部硬件支持对不同接口的主机控制器协议的处理(PC、移动基础-带宽CPU、PDA CPU)
例如:
•I2C
•SPI,在LowVbat中使用PN532需要特定的硬件实现
•UART(HSU)。
(2)模块特点
1、工作在NFC模式或RFID读写模式
2、RFID读写模式支持:
mifare 1k, 4k, Ultralight和DesFire卡
iso /IEC 14443-4卡如CD97BX, CD灯,DesFire, P5CNO72 (SMX)
Innovision Jewel卡如IRT5001卡
felica卡如RCS_860和RCS_854
3、即插即用,Arduino兼容
4、内置PCB天线,通信距离4cm~6cm
5、板上电平转换器标准5V TTL 12C和UART, 3.3V TTL SPI
6、作为射频识别读写器
7、作为1443-A卡或虚拟卡工作
(3)配置模式
PN532有3种可能的模式,可以通过使用两个GPIO口在IC复位阶段选择:
(1)标准模式
(2)PN512模拟模式
(3)RFfieldON模式
本系统采用的是RFID模块与MCU串口进行通信,MCU作为主机控制PN532模块对IC卡进行读写。以下是MCU发送给PN532的几条基础指令:
唤醒:55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 fd d4 14 01 17 00
读取UID:00 00 ff 04 fc d4 4a 01 00 e1 00
验证keyA:00 00 ff 0f f1 d4 40 01 60 03 ff ff ff ff ff ff 94 8a 3b 0b 2a 00
由于GA6模块 内嵌高可靠性的GSM 引擎(GSM Cellular Engine)和单片机系统,标准串行接口和精简的软件接口协议将用户从繁杂的GSM 通信标准解析和调试中解脱出来,使用方便,而且公网的数据传输具有通信范围广(GSM 网络基本覆盖全国),传输稳定、可靠等特点。因此本设计选用GA6模块来进行通信。
模块功能:
a.收发短信;
b.借助短信实现远程小批量数据传输;
c.语音通话(GSM 电话);
d.数传模式实现无线实时数据通信;
e.无线上网(自动应答型)。
模块接口:
模块要求5V供电,与计算机或单片机通过串口通信,波特率115200bps,通过SIM卡座来安装SIM卡。
协议:
该模块采用“AT”指令进行通信,所有AT命令行必须以“AT”或“at”作为开头,以回车(
AT命令 |
语法格式 |
功能说明 |
测试命令 |
AT+CXXX=? |
该命令用于查询设置命令或内部程序设置的参数及其参数值范围 |
查询命令 |
AT+CXXX? |
该命令用于查询参数的当前值 |
设置命令 |
AT+CXXX=<…>,[<…>] |
该命令用于设置用户自定义的参数值 |
执行命令 |
AT+CXXX |
该命令用于读出GSM模块内部程序所控制的不可变参数 |
AT命令语法说明:
方括号([])中的值为可缺省值。
选配参数和必配参数必须在操作的参数范围内进行设置并按规定的顺序排列,各参数间必
须使用逗号隔开。
举例:AT+CPWD=
定义的设备锁定功能设置新的密码。
如果参数是字符串(例如:
举例:“12345”,“CMNET”等,双引号中的各项符号可看作是字符串
命令的可选子参数或TA返回结果的可选部分位于方括号中
不使用双引号时,字符串中各字符间的空格可忽略不计
实际操作中,<>,[]不必输入
所有AT命令本身不区分大小写,但其参数对大小写敏感
模块介绍:
OLED,即有机发光二极管( Organic Light Emitting Diode)。 OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示OLED 效果要来得好一些。以目前的技术,OLED 的尺寸还难以大型化,但是分辨率确可以做到很高。在此我们使用的是中景园电子的0.96 寸OLED 显示屏,该屏有以下特点:
1)0.96 寸OLED 有黄蓝,白,蓝三种颜色可选;其中黄蓝是屏上1/4 部分为黄光,下3/4 为蓝;而且是固定区域显示固定颜色,颜色和显示区域均不能修改;白光则为纯白,也就是黑底白字;蓝色则为纯蓝,也就是黑底蓝字。
2)分辨率为128*64
3)多种接口方式;OLED 裸屏总共种接口包括:6800、8080 两种并行接口方式、3 线或 4 线的串行SPI 接口方式、 IIC 接口方式(只需要 2 根线就可以控制 OLED 了!),这五种接口是通过屏上的BS0~BS2 来配置的。
4)中景园电子的本屏开发了两种接口的Demo 板,接口分别为七针的SPI/IIC 兼容模块,四针的IIC 模块。两种模块都很方便使用;希望大家根据实际需求来选择不同的模块。
驱动IC:
本屏所用的驱动IC 为SSD1306;其具有内部升压功能;所以在设计的时候不需要再专一设计升压电路;当然了本屏也可以选用外部升压,具体的请详查数据手册。SSD1306 的每页包含了128 个字节,总共 8 页,这样刚好是 128*64 的点阵大小。这点与1.3 寸OLED 驱动IC SSD1106稍有不同,SSD1106 每页是132 个字节,也是8 页。所以在用0.96 寸OLED 移植1.3 寸OLED 程序的时候需要将0.96 寸的显示地址向右偏移2,这样显示就正常了;否则在用1.3 寸的时候1.3寸屏右边会有4 个像素点宽度显示不正常或是全白,这点大家注意一下。其它的SSD1306 和SSD1106 区别不大。
接口:
四针iic 接口相对比较简单一些,只有两个信号线
1. GND 电源地
2. VCC 电源正(3~5.5V)
3. SCL OLED 的D0 脚,在IIC 通信中为时钟管脚
4. SDA OLED 的D1 脚,在IIC 通信中为数据管脚
整个系统以STM32最小系统板为核心,通过串口2控制RFID模块的读写;通过串口1驱动GSM模块;由IIC接口发送数据给OLED显示模块;由PC13脚控制舵机转动的角度;PC14引脚驱动蜂鸣器报警。PA5~PA8、PB12~PB15控制矩阵键盘行列的扫描。电源采用的是DC005电源接口,5V2A的可充电锂电池。以上电路均在万能板上完成。
接线关系:
GA6模块:
5V----------VCC
A3----------UTX
A2----------URX
G-----------GND
PN532模块:
VCC-------3.3V
G------------G
SDA--------A10
SCL--------A9
OLED模块:
GND-------G
VCC-------3.3V
SCL--------B6
SDA--------B7
矩阵键盘:
C4----------A5
C3----------A6
C2----------A7
C1----------A8
R4----------B12
R3----------B13
R2----------B14
R1----------B15
舵机:
VCC-------5V
DATA-----C13
GND------GND
蜂鸣器:
VCC------5V
GND------C14
系统框图:
软件任务分析环节是为软件设计做一个总体规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能(如计算、显示、输出控制和通信等);另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方法各有特色;执行软件的设计偏重算法效率,与硬件关系密切,千变万化;监控软件着眼全局,主要处理人机关系,特点是逻辑严密、千头万绪。
本设计要完成的软件任务主要有:一是键盘输入的识别;二是OLED的显示;三是密码的比较、修改、存储;四是报警和开锁控制电平的输出;五是RFID卡的读取和比较;六是GSM模块的接收短信和拨号的。
根据以上任务,结合硬件结构,可以将键盘输入的识别用来作为系统的监控程序(主程序),用显示程序来延时,不断查询键盘。如果有键按下,就得到相应的键值。结合当前系统所处的状态,调用不同的操作模块,实现相应的功能。而执行模块主要有数字输入模块、确定键模块、修改键模块、显示模块及报警模块。
方法如下:将万用表调至蜂鸣档,再用红黑表笔连接线路,如果万用表发出蜂鸣声,则说明电路接通;如果没有蜂鸣声,则说明该线路存在虚焊,要重新焊接。在两条线路中,如果本没有串联的两条线路在连接了电表表笔时发出了蜂鸣声,则说明两条线路已经短接,要加以调整。
代码在评论区给出