首页 > 其他分享 >【蓝牙模块】[arduino+HC-06]连接[PC+HC-05]

【蓝牙模块】[arduino+HC-06]连接[PC+HC-05]

时间:2023-01-15 00:44:18浏览次数:38  
标签:06 val arduino 蓝牙 BT 串口 HC Serial

物品\软件准备

arduino uno
公对母杜邦线
HC-06/HC-05各一个
USB转TLL
串口调试助手Xcom
Arduino IDE

连接方法HC-06

HC-06端 VCC - 5V Arduino端
HC-06端 GND - GND Arduino端
HC-06端 TXD - 串口8(自定) Arduino端
HC-06端 RXD - 串口9(自定) Arduino端

配置方法HC-06

先配置从机。
将Arduino与电脑通过USB数据线连接,通过Arduino IDE烧录如下程序到板子,以改变TXD和RXD的连接位置,防止与板子输入输出冲突。

#include <SoftwareSerial.h>
//使用软件串口,能讲数字口模拟成串口
SoftwareSerial BT(8, 9);  //TXD 8, RXD 9
char val;  //存储接收的变量
void setup() {
  Serial.begin(9600);   //与电脑的串口连接
  Serial.println("BT is ready!");
  BT.begin(9600);  //设置波特率
}

void loop() {
  //如果串口接收到数据,就输出到蓝牙串口
  if (Serial.available()) {
    val = Serial.read();
    BT.print(val);
  }
  //如果接收到蓝牙模块的数据,输出到屏幕
  if (BT.available()) {
    val = BT.read();
    Serial.print(val);
  }
}

默认波特率为9600,直接用不用改。

点击打开串口。

测试:
然后输入指令AT,进入设置成功则返回OK
正式配置:
①设置配对码(从机主机要一致)
AT+PIN1234
1234为配对码,可自行修改。
②设置从机蓝牙地址
AT+LADDR查询当前蓝牙地址
AT+LADDR12:34:56:AB:CD:EF设置地址为12:34:56:AB:CD:EF,注意地址格式。
可以不修改地址,直接把主机绑定地址设置成当前从机地址,只要保证一致即可。

连接方法HC-05

HC-05端 VCC - 5V USB TO TLL端
HC-05端 GND - GND USB TO TLL端
HC-05端 TXD - RXD USB TO TLL端
HC-05端 RXD - TXD USB TO TLL端

配置方法HC-05

同样在串口助手中配置。

设置阶段
在供电前手按住蓝牙模块上的按钮,供电后松开,看到蓝牙模块的红灯变成两秒一闪,即进入了设置模式。此时波特率为38400。

测试:
然后输入指令AT,进入设置成功则返回OK
正式配置:
①设置蓝牙模块的角色
AT+ROLE=1设置成主机模式。
成功则返回OK,以下指令均如此。
②设置配对码
AT+PSWD="1234"要与从机设置的配对码相同。
③设置连接模式
AT+CMODE=0设置成只对特定蓝牙地址的配对模式。
④设置绑定配对的蓝牙地址
AT+BIND=1234,56,ABCDEF注意此时的地址格式,与从机不同,可以通过AT+BIND查看当前绑定的从机蓝牙地址以及格式。
⑤拔掉电源,停止供电,即退出了设置模式。

连接阶段

先打开从机HC-06
再打开主机HC-05
此时两个蓝牙模块红灯均是一秒闪烁两次,
等待一会儿后会发现闪烁频率发生变化,
可以通过串口通信查看是否已经连接完成。

我又使用外接电源给Arduino进行供电,同样连接成功。
测试代码如下。通过串口调试工具,发送指令1,Arduino内的LED灯会亮一下,每发送一次会亮一下。

#include <SoftwareSerial.h>
SoftwareSerial BT(8, 9);  //TXD 8, RXD 9
char val;  //存储接收的变量

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT); //11引脚连接演示用LED
  BT.begin(9600);  //设置波特率

}
void loop(){
    //如果接收到蓝牙模块的数据,输出到屏幕
  if (BT.available()) {
    val = BT.read();
    Serial.print(val);
    if (val == '1' ) {  //接收到点亮LED指令
      Serial.print("Got command: ");  
      Serial.println(val);  
      digitalWrite(LED_BUILTIN, HIGH);  //点亮LED指令
    } else {    //接收到熄灭LED指令
      Serial.print("Got command: ");  
      Serial.println(val); 
      digitalWrite(LED_BUILTIN, LOW);      //熄灭LED指令  
    }
  }
}

标签:06,val,arduino,蓝牙,BT,串口,HC,Serial
From: https://www.cnblogs.com/iuk11/p/17052915.html

相关文章

  • (11)SpringBoot整合EhCache做缓存
      摘要:本文介绍在SpringBoot项目中,如何使用EhCache做缓存。EhCache简介:EhCache是一个纯Java的进程内缓存框架,是Hibernate中默认的CacheProvider;其缓存的数据可以存放......
  • day3 | 203.移除链表元素、707.设计链表、206.反转链表
    题目链接:203.移除链表元素-力扣(LeetCode)题目描述:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val==val 的节点,并返回 新的头节点......
  • CP1067 模拟洗牌
    考到了函数的递归+回溯,很有意思俺的做法:#include<stdio.h>#include<ctype.h>#include<string.h>#include<math.h>charb[1000];charc[1000];chard[1000];cha......
  • CP1061 小车去哪儿了
    一道很有趣的题目,考了小车的行动,同时要设置方向号来进行偏移方向俺的做法:#include<stdio.h>#include<ctype.h>#include<string.h>#include<math.h>intmain(){......
  • LeetCode.206 反转链表
    1.题目:给你单链表的头节点 ​​head​​ ,请你反转链表,并返回反转后的链表​输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]*intval;*ListNodenext;*ListNode......
  • CnWizards v0.9.8.603 Build 2011.06.06
    *单元清理增加对D2011的兼容。*字符串属性编辑器增加对WideString类型的支持。*向导专家修正一处Unicode环境下生成内容末尾字符串不完整的问题。*代码高亮修正快捷键未......
  • 迅雷 5.8.14.706 收藏版
    迅雷官方网站发布的最后5.8版号是:迅雷5.8.14.706稳定版,这个版应该就是5.9版界面大改前的5.8最终版,算是一个经典版了。这里收藏了5.8.14.706烈火版,放到趣盘仓库......
  • AGC060 题解
    Wow,ChristmasRound.--Tom66A.NoMajority(1300)结论:若一个序列有严格众数,则序列中必有两个相同数字位置之差为\(1\)或\(2\)。证明设序列长为$k$,则严格......
  • java基础06 变量、常量、作用域
    变量、常量、作用域变量variable变量:variablejava变量是程序中最基本的存储单元,其要素包括:变量名(标识符)、变量类型(数据类型)、作用域可以变化的量代表一片存储空间(这......
  • 代码随想录算法训练营第三天 链表 | 203.移除链表元素 | 707.设计链表 | 206.反转链表
    链表链表是一种线性结构,不同于使用连续空间的储存结构(vector,数组,string等),链表在内存中的储存方式并不是连续分布的,分配散乱,分配机制取决于操作系统的内存管理。C++中定义......