stm32cubeMX智能小车蓝牙模块

本文使用的代码是 HAL 库。

文章目录

  • 前言
  • 一、蓝牙模块介绍
  • 二,AT指令测试蓝牙模块
  • 三,原理图分析
  • 四,cubeMX 配置
  • 五,编写代码
  • 总结

前言

实验小车:STM32F103C8T6。
蓝牙模块:HC-05。
所需软件:keil5 , cubeMX 。
实验目的:了解 如何使用蓝牙模块。


一、蓝牙模块介绍

蓝牙模块是一种能够在设备之间进行无线通信的组件,通常用于连接各种电子设备,如智能手机、平板电脑、传感器、嵌入式系统等。

  1. 特性:
  • 串口通信:HC-05模块可以通过UART串口与其他设备通信,允许设备之间进行串口数据传输。

  • 主从模式:HC-05模块支持主从模式,可以作为主设备(主控制器)或从设备(从控制器)使用,使其具有更强的灵活性。

  • HC-05模块通常工作电压为3.3V或5V,通信距离一般在10米至100米之间。

  • 配对和连接: 使用HC-05模块时,需要通过配对的方式将其与其他蓝牙设备连接。一旦配对成功,设备之间就可以建立蓝牙连接,实现数据的双向传输。

在这里插入图片描述

  1. 引脚介绍

HC-05模块通常具有6个引脚,其中包括电源引脚(VCC、GND)、串口数据输入(TXD)、串口数据输出(RXD)等。

蓝牙接线方式:
VCC-3.3V
GND-GND
TXD-RXD
RXD-TXD

二,AT指令测试蓝牙模块

  1. 设备连接

需要将 蓝牙模块连接 TTL-USB 转接口,再连接到电脑上。

(注意:蓝牙上有一个按钮,按下按钮的同时插到电脑上,直到蓝牙每2秒闪烁一次即可松开)

问 : 为什么要使用 TTL-USB转接口呢?

蓝牙模块的串口通常是使用TTL电平(3.3V或5V)进行通信,而计算机的USB端口是使用逻辑电平(通常为5V),它们的电平不匹配。TTL-USB转接口可以将计算机USB端口的逻辑电平转换为蓝牙模块串口所需的TTL电平,这样就可以通过串口通信发送AT指令给蓝牙模块,以及接收模块返回的响应。
在这里插入图片描述

  1. AT 指令

一般将蓝牙连接 USB-TTL 转接口,再通过 AT 指令去查看修改蓝牙的波特率(蓝牙一般
默认为 9600)。

因为蓝牙通信类似于串口,都是通过一个 TX, 一个 RX 进行通信,所以要设置蓝牙波特率与串口波特率一致

AT指令集:

AT+NAME = xlg  ------------ 设置蓝牙名称为xlg
AT+ROLE=0    ------------ 蓝牙模式为从模式 AT+ROLE=1 蓝牙模式为主模式
AT+CMODE=0   ------------  蓝牙连接模式为任意地址连接模式
AT+PSWD=1234  ------------ 	蓝牙配对密码为1234
AT+UART=9600,0,0  ------------  蓝牙通信串口波特率为9600,停止位1位,无校验位
AT+RMAAD  ------------  清空配对列表

查询蓝牙状态:

AT+RESET	------------	HC-05复位

AT+VERSION?	------------ 	获取HC-05的软件版本号,只能获取,不能修改。

AT+ORGL	------------ 恢复出厂默认设置,当把模块设置乱了,使用此命令进行恢复默认值。

AT+ADDR?	------------ 获取HC-05的蓝牙地址码,只能获取,不能修改。

AT+NAME?------------  获取HC-05的名字,AT+NAME=xlg,修改模块的名字为xlg,具体名字自行修改。

AT+CLASS?			设置查询设备的类型,尽量不要去修改此参数。默认是1F00。

AT+IAC?	------------  查询设置查询访问码,默认是9E8B33,尽量不要去修改此参数。

AT+PSWD?------------  查询设置配对密码,AT+PSWD=”0000”,密码要有双引号,密码是四位数字.

可以直接使用串口助手进行蓝牙测试:

在这里插入图片描述

三,原理图分析

蓝牙电路图:

蓝牙模块类似于串口,都是通过 TX , RX 进行通信
在这里插入图片描述
蓝牙模块接到了开发板的 串口2 。

TX ----> PA3. RX ----> PA2.
在这里插入图片描述

四,cubeMX 配置

1.选择串口2,设置工作模式为异步通信,波特率设置为 蓝牙的默认值 9600.
在这里插入图片描述
2. 开启串口接收中断
在这里插入图片描述
3. 设置led 引脚(便于进行蓝牙点灯)
在这里插入图片描述

五,编写代码

使用蓝牙控制 led 点亮,熄灭。

	// 开启串口接收中断
	HAL_UART_Receive_IT(&huart2, &rxBuffer, 1); 

/* 
*  串口回调函数 
*  接收到 a1 点亮 led, 接收 a2 熄灭 led
*/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if(huart->Instance == USART2) // 仅处理USART2串口的接收中断
	{
		if(rxBuffer == 0xa1)
		{
				HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);//打开 led 灯
				printf("led on\r\n");
		}
		else if(rxBuffer == 0xa2)
		{
				HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);//关闭 led 灯
				printf("led off\r\n");
		}
		
		HAL_UART_Receive_IT(&huart2, &rxBuffer, 1);//启动下一次接收
	}
}

总结

下一篇文章为大家介绍 智能小车循迹

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

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

相关文章

Jdk 内存伪共享

一、什么是伪共享 数据X、Y、Z被加载到同一Cache Line中,线程A在Core1上修改X,而修改X会导致其所在的所有核上的缓存行均失效;假设此时线程B在Core2上读取Y,由于X所在的缓存行已经失效,所有Core2必须从内存中重新读取。…

碳排放预测(粉丝免费) | 基于深度学习的碳排放预测模型

效果分析 基本介绍 基于深度学习的碳排放预测模型 碳排放量预测是碳中和目标达成工作中的重要组成部分。为了实时预测碳排放量,本文深度学习在数据特征提取方面的优势和长短期记忆人工神经网络解决时间序列各个观测值依赖性问题的特点,提出了一种基于深度学习的碳排放量预测模…

springboot图书个性化推荐系统的设计与实现+1w字文档

项目演示视频: 【源码免费送】基于springboot图书个性化推荐系统的设计与实现录像 摘 要 本论文主要论述了如何使用JAVA语言开发一个图书个性化推荐系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项…

Linux基础-socket详解、TCP/UDP

文章目录 一、Socket 介绍二、Socket 通信模型三、Socket 常用函数1 创建套接字2 绑定套接字3、监听连接4、接受连接5、接收和发送数据接收数据发送数据 6、关闭套接字 四、Socket编程试验1、源码server.cclient.c 2、编译:3、执行结果 五、补充TCP和UDP协议的Socke…

Agisoft Metashape 自定义底图

Agisoft Metashape 自定义底图 前言 Agisoft Metashape 从2.0.2 版本开始,Agisoft Metashape Professional 和 Agisoft Viewer 支持自定义底图,可用于模型和正射视图模式。本文以添加Esri World Image卫星底图图源为例,介绍Agisoft Metashape 自定义底图的方法。 添加自定…

YOLOV8 pycharm

1 下载pycharm 社区版 https://www.jetbrains.com/zh-cn/pycharm/download/?sectionwindows 2 安装 3 新建 4 选择 文件-> setting 配置环境变量 5 添加conda 环境

vite打包配置

目录 minify默认是esbuild,不能启动下面配置 使用: plugins: [viteMockServe({mockPath: mock})]根目录新建mock/index.ts. 有例子Mock file examples:https://www.npmjs.com/package/vite-plugin-mock-server 开发环境生产环境地址替换。根…

php7.4在foreach中对使用数据使用无法??[]判读,无法使用引用传递

代码如下图:这样子在foreach中是无法修改class_history的。正确的应该是去掉??[]判断。 public function actionY(){$array [name>aaa,class_history>[[class_name>一班,class_num>1],[class_name>二班,class_num>2]]];foreach ($array[class_…

营收不过万,世道艰难,月末总结复盘ing

2024已经走过了1/3,从事实上看确实如大佬们所说世道越来越难,过往的几个月份营收只有区区10000。向下兼容的话从绝对值上看收入确实不少了,从相对值上看又少的可怜,只能满足温饱而已。 这个月上半场成绩非常喜人,半个月…

IDEA在setting中已经勾选了Use non-modal commit interface选项,还是不显示commit侧边栏

今天在拉取项目后,发现我得项目不显示commit的侧边栏,导致我的项目修改没有一个提示。 去网上搜了一些方案,都是让修改seting中的下图中的选项 但是我勾选上还是没有任何效果,侧边栏还是不显示commit的选项。 然后经过重重检索&…

C语言——柔性数组

1、柔性数组是什么 在C语言中,柔性数组成员(Flexible Array Member,简称FAM)是C99标准中引入的一种结构体成员,用于表示一个大小可变的数组。它是结构体的最后一个成员,不像普通的数组,没有固定…

spring boot运行过程中动态加载Controller

1.被加载的jar代码 package com.dl;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class App {public static void main(String[] args) {SpringApplication.run(A…

stm32f103c8t6学习笔记(学习B站up江科大自化协)-UNIX时间戳、BKPRTC

UNIX时间戳 UNIX时间戳最早是在UNIX系统使用的,所以叫做UNIX时间戳,之后很多由UNIX演变而来的系统也继承了UNIX时间戳的规定,目前linux,windows,安卓这些操作系统的底层计时系统都是用UNIX时间戳 时间戳这个计时系统和…

http请求报文的组成与作用?

http请求报文的组成与作用? 一、http 的请求报文组成二、请求行(Request Line)三、请求头部(Request Headers)四、请求体(Request Body)五、响应头部 (Response Headers &#xff09…

部署YUM仓库和NFS共享存储服务

目录 1. YUM仓库服务 1.1 YUM概述 1.2 准备安装源 1.3 yum在线源替换方法 2.制作YUM源 2.1制作ftp源 3.yum软件包的下载方式 4.NFS共享存储服务 4.1 NFS 4.2 NFS网络文件系统 4.3 NFS配置 1. YUM仓库服务 1.1 YUM概述 yum是一个基于RPM包(是Red-Ha…

MAC 本地搭建Dify环境

Dify 介绍 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过…

运维的利器–监控–zabbix–第二步:建设–汉化补丁--导致乱码问题

文章目录 问题原因解决方法 问题 点击对应主机的【图形】即可看到以下乱码情况 原因 上述的图标数据,下面的小白框表示乱码含义,是因为我们改了zabbix的 语言为中文 解决方法 服务器需要安装字体 [rootzabbix-server01 ~]#yum -y install wqy-mic…

go设计模式之抽象工厂模式

抽象工厂模式 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致…

maven-依赖管理

依赖配置 https://mvnrepository.com/?__cf_chl_rt_tkvRzDsumjmJ_HF95MK4otu9XluVRHGqAY5Wv4UQYETR8-1714103058-0.0.1.1-1557 <dependencies><dependency><groupId></groupId><artifactId></artifactId><version></version>…

精确测量地面沉降:静力水准仪的应用

地面沉降是一个全球性的地质问题&#xff0c;它可能对建筑物、道路和地下设施造成严重的损害。因此&#xff0c;对地面沉降进行精确测量和监测至关重要。静力水准仪作为一种先进的测量设备&#xff0c;为地面沉降的精确测量提供了有效手段。本文将探讨静力水准仪在地面沉降测量…
最新文章