此项目是我为人代做的项目,现在给大家讲解一下原理。
客户的要求是主机设置AS608指纹识别模块,从机设置按键与LED。从机按下按键,主机开启录指纹模式,手指放上之后自动将指纹录入指纹库,同时LED闪烁一次;主机在刷指纹时,如果指纹正确,从机的LED常亮5s,如果不正确,则不亮。使用HC-05蓝牙模块进行主从机的通信。
首先介绍如何配置HC-05自动配对连接:这是我用的模块
这种模块进入AT模式有两种方式,一种是EN脚接高电平,另一种是按住正面的按键。有的模块没有正面的按键,所以只能通过EN脚拉高进入AT模式。
使用USB TO TTL模块对模块进行配置
AT模式波特率38400,但是有的不是这个波特率,像正点原子的HC-05模块AT模式波特率是9600,但是配置完后进入正常通信模式,波特率都是38400,这时候EN脚悬空(就是把线拔下来)或者松开按键,不要在配置程序的时候弄错了。
再就是通过模块上的灯判断模式,快速闪烁是没有配对,一秒闪烁一次是AT模式,两秒一次是配对模式
配置步骤
1、 [AT模式]两个蓝牙模块的EN接VCC,或者按住按键,上电后即进入AT指令模式,都用USB转TTL模块连接到电脑的USB接口。(笔者这里是蓝牙模块的EN连接3.3V)
2、[打开串口调试助手]开启2个串口调试窗口,一个打开蓝牙A的COM3口,一个打开蓝牙B的COM7口。(默认波特率一般为38400,数据位为8,停止位为1)
4、[设置A配对码]串口调试助手A,配置蓝牙A的配对码:AT+PSWD=1234\r\n,(蓝牙A与蓝牙B的配对码相同,这样才能成功配对)
5、[设置A主模式]串口调试助手A,将蓝牙A配置为主机模式:AT+ROLE=1\r\n
6、[恢复B默认设置]串口调试助手B,将蓝牙B恢复默认设置:AT+ORGL\r\n
7、[设置B配对码]串口调试助手B,配置蓝牙B的配对码与蓝牙A一致:AT+PSWD=1234\r\n
8、[设置B从模式]串口调试助手B,将蓝牙B配置为从机模式:AT+ROLE=0\r\n
9、[查询B地址]串口调试助手B,查询蓝牙B的地址:AT+ADDR?\r\n (如:+ADDR:98d3:37:90efca)
10、[蓝牙A绑定蓝牙B]串口调试助手A,蓝牙A绑定蓝牙B地址: AT+BIND=21,13,13971\r\n(注意把地址的冒号换成逗号)
11、[常规工作模式]2个模块的EN引脚都接地或悬空,重新上电后进入常规工作模式,自动完成配对。之后,串口调试助手A和串口调试助手B就能互传数据了。(笔者这里是直接将EN脚置空)
配置完蓝牙之后,只要把蓝牙跟单片机的串口1连接上,就可以按照平时用串口的方法进行通信了,剩下的也就简单了
我把和最重要的代码粘过来大家看一下
主机
while(1)
{
if(USART_RX_BUF[0] == 0x02)
{
Add_FR(); //录指纹
}
if(PS_Sta) //检测PS_Sta状态,如果有手指按下
{
press_FR();//刷指纹
}
}
从机
while(1)
{
if(WK_UP == 1)
{
delay_ms(150);
//printf("OK\r\n");
LED0 = 0;
USART_SendData(USART1, 0x02);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
USART_RX_STA=0;
delay_ms(500);
}
if(USART_RX_BUF[0] == 0x01)
{
LED0 = 0;
delay_ms(1000);
}
USART_RX_BUF[0]=0x00;
USART_RX_STA=0;
LED0 = 1;
delay_ms(1000);
}
怎么样,是不是不难,硬件的连接我也发一下
主机
从机
按键;PA0
LED:PB5
至此,教程结束,谢谢大家,也欢迎大家关注我的个人技术与资源分享公众号“linkutures”