基于STM32CubeMX的HC-05蓝牙主从通讯

2023-11-09

基于STM32CubeMX的HC-05蓝牙主从通讯

开发板使用的是stm32f103c8t6,使用STM32CubeMX进行配置,实现两HC-05蓝牙之间主从通讯。

HC-05蓝牙模块是主从一体的,两个HC-05之间一主一从通讯,要进入AT模式,对HC-05模块进行相应设置。

一、AT模式设置

  • 首先HC-05蓝牙模块要通过TTL转USB模块连接到电脑,上电前一直按住HC-05上的按键,上电后松开按键,指示灯慢闪,表示进入AT模式

接线

HC-05 USB-TTL
VCC 5V
GND GND
TX RX
RX TX
  • 通过串口调试助手,文本模式,对HC-05进行AT设置,注意HC-05默认在AT模式下波特率为38400正常模式下波特率为9600

对从机(SLAVE) 依次输入一下AT指令:

指令 功能
AT+ORGL 恢复出厂设置
AT+NAME=BTSLAVE 设置蓝牙名称
AT+PSWD=“1234” 设置连接密码1234,注意加英文双引号
AT+ROLE=0 0为从机模式
AT+CMODE=0 连接模式为任意连接
AT+ADDR? 查询mac地址,比如0022:04:007407,每个设备都不一样

对主机(MASTER) 依次输入一下AT指令:

指令 功能
AT+ORGL 恢复出厂设置
AT+NAME=BTMASTER 设置蓝牙名称
AT+PSWD=“1234” 这个就是从机的密码
AT+ROLE=1 1为主机模式
AT+CMODE=0 任意连接
AT+BIND=0022,04,007407 绑定从机地址,注意将从机地址:换成,

注意指令必须为大写,每次恢复出厂设置后,指示灯会快闪,需拔下后重复第一步,重新进入AT模式。

完整指令集,可以自己到网上查资料。

完成配置后,主从两机重新上电,不需按按键,进入正常模式,这时HC-05指示灯快闪;等待几秒后,主从两机自动配对完成,同时间隔5秒闪烁,表示主从两机连接成功。

二、配置STM32

  • 在STM32CubeMX中,对stm32进行配置

在这里插入图片描述

选择外部时钟

在这里插入图片描述

选择调试器

在这里插入图片描述

使能串口2

在这里插入图片描述

将波特率设为9600,与蓝牙波特率匹配

在这里插入图片描述

开启串口中断

三、测试

主函数循环中:

uint8_t  SendBuffer[30]={"hello,world!"};
        HAL_UART_Transmit(&huart2, (uint8_t *)SendBuffer, sizeof(SendBuffer), HAL_MAX_DELAY);

串口助手接收数据:

在这里插入图片描述

通讯成功。

配置完成后,就可以忽略蓝牙,直接操作串口一样使用HC-05,还是十分简单方便的。

这个项目是疫情无法返校,家中备电赛的过程中完成的。参考结合了很多前人的经验,算是对整个过程的整合和总结。欢迎大家多多指教。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于STM32CubeMX的HC-05蓝牙主从通讯 的相关文章

  • 哪些变量类型/大小在 STM32 微控制器上是原子的?

    以下是 STM32 微控制器上的数据类型 http www keil com support man docs armcc armcc chr1359125009502 htm http www keil com support man d
  • 如何使用 gcc 编译代码和 ARM Cortex A8 目标进行调用图分析?

    我对这个已经咬牙切齿了 我需要在 ARM 板上进行分析并需要查看调用图 我尝试使用 OProfile Kernel perf 和 Google 性能工具 一切正常 但不输出任何调用图信息 这使我得出结论 我没有正确编译代码 我在编译 C 代
  • DSP 库 - RFFT - 奇怪的结果

    最近我一直在尝试在我的STM32F4 Discovery评估板上进行FFT计算 然后将其发送到PC 我已经调查了我的问题 我认为我对制造商提供的 FFT 函数做错了 我正在使用 CMSIS DSP 库 现在我一直在用代码生成样本 如果工作正
  • 交叉编译 Qt 4.7 时出现“非法指令”

    我已经在这个问题上苦苦挣扎了一个多星期了 但仍然找不到解决方案 我正在尝试为 ARM 设备交叉编译 Qt 4 7 嵌入式开源版本 构建过程本身可以顺利完成 但生成的二进制文件似乎包含处理器无法理解的指令 构建主机是 i386 上的 Debi
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • 基于 Windows 8 ARM 的平板电脑上的 VB6

    随着 Windows 8 将支持 VB6 我的问题是 Microsoft 是否在任何地方表示 是或否 VB6 应用程序将在基于 ARM 的平板电脑上运行 如果没有 是否有任何 ARM 模拟器 以便我们可以在 Windows 8 ARM 平板
  • DS-5:什么是 FVP、RTSM、基础模型、AEM 模型、快速模型、CADI?

    DS 5 模拟器使用了很多术语 如 FVP RTSM 快速模型 基础模型 AEM 模型 CADI Arm的文档中提供的解释不是很清楚 这些术语的含义是什么 作为 DS 5 的最终用户我应该关心哪些术语 Model 软件模拟的行业术语 就 A
  • AOSP 的“午餐”组合是什么意思?我需要选择什么?

    我是 Android 设备 ROM 开发的新手 无论如何 我现在正在为具有 64 位处理器的中国设备构建 AOSP 我按照 source android com 上的菜单进行操作 当我运行 午餐 命令时 终端显示 午餐菜单 选择一个组合 我
  • Qemu flash 启动不起作用

    我有一本相当旧的 2009 年出版 嵌入式 ARM Linux 书 其中使用u boot and qemu 的用法qemu与u boot书中对二进制的解释如下 qemu system arm M connex pflash u boot b
  • arm-linux-gnueabi 编译器选项

    我在用 ARM Linux gnueabi gcc在 Linux 中为 ARM 处理器编译 C 程序 但是 我不确定它编译的默认 ARM 模式是什么 例如 对于 C 代码 test c unsigned int main return 0x
  • 如何获取结构体中任意成员的位位置

    如何获取结构体中任意成员的位位置 在示例中 gt typedef struct BitExamStruct unsigned int v1 3 unsigned int v2 4 unsigned int v3 5 unsigned int
  • 设备树不匹配:.probe 从未被调用

    我无法理解设备树的工作原理 或者具体来说为什么该驱动程序无法初始化 这是在 android 版本 3 10 的 rockchip 供应商内核中 驱动程序 看门狗 rk29 wdt c 为了可读性而减少 static const struct
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • 上下文切换到安全模式(arm trustzone)的成本是多少

    我试图了解在arm中可信 安全 和非安全模式之间来回切换的成本 从非安全世界转移到安全世界时到底需要发生什么 我知道需要设置 ns 位 基于某些特殊指令 需要刷新和更新页表 刷新和更新处理器缓存 还有什么需要发生的吗 处理器缓存 它们是分段
  • .ko 文件是如何构建的

    我正在尝试将我自己的驱动程序移植到Beagle 板 xm arm cortex A8 在移植时我试图弄清楚如何 ko文件实际构建 在我们的Makefile我们只有一个命令来构建 o file 怎样是一个 ko文件已建立 使用Linux 2
  • 哪些 GCC 优化标志对二进制大小影响最大?

    我正在使用 GCC 为 ARM 开发 C 我遇到了一个问题 我没有启用优化 我无法创建二进制文件 ELF https en wikipedia org wiki Executable and Linkable Format 对于我的代码 因
  • GCC:如何在 MCU 上完全禁用堆使用?

    我有一个在基于 ARM Cortex M 的 MCU 上运行并用 C 和 C 编写的应用程序 我用gcc and g 编译它并希望完全禁用任何堆使用 在 MCU 启动文件中 堆大小已设置为 0 除此之外 我还想禁止代码中意外使用堆 换句话说
  • 了解带有 pc 偏移的 Cortex-M 组件 LDR

    我正在查看这段 C 代码的反汇编代码 define GPIO PORTF DATA R volatile unsigned long 0x400253FC int main void Initialization code while 1
  • 2022年Android CPU架构分布(armeabi-v7a vs arm64-v8a)

    有没有关于 2022 年 Android 设备上的架构使用情况的官方信息 我有一个支持armeabi v7a 和arm64 v8a 的应用程序 我想要放弃对armeabi v7a的支持并且仅支持 64 位设备 arm64 v8a 但我找不到
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一

随机推荐

  • mybatis查询结果按sql字段顺序返回。

    1 返回结果用resutlType接受 resultType java util LinkedHashMap 2 mybatis plus增加如下配置 mybatis plus configuration call setters on n
  • 个人python笔记

    个人PYTHON记录 更新中 前言 一 个人对python及C uibot的评价 二 python使用包与函数的记录 1 环境的配置anaconda与pycharm 2 py打包为exe 3 excel表格相关包xlwings 4 re正则
  • 根据ID获取问题

    定义接口 根据问题的ID查询一个问题数据 Question getQuestionById Integer id 实现接口 Override public Question getQuestionById Integer id select
  • Web基础知识

    为啥我啥都不知道 在计算机网络技术中 通常涉及两张网 Network和Web Network 主要指硬件网络 包括了TCP IP Transmission Control Protocol Internet Protocol 四层网络体系中
  • tf.nn.conv2d() 参数说明

    tf nn conv2d用法详解 tf nn conv2d 我们已经知道这个函数是用于做二维卷积的 但是他容易和tf layers conv2d 混淆 对于初学者来说 他的参数也不是那么容易理解 只是了解到一点皮毛 并不能一下子就记住 下面
  • Java测试(7)---项目篇

    需求 项目 1 项目启动 了解项目背景 2 需求分析 功能需求 1 文件类型 支持所有文件 2 压缩文件个数 最多压缩100个文件 3 压缩大小 不超过5G 性能需求 1 压缩 解压缩文件不超过30分钟 2 安全需求 带有病毒感染的文件不能
  • 代码随想录算法训练营第四天

    LeetCode 24力扣 两两交换链表节点 采用原地交换 使用tmp节点进行交换前临时节点存储即可 三个一组 package algor trainingcamp import algor junior algor list ListNo
  • MIPI信号简单介绍

    1 MIPI介绍 MIPI是由ARM Nokia ST IT等公司成立的一个联盟 旨在把手机内部的接口如存储接口 显示接口 射频 基带接口等标准化 减少兼容性问题并简化设计 MIPI联盟通过不同的工作组 分别定义一系列手机内部的接口标准 如
  • 字节流与字符流的区别及相互转换

    先来看一下流的概念 在程序中所有的数据都是以流的方式进行传输或保存的 程序需要数据的时候要使用输入流读取数据 而当程序需要将一些数据保存起来的时候 就要使用输出流完成 程序中的输入输出都是以流的形式保存的 流中保存的实际上全都是字节文件 字
  • EL表达式javaweb

    一 JavaBean JavaBean是Java开发语言中一个可以重复使用的软件 它本质上就是一个Java类 为了规范 JavaBean 的开发 Sun 公司发布了 JavaBean 的规范 它要求一个标准的 JavaBean 组件需要道循
  • MeterSphere入参加密踩坑记录

    需求 应公司要求需把项目接口接入MeterSphere Jenkins部署时实现接口自动化测试 项目接口有统一加密方式 所以想写一个统一的前置脚本 减少工作量 ps 我想实现的效果是body里放明文参数 经过前置脚本操作后 把处理后的参数放
  • 如何设置Alfred的Terminal为iterm2

    按以下步骤操作即可 不需要保存 代码立即生效 将以下代码放到上图所示中 on alfred script q if application iTerm2 is running or application iTerm is running
  • Nginx添加nginx_upstream_check_module主动健康检查模块步骤

    1 进入nginx第三方模块存放目录 没有就创建 cd usr local nginx module 下载nginx upstream check module wget https codeload github com yaoweibi
  • 树莓派(Raspberry pi) 使用Pi Imager安装烧录操作系统

    树莓派 Raspberry pi 安装烧录操作系统 最好的方式 土壕的方式 是直接购买了安装好了操作系统的SD卡 拿到树莓派后的第一件事情就是安装烧录操作系统 安装的过程非常简单 在树莓派官方网站上有手把手的安装说明 英语过关的可以直接看
  • 【AI画画教程】无整合包使用LoRA和Dreambooth训练全流程详解(Linux)

    前言 本教程遵循简单原则 不使用任何民间整合包 目前很多AI画画训练整合包臃肿复杂 教程也是名词乱炖 容易对初学者造成理解误差和使用困难 因为许多整合包都依赖于sd scripts库 它自身就能支持绝大多数的训练场景 学会这个后 自己也可以
  • C语言打印9*9乘法表

    C语言9 9乘法表 2d 右对齐 2d 左对齐
  • 《Centos系统——shell脚本判断语句》

    目录 一 掌握表达式测试包括字符串测试 整数测试 文件测试及逻辑测试 1 掌握字符串测试 a 格式 b 例子 2 掌握整数测试 a 格式 b 例子 3 掌握文件测试 a 格式 opr file b 例子 4 掌握逻辑测试 多重判断 b 例子
  • 07-Redis缓存设计

    上一篇 06 Redis缓存高可用集群 1 缓存穿透 缓存穿透是指查询一个根本不存在的数据 缓存层和存储层都不会命中 通常出于容错的考虑 如果从存储层查不到数据则不写入缓存层 缓存穿透将导致不存在的数据每次请求都要到存储层去查询 失去了缓存
  • 当从 Java 进程查看时该主机的主机名称和规范名称不一致。

    查看日志发现是node27 data com 和node27不一致 sed i s data com etc sysconfig network service network restart 最后还没好 第二天我又重新设置了 vim et
  • 基于STM32CubeMX的HC-05蓝牙主从通讯

    基于STM32CubeMX的HC 05蓝牙主从通讯 开发板使用的是stm32f103c8t6 使用STM32CubeMX进行配置 实现两HC 05蓝牙之间主从通讯 HC 05蓝牙模块是主从一体的 两个HC 05之间一主一从通讯 要进入AT模