912|3

1046

帖子

3

资源

纯净的硅(中级)

【NUCLEO-L552ZE测评】+蓝牙通讯的实验(2) [复制链接]

    首次接触蓝牙模块,对蓝牙模块的操作还非常陌生,自从上旬通过串口调试助手连接蓝牙模块进行操作练习之后,一直尝试通过单片机来操作蓝牙模块,经过十多天的摸索和测试,今天总算有了结果,通过单片机连接主蓝牙模块、电脑的串口调试助手连接从蓝牙模块,从蓝牙模块初步成功地接收到了主蓝牙模块发送的信息。下图为测试过程的照片:

BLE_22.jpg

    这是从串口调试助手上观察从蓝牙模块接收到的数据信息,:

BLE_21.jpg

 

BLE_20.jpg

    下面是单片机中搜索从设备的函数:

void BT05_Init(void)
{
	uint8_t ReceSize;
	
	printf("AT\r\n");

    while(!__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE));
    HAL_UART_Receive(&huart2,aBT_Buff,64,1000);
/*
    LCD_write_ASCII(0,3,1,(uint8_t *)"BT05=");
	LCD_write_ASCII(30,3,1,aBT_Buff);
    BT_display();
*/  
    if(aBT_Buff[0] == 0x4F){	  //蓝牙模块有回应,开始设置
    	printf("AT+INQ\r\n");
        while(!__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE));
        HAL_UART_Receive(&huart2,aBT_Buff,64,1000); //接收蓝牙返回的信息

//        LCD_write_ASCII(30,4,1,aBT_Buff);
//        BT_display();
        BT_Mode = 10;            //设置搜索成功标志
//        printf("AT+CONN1\r\n");
		LCD_write_ASCII(100,5,1,(uint8_t *)"BT05_Init OK!  ");
	}
	else{                                     //蓝牙模块无回应
        LCD_write_ASCII(100,5,1,(uint8_t *)"BT05_Init Fail!");
	}
}

 

    这是向从蓝牙设备发送信息的函数,因为尚在测试过程,这个函数中仅对搜索到的第一个设备进行连接操作:

/************************************************************
* 发送命令到蓝牙设备
* 进入参数:
*  ID     搜索列表中的设备号
*  OnOff  0=关闭命令、1=打开命令
* 返回参数:无
*************************************************************/
void BT05_Handler(uint8_t ID, uint8_t OnOff)
{
    printf("AT+CONN1\r\n");
//    while(!__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE));
//    HAL_UART_Receive(&huart2,aBT_Buff,64,1000);     //接收蓝牙返回的信息
//	LCD_write_ASCII(30,4,1,aBT_Buff);
//    BT_display();
	if(OnOff)
		printf("The Light On!\r\n");
	else
		printf("The Light OFF!\r\n");
}

 

    之所以说是初步成功,是因为在测试过程中多次出现了单片机死循环现象,复位重启都不能解决,必须对蓝牙模块断电重启才行。另外两个蓝牙模块连接是简单通讯,还未涉及到绑定操作,实际应用时应该绑定MAC,防止其他设备的干扰。

 

 

此帖出自stm32/stm8论坛

赞赏

1

查看全部赞赏


回复

1986

帖子

3

资源

版主

你那个问题解决了吗?

点评

    谢谢版主关心,已经初步解决了,应该是调用接收函数的时间太早了,添加了一个while循环等待就解决了。  详情 回复 发表于 2021-1-22 09:19

回复

1046

帖子

3

资源

纯净的硅(中级)

w494143467 发表于 2021-1-21 20:33 你那个问题解决了吗?

    谢谢版主关心,已经初步解决了,应该是调用接收函数的时间太早了,添加了一个while循环等待就解决了。

点评

好嘞!  详情 回复 发表于 2021-1-22 09:21

回复

1986

帖子

3

资源

版主

hujj 发表于 2021-1-22 09:19     谢谢版主关心,已经初步解决了,应该是调用接收函数的时间太早了,添加了一个while循环等 ...

好嘞!


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表