当前位置: 首页 > news >正文

STM32--蓝牙

本文主要介绍基于STM32F103C8T6和蓝牙模块实现的交互控制

简介

蓝牙(Bluetooth)是一种用于无线通信的技术标准,允许设备在短距离内进行数据交换和通信。它是由爱立信(Ericsson)公司在1994年推出的,以取代传统的有线连接方式,使设备之间能够实现低功耗、低成本的数据传输和通信。
在这里插入图片描述

蓝牙技术的特点
无线通信:蓝牙允许设备在近距离内(通常是10米左右,具体取决于设备版本)进行通信,无需使用电缆或其他物理连接。
低功耗:蓝牙技术被设计为低功耗的通信方式,这使得它在移动设备上广泛使用,如智能手机、平板电脑、蓝牙耳机等。
多设备连接:蓝牙允许一个主设备(如手机)同时连接多个从设备(如蓝牙耳机、蓝牙音箱等),实现更灵活的数据传输和通信。
通用性:蓝牙技术在许多设备和应用中得到广泛应用,例如无线耳机、键盘、鼠标、汽车蓝牙连接、智能家居设备等。
安全性:蓝牙技术在不断发展和改进中,以提高其安全性,以防止未经授权的访问和数据泄露。
蓝牙技术在不同的版本中有不同的特性和功能,从经典蓝牙(Bluetooth Classic)到低功耗蓝牙(Bluetooth Low Energy,简称BLE),每个版本都针对不同的应用场景和需求。

常见的蓝牙模块
(1)HC-05/HC-06:
HC-05和HC-06是广泛使用的经典蓝牙模块,常用于与单片机(如Arduino)进行无线通信。
它们基于蓝牙2.0标准,支持串口通信(UART)协议,使得与单片机的连接和数据交换相对简单。
HC-05可作为主设备或从设备,支持蓝牙SPP(串口通信)和AT命令模式。
HC-06通常作为从设备,仅支持蓝牙SPP模式。
它们具有基本的通信范围,通常在10米左右。

(2)HM-10/CC2541:
HM-10和CC2541是低功耗蓝牙(BLE)模块,适用于物联网(IoT)设备和传感器网络。
它们基于蓝牙4.0标准,具有低功耗和短距离通信的特点。
它们支持BLE通信协议,如GATT(通用属性配置文件)和ATT(属性协议),用于数据传输和连接管理。
HM-10具有较大的功能集,包括主设备和从设备模式,而CC2541主要作为从设备。
它们通常用于连接和控制传感器、智能家居设备等。

(3)RN42/RN52:
RN42和RN52是经典蓝牙模块,由Microchip(以前是Roving Networks)生产。
它们基于蓝牙2.1+EDR标准,提供了丰富的功能和易于使用的接口。
这些模块支持串口通信(UART)协议,具有较大的通信范围(通常在30米以上)。
它们适用于各种应用,如音频传输、数据通信和蓝牙配对。
RN52还提供了额外的音频功能,如立体声音频传输和音频配置选项。

(4)ESP32:
ESP32是一款强大的Wi-Fi和蓝牙组合模块,由Espressif Systems开发。
它集成了双核处理器、Wi-Fi、蓝牙、低功耗技术和丰富的外设接口。
ESP32支持蓝牙经典和低功耗蓝牙(BLE),具有较大的灵活性和功能性。
它广泛应用于物联网(IoT)应用、嵌入式系统和智能设备开发。

综上,本文主要介绍基于HC-05和STM32F103C8T6的蓝牙无线控制

接线

将HC-05模块的VCC引脚连接到STM32的3.3V电源引脚,GND引脚连接到STM32的地引脚。
将HC-05模块的TXD引脚连接到STM32的一个UART接收引脚(例如USART1_RX),RXD引脚连接到STM32的一个UART发送引脚(例如USART1_TX)。
如果需要进行模块的配置或进入AT命令模式,可以将HC-05模块的EN引脚连接到STM32的一个GPIO引脚,并在代码中控制该引脚的状态。
本示例中管脚连接状态如下所示:

STM32F103C8T6蓝牙模块
VCCVCC
GNDGND
A2RXD
A3TXD

程序示例

串口UART初始化函数

void My_USART2_Init(void)  
{  GPIO_InitTypeDef GPIO_InitStrue;  USART_InitTypeDef USART_InitStrue;  NVIC_InitTypeDef NVIC_InitStrue;  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIO端口使能  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//串口端口使能  //实际使用的是这俩IO口GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;  GPIO_InitStrue.GPIO_Pin=GPIO_Pin_2;        //TXDGPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;  GPIO_Init(GPIOA,&GPIO_InitStrue);  GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;  GPIO_InitStrue.GPIO_Pin=GPIO_Pin_3;         //RXDGPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;  GPIO_Init(GPIOA,&GPIO_InitStrue);  USART_InitStrue.USART_BaudRate=9600;  USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;  USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;  USART_InitStrue.USART_Parity=USART_Parity_No;  USART_InitStrue.USART_StopBits=USART_StopBits_1;  USART_InitStrue.USART_WordLength=USART_WordLength_8b;  USART_Init(USART2,&USART_InitStrue);USART_Cmd(USART2,ENABLE);					//使能串口2  USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//开启接收中断  NVIC_InitStrue.NVIC_IRQChannel=USART2_IRQn;  NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;  NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=0;  NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;  NVIC_Init(&NVIC_InitStrue);      
}  

主函数中关于蓝牙点灯和关灯的操作函数

   	while(1){		if(res=='1'){Led_On(LED1);//TIM_SetCompare2(TIM3,175);delay_ms(1000);}if(res=='2'){Led_Off(LED1);//TIM_SetCompare2(TIM3,180);delay_ms(1000);}			  			}

附完整资源链接

链接:https://pan.baidu.com/s/1o-lnlWjCYFTDZIvoJBs-iQ
提取码:4wh6

相关文章:

STM32--蓝牙

本文主要介绍基于STM32F103C8T6和蓝牙模块实现的交互控制 简介 蓝牙(Bluetooth)是一种用于无线通信的技术标准,允许设备在短距离内进行数据交换和通信。它是由爱立信(Ericsson)公司在1994年推出的,以取代…...

java 实现原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,它允许创建对象的副本,而无需暴露对象的创建细节。在Java中,原型模式通常通过克隆对象来实现。要实现原型模式,需要满足以下条件: 被克隆的对…...

maven本地安装jar包install-file,解决没有pom的问题

背景: 公司因为权限问题,没有所有的代码,内部maven还在搭建,所以需要拿到同事的jar包,本地install: mvn install:install-file -DgroupIdcom..framework -DartifactIdcloud-api -Dversion1.0.0-SNAPSHOT …...

【C++学习笔记】5、变量作用域

文章目录 【 1、局部变量 】【 2、全局变量 】【 3、局部变量和全局变量的初始化 】 作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量。 在函数参数的定义中声明的变量,称…...

Python中的装饰器

迷途小书童的 Note 读完需要 5分钟 速读仅需 2 分钟 装饰器是一个非常有用而又常被误解的功能,可以让我们在不修改函数或类的源代码情况下给它们提供扩展功能。本文将通过具体示例带你深入理解 Python 装饰器的用法。 1 装饰器基础 装饰器本质上是一个函数&#xff…...

什么是RESTful API,Spring MVC如何支持RESTful架构

文章目录 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:Java框架 ✨文章内容:Spring MVC支持RESTful架构 🤝希望作者的文章能对你有所帮助&#xf…...

cin、cin.getline()、getline()的用法【C++】

一、cin>> 用法1&#xff1a;输入一个数字或字符 #include <iostream> using namespace std; int main () {int a,b;cin>>a>>b;cout<<ab<<endl;return 0; } 用法2&#xff1a;接收一个字符串&#xff0c;遇“空格”、“TAB”、“回车”…...

单向链表(c/c++)

链表是一种常见的数据结构&#xff0c;其中运用到了结构体指针&#xff0c;链表可以实现动态存储分配&#xff0c;换而言之&#xff0c;链表是一个功能强大的数组&#xff0c;可以在某个节点定义多种数据类型&#xff0c;可以实现任意的添加&#xff0c;删除&#xff0c;插入节…...

像linux 一样清理Windows C盘

像 linux 有命令 du -sh 查看文件夹大小 但是windows 可就没有这个命令了&#xff0c;就算有命令&#xff0c;也不能扫描子目录里面的文件 但是windows 可以借助 软件来清理&#xff0c;和linux 一样 文件上面是目录&#xff0c;下面是文件所占用空间大小的图&#xff0c;咋…...

在Linux 下制作启动盘以及dd命令使用

在Linux 下制作启动盘以及dd命令使用 1、在Linux 下制作启动盘&#xff0c;可使用如下命令&#xff1a;2、Linux dd 命令(1)参数说明: 3、dd应用实例(1)将本地的/dev/hdb整盘备份到/dev/hdd(2)将/dev/hdb全盘数据备份到指定路径的image文件(3)将备份文件恢复到指定盘(4)备份/de…...

C语言插入排序

前言&#xff1a; 本文主要讲解插入排序中的直接插入排序和希尔排序。 1、直接插入排序&#xff1a; 1.1基本思想 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是把待排序的数值按照大小顺序逐个插入到一个已经排好序的有序序列中&#xff0c;直到将所有记录…...

SQL-DCL

DCL-管理用户 1.查询用户 USE mysql&#xff1b; SELECT * FROM user&#xff1b; 2.创建用户 CREATE USER “用户名”“主机名” IDENTIFIED BY "密码“&#xff1b; 3.修改用户密码 ALTER USER “用户名”“主机名” IDENTIFIED WITH mysql_native_password BY &quo…...

Elasticsearch 中的向量搜索:设计背后的基本原理

作者&#xff1a;ADRIEN GRAND 实现向量数据库有不同的方法&#xff0c;它们有不同的权衡。 在本博客中&#xff0c;你将详细了解如何将向量搜索集成到 Elastisearch 中以及我们所做的权衡。 你有兴趣了解 Elasticsearch 用于向量搜索的特性以及设计是什么样子吗&#xff1f; …...

Jquery会议室布局含门入口和投影位置调整,并自动截图

一、关于下载 1、文章中罗列了主要代码&#xff0c;如需使用&#xff0c;请前往CSDN下载进行下载&#xff0c;包中包含所有文件素材&#xff0c;开箱即用 2、下载链接&#xff1a;https://download.csdn.net/download/zlxls/88305636 二、有这么一个需求 1、会场进行布局&a…...

高精度乘法模板(fft)

正常高精度复杂度是o(n^2)&#xff0c;fft复杂度o(nlogn) #define int long long//__int128 2^127-1(GCC) #define PII pair<int,int> #define f first #define s second using namespace std; const int inf 0x3f3f3f3f3f3f3f3f, N 3e5 5, mod 1e9 7; const doubl…...

C# 现状简单说明

文章目录 环境框架图形界面后端游戏 环境 .net framework 老版本.net版本&#xff0c;只能在windows环境下运行 .net core 新版.net版本。可以跨linux,mac平台运行 框架 图形界面 Winfrom 很老的图形界面。特点是丑&#xff0c;但是能用&#xff0c;学起来快 WPF 使用Xaml…...

el-table滚动加载、懒加载(自定义指令)

我们在实际工作中会遇到这样的问题&#xff1a; 应客户要求&#xff0c;某一个列表不允许分页。但是不分页的话&#xff0c;如果遇到大量的数据加载&#xff0c;不但后端响应速度变慢&#xff0c;前端的渲染效率也会降低&#xff0c;页面出现明显的卡顿。 那如何解决这个问题…...

不关闭Tamper Protection(篡改保护)下强制卸载Windows Defender和安全中心所有组件

个人博客: xzajyjs.cn 背景介绍 由于微软不再更新arm版本的win10系统&#xff0c;因此只能通过安装insider preview的镜像来使用。而能找到的win10 on arm最新版镜像在安装之后由于内核版本过期&#xff0c;无法打开Windows安全中心面板了&#xff0c;提示如下&#xff1a; 尝…...

从一到无穷大 #13 How does Lindorm TSDB solve the high cardinality problem?

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言优势挑战系统架构细节/优化存储引擎索引写入查询 经验Ablation Study总结 引言 …...

三维模型OBJ格式轻量化的纹理压缩和质量关系分析

三维模型OBJ格式轻量化的纹理压缩和质量关系分析 三维模型的OBJ格式通常包含纹理信息&#xff0c;而对纹理进行轻量化压缩可以减小文件大小和提高加载性能。然而&#xff0c;在进行纹理压缩时需要权衡压缩比率和保持质量之间的关系&#xff0c;并根据具体应用场景选择合适的压缩…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...