位置: IT常识 - 正文

手把手教你使用--常用模块--HC05蓝牙模块,无线蓝牙串口透传模块,(实例:手机蓝牙控制STM32单片机点亮LED灯)(手把手教你使用opc)

编辑:rootadmin
手把手教你使用--常用模块--HC05蓝牙模块,无线蓝牙串口透传模块,(实例:手机蓝牙控制STM32单片机点亮LED灯) 最近在学STM32,基本的学完了,想学几个模块来巩固一下知识,就想到了蓝牙模块。玩啥好难过有很多博客教怎么连的,但自己看起来还是有点糊涂。模块的原理和知识点我就不讲解了,这里我主要手把手记录一下我是如何对蓝牙模块进行学习和使用的。所使用的资料和工具我会放在最后的链接里,大家有需要的可以自行下载。

推荐整理分享手把手教你使用--常用模块--HC05蓝牙模块,无线蓝牙串口透传模块,(实例:手机蓝牙控制STM32单片机点亮LED灯)(手把手教你使用opc),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:手把手教你怎么使用,手把手教你使用蓝牙鼠标,手把手教你使用IPP,手把手教你使用调音台,手把手教你使用调音台,手把手教你使用opc,手把手教你使用云上智农APP,手把手教你使用云上智农APP,内容如对您有帮助,希望把文章链接给更多的朋友!

模块名称:HC-05蓝牙串口通信模块

其他模块:USB转TTL模块、杜邦线、蓝牙串口助手app

蓝牙模块的前期调试

因为我们只是使用到蓝牙模块的透传功能,只需要用到4个引脚(RXT、TXD、GND、VCC)

先使用杜邦线将USB转TTL模块和HC-05蓝牙模块相连

两模块共电、共地、两模块的TX和RX交换相接(USB转TTL的TX(RX)接蓝牙的RX(TX))

如图所示:

然后将USB转TTL模块插到电脑上,通过串口助手进行调试。

蓝牙模块通讯模式有两种工作方式:命令响应工作模式和自动连工作模式(在自动连接工作模式下又可分为主、从和回环三种角色)

        ·当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;

        ·当模块处于命令响应工作模式时能执行AT命令,用户可向模块发送各种AT 指令,为模块设定控制参数或发布控制命令。

如何进入命令响应:

给模块上电即插USB的时候,按住蓝牙HC-05模块的那个小按键,此时模块进入AT模式

蓝牙模块上有一个小灯,灯快闪的时候,就是自动连接模式。慢闪的时候,就是命令响应工作模式

命令响应模式的波特率固定为38400,可以直接使用串口助手发送AT指令。

AT命令

AT指令不区分大小写,但是都要以回车符结尾

下面是常用的AT指令

手把手教你使用--常用模块--HC05蓝牙模块,无线蓝牙串口透传模块,(实例:手机蓝牙控制STM32单片机点亮LED灯)(手把手教你使用opc)

 注意:AT+NAME?可能是没有返回数据的,我们直接设置蓝牙名称就可以了

我们接下来主要配置的就是

蓝牙名称和串口参数(波特率、停止位、校验位)

如图:

设置好之后把usb拔下来,重新上电的时候会默认为自动连接模式,此时使用手机的蓝牙助手对蓝牙模块进行连接,就可以通讯了。蓝牙助手我也会放在后面的资料链接里。

 将串口助手波特率设置为115200,在手机蓝牙中发送信息,会在串口助手中显示出来。

 最后,我们将在STM32开发板中连接蓝牙进行信息传输,控制LED灯

源码我将会放在后面的资料里一起打包。

这里我们使用串口1,因为串口1是我开发板的下载串口,所以要先下载代码之后再连接蓝牙模块的TX和RX,如果使用其他串口进行通讯改为其他串口即可,连接方式如图所示:

 蓝牙模块的RX连PA9,TX连PA10,VCC接板载的5V,GND接板子的GND即可

由于我使用的是野火的开发板,所用到的LED灯是个RGB灯,大家只需要初始化一下串口,然后看一下main函数里面的逻辑来实现自己板子的LED灯即可。也可以在中断函数里对灯进行操作

接下来就可以举一反三,使用蓝牙返回信息等操作了。

资料有需要自行提取:链接:https://pan.baidu.com/s/1iGrbTiivAsTwzd9wDLYFaQ  提取码:3sp6

资料里面还有一个HC蓝牙助手,可以自定义按钮发送信息。

串口控制LED灯的代码如下:

usart.c:

#include "bsp_usart.h"//static void NVIC_Configuration(void) //配置中断优先级,这里不使用中断,所以屏蔽//{// NVIC_InitTypeDef NVIC_InitStructure;// // /* 嵌套向量中断控制器组选择 */// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// // /* 配置USART为中断源 */// NVIC_InitStructure.NVIC_IRQChannel = DEBUG_USART_IRQ;// /* 抢断优先级*/// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;// /* 子优先级 */// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;// /* 使能中断 */// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;// /* 初始化配置NVIC */// NVIC_Init(&NVIC_InitStructure);//}void USART_Config(void){GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;// 打开串口GPIO的时钟#include "stm32f10x.h" // Device headerDEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);// 打开串口外设的时钟DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);// 将USART Tx的GPIO配置为推挽复用模式#include "stm32f10x.h" // Device headerGPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure); // 将USART Rx的GPIO配置为浮空输入模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);// 配置串口的工作参数// 配置波特率USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;// 配置 针数据字长USART_InitStructure.USART_WordLength = USART_WordLength_8b;// 配置停止位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(DEBUG_USARTx, &USART_InitStructure);//// 串口中断优先级配置//NVIC_Configuration();////// 使能串口接收中断//USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);// 使能串口USART_Cmd(DEBUG_USARTx, ENABLE); }/* 发送一个字节 */void Usart_SendByte(USART_TypeDef* pUSARTx, uint8_t data){USART_SendData(pUSARTx, data);while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET );}/* 发送两个字节的数据 */void Usart_SendHalfWord(USART_TypeDef* pUSARTx, uint16_t data){uint8_t temp_h,temp_l;temp_h = (data&0xff00) >> 8 ;temp_l = data&0xff;USART_SendData(pUSARTx, temp_h);while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET );USART_SendData(pUSARTx, temp_l);while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET );}/* 发送8位数据的数组 */void Usart_SendArray(USART_TypeDef* pUSARTx, uint8_t *array,uint8_t num){uint8_t i;for( i=0; i<num; i++ ) {Usart_SendByte(pUSARTx, array[i]);}while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET );}/* 发送字符串 */void Usart_SendStr(USART_TypeDef* pUSARTx, uint8_t *str){uint8_t i=0;do {Usart_SendByte(pUSARTx, *(str+i));i++;}while(*(str+i) != '\0');while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET );}///重定向c库函数printf到串口,重定向后可使用printf函数int fputc(int ch, FILE *f){/* 发送一个字节数据到串口 */USART_SendData(DEBUG_USARTx, (uint8_t) ch);/* 等待发送完毕 */while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);return (ch);}///重定向c库函数scanf到串口,重写向后可使用scanf、getchar等函数int fgetc(FILE *f){/* 等待串口输入数据 */while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);return (int)USART_ReceiveData(DEBUG_USARTx);}

 main.c

int main(void){uint8_t ch;USART_Config();LED_GPIO_Config();printf( "这是一个串口控制RGB灯的程序\n" );while (1){ch = getchar(); printf( "ch=%c\n",ch );switch(ch) {case '1': LED_RED;break;case '2': LED_GREEN; break;case '3': LED_BLUE; break;default: LED_RGBOFF; break; }}}

 led.c

#include "bsp_led.h" /** * @brief 初始化控制LED的IO * @param 无 * @retval 无 */void LED_GPIO_Config(void){/*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启LED相关的GPIO外设时钟*/RCC_APB2PeriphClockCmd( LED1_GPIO_CLK | LED2_GPIO_CLK | LED3_GPIO_CLK, ENABLE);/*选择要控制的GPIO引脚*/GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;/*设置引脚模式为通用推挽输出*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /*设置引脚速率为50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*调用库函数,初始化GPIO*/GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);/*选择要控制的GPIO引脚*/GPIO_InitStructure.GPIO_Pin = LED2_GPIO_PIN;/*调用库函数,初始化GPIO*/GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);/*选择要控制的GPIO引脚*/GPIO_InitStructure.GPIO_Pin = LED3_GPIO_PIN;/*调用库函数,初始化GPIOF*/GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure);/* 关闭所有led灯*/GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);/* 关闭所有led灯*/GPIO_SetBits(LED2_GPIO_PORT, LED2_GPIO_PIN); /* 关闭所有led灯*/GPIO_SetBits(LED3_GPIO_PORT, LED3_GPIO_PIN);}/*********************************************END OF FILE**********************/
本文链接地址:https://www.jiuchutong.com/zhishi/295199.html 转载请保留说明!

上一篇:HTML5新增的标签(html5新增的标签元素有哪些)

下一篇:多种方法解决前后端报出的SyntaxError: xxx is not valid JSON的问题,比如“[object Object]“ is not valid JSON(有什么办法解决前进中的问题)

  • 支付宝高温补贴红包可以用来抵扣外卖吗(支付宝高温补贴在哪里)

    支付宝高温补贴红包可以用来抵扣外卖吗(支付宝高温补贴在哪里)

  • 淘特怎么邀请新人(淘特怎么邀请新人注册有奖励)

    淘特怎么邀请新人(淘特怎么邀请新人注册有奖励)

  • ipadpro长宽(ipadpro长宽多少厘米)

    ipadpro长宽(ipadpro长宽多少厘米)

  • 快充的标志(华为超级快充的标志)

    快充的标志(华为超级快充的标志)

  • qq视频通话能被官方看到吗

    qq视频通话能被官方看到吗

  • 电脑关机后主机灯还亮 怎么办(电脑关机后主机上还能充电吗)

    电脑关机后主机灯还亮 怎么办(电脑关机后主机上还能充电吗)

  • 删除了好友再加回来对方知道吗(删除了好友再加回来)

    删除了好友再加回来对方知道吗(删除了好友再加回来)

  • mate30pro5g屏幕是三星的吗(mate30pro 5g的屏幕)

    mate30pro5g屏幕是三星的吗(mate30pro 5g的屏幕)

  • 钉钉工作界面显示空白(钉钉工作界面显示不出来)

    钉钉工作界面显示空白(钉钉工作界面显示不出来)

  • 为什么电脑右边的数字键用不了(为什么电脑右边的数字输入不了)

    为什么电脑右边的数字键用不了(为什么电脑右边的数字输入不了)

  • i73930k相当于什么cpu(i7 3930k相当于)

    i73930k相当于什么cpu(i7 3930k相当于)

  • iphone8p有3dtouch吗(iphone8p有3d touch吗)

    iphone8p有3dtouch吗(iphone8p有3d touch吗)

  • 怎样制作录音文件mp3(怎样制作录音文件m4a)

    怎样制作录音文件mp3(怎样制作录音文件m4a)

  • vivos1支持几瓦的快充(vivos1充电功率多少w)

    vivos1支持几瓦的快充(vivos1充电功率多少w)

  • 华为p30连拍怎么弄(华为p30 连拍)

    华为p30连拍怎么弄(华为p30 连拍)

  • 饿了么一用红包就账号异常(饿了么使用红包反而更贵)

    饿了么一用红包就账号异常(饿了么使用红包反而更贵)

  • 韩剧tv怎么更改储存路径(韩剧tv怎么更改用户名)

    韩剧tv怎么更改储存路径(韩剧tv怎么更改用户名)

  • 苹果11怎么使用自己的铃声(苹果11怎么使用nfc坐地铁)

    苹果11怎么使用自己的铃声(苹果11怎么使用nfc坐地铁)

  • 抖音直播怎么全屏播放(抖音直播怎么全屏看视频)

    抖音直播怎么全屏播放(抖音直播怎么全屏看视频)

  • 华为手机怎样电话录音(华为手机怎样电脑传输文件)

    华为手机怎样电话录音(华为手机怎样电脑传输文件)

  • 金山文档小程序如何在电脑上打开(金山文档小程序怎么导出excel文件)

    金山文档小程序如何在电脑上打开(金山文档小程序怎么导出excel文件)

  • 12306之前的号码不用了怎么办(12306之前号码没用了怎么换手机号)

    12306之前的号码不用了怎么办(12306之前号码没用了怎么换手机号)

  • 迅雷影音如何投屏(迅雷影音能投屏吗)

    迅雷影音如何投屏(迅雷影音能投屏吗)

  • 如何在快手上买东西(如何在快手上买流量包)

    如何在快手上买东西(如何在快手上买流量包)

  • oppor15怎么关闭耳机模式(oppor15怎么关闭速览)

    oppor15怎么关闭耳机模式(oppor15怎么关闭速览)

  • oppoa9和a9x的区别(oppo a9和a9x区别)

    oppoa9和a9x的区别(oppo a9和a9x区别)

  • 视频加图片怎么做的(视频加图片怎么弄)

    视频加图片怎么做的(视频加图片怎么弄)

  • 零成本打造苹果系统安装U盘 U盘重装苹果系统图文教程(iphone制造成本)

    零成本打造苹果系统安装U盘 U盘重装苹果系统图文教程(iphone制造成本)

  • 【Vue实用功能】Vue实现文档在线预览功能,在线预览PDF、Word、Excel、ppt等office文件(vue使用方法)

    【Vue实用功能】Vue实现文档在线预览功能,在线预览PDF、Word、Excel、ppt等office文件(vue使用方法)

  • 苹果macOS Big Sur系统电脑怎么安装微信? mac安装微信的两种方法(苹果macOS Big Sur 11.0.1全新系统壁纸)

    苹果macOS Big Sur系统电脑怎么安装微信? mac安装微信的两种方法(苹果macOS Big Sur 11.0.1全新系统壁纸)

  • 注册资本印花税减半征收政策
  • 二手房交易需要购房发票吗
  • 签订土地使用权成交确认协议书
  • 计提税费的会计分录怎么写
  • 跨区域涉税事项报验
  • 金税四期对个人所得税的影响
  • 福利费计提多了如何处理
  • 非金融单位贷款利息收入列示什么科目
  • 劳务成本会计科目
  • 公司退款给客户怎么写
  • 土地违约金怎么写合同
  • 购买国税金税卡年费应该怎么做账务处理?
  • 应交税费应交堤围费的税率多少?
  • 个人是否可以开展募捐
  • 案例分析关于团员青年的思想困惑疏导和成长问题释疑
  • 简化丢失专用发票的处理流程
  • 门店关闭费用怎么处理
  • 费用报销是先记账后付款还是先付款后记账
  • 有合同未收到租金税务如何处理?
  • 库存商品的核算方法
  • 预提未收的租金怎么入账
  • win11小组件加载内容出现错误
  • 企业公示啥意思
  • mac怎么连接蓝牙鼠标
  • win10专业版分辨率1920x1080不见了
  • 存出投资款是什么凭证
  • 冲暂估成本会计分录怎么做
  • 私募证券投资如何交易
  • 企业购入固定资产,价值3000元,误记入管理费用账户
  • 建安企业所得税怎么算2.25税率
  • 未实际发生的费用 可否申请赔偿
  • yolov2训练
  • 中文最早出现的时期
  • maven视频教程
  • 商场代收款发票图片
  • 树莓派能干什么
  • 应交税费下的科目设置
  • 英文好书推荐
  • python元组操作方法
  • 发票章丢了会不会有事
  • 外购固定资产入账
  • 小规模纳税人减按1%征收率征收增值税
  • 在建工程包括哪些大类科目
  • 生产成本人工费结转
  • 垃圾清运费的收费标准乱要钱怎么办
  • 工会经费可以在以后年度扣除吗
  • 信息服务费也有滞纳金吗
  • 应交税费为负数在资产负债表中的列报
  • 营业执照以外的算无证经营吗
  • 上期留抵税额可以留多久
  • 差旅费住宿专票能否抵扣
  • 房地产开发成本和房地产开发产品
  • sql语句分号
  • 主板如何清除cmos
  • win7系统软件安装就闪退怎么办
  • 组策略禁止打开文件对话框输入路径
  • ubuntu20.04升级
  • win10分辨率2560*1080
  • 如何找回windows删除的文件
  • mac os操作教程
  • SmartFTP.exe - SmartFTP是什么进程
  • 怎么给网络设置防火墙
  • WIN7系统如何设置表格默认保存位置
  • win10系统关机后又自动启动怎么办
  • windows10故障
  • win7 设置
  • windows8能免费升10吗
  • win7系统如何修复引导
  • win10系统出现问题怎么办
  • 全面了解自我,接纳和包容自我
  • 深入理解javascript特性.pdf
  • 计算机入域怎么操作
  • python socket编程步骤
  • 耳机插头怎么拔
  • shell函数库
  • jq复选框选中触发事件
  • 浅谈一下新冠的好处
  • jquery封装原理
  • 电子税务局怎么添加银行账户信息
  • 税务局发票邮寄回来怎么读入?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设