5.HC-05蓝牙模块

配置蓝牙模块

注意需要将蓝牙模块接5v,实测接3.3v好像不太好使的样子

首先需要把蓝牙模块通过TTL串口模块接到我们的电脑,然后打开我们的串口助手

注意,我们现在是配置蓝牙模块,所以需要进入AT模式,需要按着蓝牙模块上的黑色小按钮再上电,这时候模块上的LED灯以一秒慢闪一次的速度闪烁着,如果你的LED是快速闪烁的可能就像上面说的一样接到3.3V去了

 连接好后测试一下,波特率默认设置为38400

发送AT,模块会返回一个OK

 我们给蓝牙修改一下名字,输入指令:

AT+NAME=自己想改的名字

例如: AT+NAME =BTtest

注意中间如果有空格的话会报错 

改完后拔掉蓝牙模块再重新上电,这时候不用再按黑色小按钮了,这样就能进去配对连接啦

我们用手机蓝牙调试助手测试一下

在调试助手找到我们的模块后点击右边加号连接

 连接后点击下方对话模式

然后输入内容点击发送

这时候我们的串口助手也能收到 

也可以使用我们的串口助手进行发送

手机也能收到我们串口发过来的信息

这就表明我们的蓝牙模块已经配置成功啦,能插到单片机上进去使用了,将跳线帽接到蓝牙这边

初始化USART3

从原理图我们可以看到,将跳线帽接到蓝牙这边后USART3就变成了蓝牙配置

所以需要找到我们的USART3并配置,可以看到USART的TX和RX分别在PB10和PB11

配置USART基本都是:

RCC开启USART和GPIO的时钟

//使用结构体输出化:

GPIO_Init();

NVIC_Init();

USART_Init();

//开启串口接收中断:

USART_ITConfig();

//上电

USART_Cmd();

void BT_UART3_Init(u32 bound )
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);	//使能USART3
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //GPIOB时钟

	//USART3_TX   GPIOB.10
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB.10
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出
	GPIO_Init(GPIOB, &GPIO_InitStructure);

	//USART3_RX	  GPIOB.11
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//PB.11
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
	GPIO_Init(GPIOB, &GPIO_InitStructure);

	//Usart3 NVIC 配置
	NVIC_InitTypeDef NVIC_InitStructure;
	NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
	NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器
	
	USART_InitTypeDef USART_InitStructure;
	USART_InitStructure.USART_BaudRate = bound;//串口波特率
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
	USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
	USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式
	
	USART_Init(USART3, &USART_InitStructure); //初始化串口3
    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启串口接受中断
    USART_Cmd(USART3, ENABLE);
}

在main.c定义串口3标志位

int g_USART3_FLAG1 = 0; //串口3控制标志位

然后在BT.h里面extern一下

extern int g_USART3_FLAG1; //串口3控制标志位

中断服务函数添加处理

void USART3_IRQHandler(void)
{
	u8 Res;
	if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
	{	
		Res =USART_ReceiveData(USART3); //读取接收到的数据
		if(Res == 'A') g_USART3_FLAG1 = 1 ; //根据接受的数据 置为标志位
		if(Res == 'B')g_USART3_FLAG1 = 2 ;
	}
}

在上一节USART开启串口接收的函数里面把USART3的判断也加一下

//串口接收判断
void Usatr_If(void)
{
		if(g_USART1_FLAG1 ==1 | g_USART3_FLAG1 ==1 )
		{
			if(temp != 'A')
			{
				printf("Is A,LED Open\n");
			}
			temp = 'A';
			LED = RESET;
		}
		if(g_USART1_FLAG1 ==2 | g_USART3_FLAG1 ==2)
		{
			if(temp != 'B')
			{
			printf("Is B,LED Close\n");
			}
			temp = 'B';
			LED = SET;
		}
		if(g_USART1_FLAG1 ==3 | g_USART3_FLAG1 ==3)
		{
			if(temp != 'C')
			{
			printf("Is C,LED Flashing\n");
			}
			temp = 'C';
			LED =!LED;
		}
}

测试

然后在main.c里面测试一下

//开启串口接收
Usatr_If();

//初始化并设置波特率
BT_UART3_Init(115200);

烧录进单片机,程序现象就是:

输入A,串口打印Is A,LED Open,开启LED

输入B,串口打印Is B,LED Close,关闭LED

输入B,串口打印Is C,LED Flashing,闪烁LED

蓝牙模块测试

看log也打印正常,那么就证明蓝牙已经跟单片机调通啦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/550910.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据平台搭建2024(三)

三:HBase安装 提前上传hbase安装包至虚拟机 1 上传、解压 tar -zxvf hbase-2.0.0-alpha2-bin.tar.gz -C /hadoop2 修改配置文件 在/hadoop/hbase-2.0.0-alpha2-bin/conf文件夹里 vi /hadoop/hbase-2.0.0-alpha2/conf/hbase-env.sh修改hbase-env.sh文件 export…

错误分析 (Machine Learning研习十九)

错误分析 您将探索数据准备选项,尝试多个模型,筛选出最佳模型,使用 Grid SearchCV微调其超参数,并尽可能实现自动化。在此,我们假设您已经找到了一个有前途的模型,并希望找到改进它的方法。其中一种方法就…

基于java+springboot+vue实现的健身俱乐部系统(文末源码+Lw+ppt)23-49

摘 要 随着社会的发展,健身俱乐部的管理形势越来越严峻。越来越多的用户利用互联网获得信息,健身信息鱼龙混杂,信息真假难以辨别。为了方便用户更好的获得本健身俱乐部管理信息,因此,设计一种安全高效的健身俱乐部网…

React-基础语法学习

1、教程:井字棋游戏 本教程将引导你逐步实现一个简单的井字棋游戏,并且不需要你对 React 有任何了解。在此过程中你会学习到一些编写 React 程序的基本知识,完全理解它们可以让你对 React 有比较深入的理解。 1.1、教程分成以下几个部分&am…

计算机视觉动作识别——YOWO用于实时时空动作定位与识别的算法解析

摘要 时空动作定位要求将两种信息源整合到设计的架构中:(1) 来自先前帧的时间信息和(2) 来自关键帧的空间信息。当前的最先进方法通常使用单独的网络提取这些信息,并使用额外的机制进行融合以获得检测结果。YOWO是一个用于视频流中实时时空动作定位的统…

宏集eX700M系列HMI实现港口设备数据上云

前言 随着港口设备信息化技术的快速发展,越来越多的企业想要把现场设备数据上传到云平台,进而实现关键数据的远程监控和分析处理。在此背景下,国内某信息化公司想要将港口设备数据通过MQTT上传到该公司自研IOT平台,实现数据上云&…

vue-treeselect 的基本使用

vue-treeselect 的基本使用 1. 效果展示2. 安装 插件3. 引入组件4. 代码 1. 效果展示 2. 安装 插件 vue-treeselect是一个树形的下拉菜单,至于到底有多少节点那就要看你的数据源有多少层了,挺方便的。下面这个这个不用多说吧,下载依赖 npm in…

中兴通讯AI全场景终端新品 赋能行业数智化升级发布 (2)

2024年4月11日,南京,在2024年中兴通讯云网生态峰会召开之际,中兴行业终端合作伙伴大会暨春季新品发布会也同期举行。本次大会主题为“强基拓新,价值创造”,中兴行业终端持续践行合作伙伴优先、深度定制更安全更高效的解…

揭秘ebay、亚马逊测评系统:从稳定环境搭建到防关联技术

在亚马逊、ebay平台上进行自养号测评、L ka等活动,首要问题是确保环境的安全性和稳定性。一个稳定的环境是进行测评的基础,如果无法解决安全性问题,那么从事这些项目就不值得。我们在环境技术研发领域已经有8年的经验,在早期测试了…

连连看游戏页面网站源码,直接使用

可以上传自己喜欢的图片 游戏页面 通关页面 源码免费下载地址抄笔记 (chaobiji.cn)

信号分解 | VMD(变分模态分解)-Matlab

分解效果 VMD(变分模态分解) 变分模态分解(Variational Mode Decomposition,VMD)是一种信号分解方法,用于将非平稳信号分解为一组模态函数。VMD是一种自适应的数据驱动方法,可以有效地处理具有非线性和非平稳特性的信号。 VMD的基本思想是通过迭代优化过程,将原始信号分…

4.16学习总结

MySQL数据库学习(一) 一.MySQL数据库的基本知识 (一).数据库 概念:数据仓库,软件,安装在操作系统之上 作用:存储数据,管理数据 (二).数据库的分类 关系型数据库:SQL(Structured Query Language) MySQL…

创建k8s deploy yaml文件的imagePullSecrets语句

镜像仓库是harbor kubectl create secret docker-registry key --docker-server192.168.0.190 --docker-usernameadmin --docker-passwordHarbor12345

Fluke ADPT连接器(隔离版)----发布1

代替手工记录、记录后在整理的麻烦,轻点鼠标(单次采集、自动时间间隔采集自由选择)即可完成,测试数据导出图片、导出数据到EXCEL文件随意选择; 所需设备: 1、Fluke ADPT连接器;内附链接 主要…

docker网路和主机通讯问题

#注 1,安装docker和启动容器服务的时候如果防火墙处于开启状态,那么重启docker里面的容器的时候必须开启防火墙,否则会出现iptable错误; 2,linux开启防火墙会导致主机和docker网络之间单向通讯,主机可以访…

Ubuntu 部署ChatGLM3大语言模型

Ubuntu 部署ChatGLM3大语言模型 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。 源码:https://github.com/THUDM/ChatGLM3 部署步骤 1.服务器配置 Ubuntu 20.04 8核(vCPU) 32GiB 5Mbps GPU NVIDIA T4 16GB 硬盘 100GiB CUDA 版本 12.2.2/…

专业143总分428学硕第一东南大学920专业基础综合考研经验电子信息与通信工程,海洋工程,电路系统,鲁汶,真题,大纲,参考书。

24考研基本已经尘埃落定,总归要为回忆留下点什么。回想起这一年的备考之路,至今仍觉得时间过得很快,有些感到恍惚,似乎不能接受。但是仔细思考一下,这一年经历了很多,走过很多弯路也取得一些阶段性的小成功…

Hive-Sql复杂面试题

参考链接:hive sql面试题及答案 - 知乎 有哪些好的题目都可以给我哦 我来汇总到一起 1、编写sql实现每个用户截止到每月为止的最大单月访问次数和累计到该月的总访问次数 数据: userid,month,visits A,2015-01,5 A,2015-01,15 B,2015-01,5 A,2015-01,…

独角数卡发卡系统源码hyper模版首页产品列表添加库存数量显示的方法

默认的独角数卡hyper模版商品列表只显示标题和价格,没有显示库存数量 如图: 对于买家来说,无法通过首页快捷的知道某事产品的库存数量 故此在此列出显示库存数量的修改方法。 首先找到根目录下文件/resources/views/hyper/static_pages/ho…

Servlet-Filter实现反爬虫

以前用DotNetCore实现过反爬虫功能。在tomcat里面可以利用Servlet的Filter类实现请求的控制来达到反爬虫功能,进而增强JRT的web安全。 实现黑名单过滤器,对在黑名单列表的IP的所有请求都跳转到警告页面,业务各种请求自行定义加入黑名单 /* …