Arduino---HC-05 蓝牙模块
蓝牙基础知识回顾:
(一)Arduino和HC-05连接

注意:Arduino通过TX与HC-05进行通信,而Arduino的电压为5V,HC-05的允许电压为3.3V。短时间通信无妨(长时间可能烧毁HC-05)<接分压电路>

U = */ = .3V
I = 5V/(10K+20K) = .16mA
(二)Arduino和HC-05和手机通信

1.手机发送信息给蓝牙
2.蓝牙将信息通过TX口发送给Arduino的串口缓冲区(Arduino可以接收)
3.Arduino只需要Serial.read()操作就可以取出蓝牙传过来的数据
缺点:使用Serial.read()读取数据,可能也会读取到电脑串口发送的数据(导致数据混乱)
所以推荐使用SoftwareSerial.h头文件进行蓝牙操作(操作方法下面有使用)--------软件串行接口
补充:串口透传---透明传输
蓝牙传输数据使用透明传输:在传输过程中数据不发生任何形式的变化,仿佛传输过程是透明的,数据原封不动的从发送方传输到接收端
补充:硬件串行接口和软件串行接口
Serial---硬件串行接口
SoftwareSerial---软件串行接口
一:问题
(一)出现在AT模式下只有第一个命令可以正确返回OK,其他返回ERROR(0)
(二)出现手机和蓝牙相连发送数据始终乱码,不正确问题
二:解决问题1:进入AT模式
(一)HC-05在AT模式下的频率必须是38400
(二)注意在命令结束后面都需要我们加上回车符

(三)arduino下设置代码,进入AT模式
//HC-05进入设置AT模式
#include <SoftwareSerial.h> SoftwareSerial BT(,); void setup()
{
//开启电脑通信串口,因为HC-05的波特率为38400,两者通信保持一致
Serial.begin();
//开启蓝牙,设置波特率38400,进入AT模式
BT.begin(); //告诉电脑,蓝牙准备好了
Serial.println("BT is ready!");
} char AT_Cmd,AT_Rec; void loop()
{
//若是电脑发送信息
if(Serial.available()>)
{
//读取信息,并且将信息发送给蓝牙,进行AT设置
AT_Cmd = Serial.read();
BT.print(AT_Cmd);
} //若是接收到蓝牙返回的信息:一般设置后返回OK
if(BT.available()>)
{
AT_Rec = BT.read();
Serial.print(AT_Rec);
}
}
疑惑:为什么在BT.available下,电脑依旧会一直显示蓝牙回收的信息(难道蓝牙在一直发送响应信息)?
(四)重点:解决问题一(除了第一个以外的其他命令返回error)
HC-05的EN脚先接3.3V,接着按着KEY键不放,然后给模块上电(供5V)后,这一瞬间模块进入了AT命令响应状态,
你才可以在串口调试助手里面输入一条AT命令;
如果想再输入一条AT命令,你必须重复刚才的过程(断电后再按KEY键再上电),
也就是说模块在进入了AT命令响应状态后只能响应一条AT命令(原因不明,不知道是不是只有我的这样)

按住先断开HC-05的vcc接线(断电),然后一直按住Key,再接上vcc进行通电,通电后1s可以松开Key。
每当需要发送一条AT数据,都需要重复上面操作
(五)其他方法解决问题1
1.使用其他串口工具(未使用)
2.在调试代码中直接写入AT指令(测试可用)
#include <SoftwareSerial.h> SoftwareSerial BT(,); void setup()
{
//开启电脑通信串口,因为HC-05的波特率为38400,两者通信保持一致
Serial.begin();
BT.begin(); //告诉电脑,蓝牙准备好了
Serial.println("BT is ready!"); BT.println("AT");
delay();
BT.println("AT+NAME=HC-05");//命名模块名
delay();
BT.println("AT+ROLE=0");//设置主从模式:0从机,1主机
delay();
BT.println("AT+PSWD=1233");//设置配对密码,如1234
delay();
BT.println("AT+UART=9600,0,0");//设置波特率9600,停止位1,校验位无
delay();
BT.println("AT+RMAAD");//清空配对列表
}
只需要开始先断电一次,才可以进入AT模式,后面不需要断电操作
注意:只有当蓝牙模块没有和其他设备(除了开发板之外)连接AT指令才会执行给蓝牙模块本身,否则会被当成数据发送给其他设备
三:解决问题2:手机连接蓝牙后传输数据乱码
(一)原因:HC-05的默认频率可能是38400,而手机的频率为9600,两种的频率不同,数据传输出错
(二)解决方法:进入AT模式,设置频率为9600(如上面的设置)
BT.println("AT+UART=9600,0,0");//设置波特率9600,停止位1,校验位无
(三)补充部分AT指令(注意:不同模块AT指令不同05,06就有所差别)
| AT+UART? | 查询波特率 |
| AT+UART=参数1,参数2,参数3 | 设置波特率,停止位,校验位 |
四:案例使用---蓝牙点亮小灯
void setup() {
// put your setup code here, to run once:
Serial.begin();
pinMode(,OUTPUT);
}
char ch;
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()>)
{
ch = Serial.read();
if(ch=='')
digitalWrite(,HIGH); //开启小灯
else
digitalWrite(,LOW); //关闭小灯
Serial.print(ch);
}
}
代码推荐使用SoftwareSerial实现
#include <SoftwareSerial.h> SoftwareSerial BT(,);
char ch; void setup() {
// put your setup code here, to run once:
Serial.begin();
pinMode(,OUTPUT);
BT.begin();
} void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()>)
{
ch = Serial.read();
BT.print(ch);
} if(BT.available()>)
{
ch = BT.read();
Serial.print(ch);
if(ch=='')
{
digitalWrite(,HIGH);
BT.println("Command: LED ON");
delay();
}
else
{
digitalWrite(,LOW);
BT.println("Command: LED OFF");
delay();
}
}
}
五:Arduino无线蓝牙模块HC06安卓应用Arduino Bluetooth Controller下载(百度网盘)《或者手机应用下载蓝牙串口》
Arduino---HC-05 蓝牙模块的更多相关文章
- Arduino使用HC05蓝牙模块与手机连接
Arduino使用HC05蓝牙模块与手机连接 一切都是最好的选择 首先是线路连接,一定不要接错了 Arduino 代码 #include <SoftwareSerial.h> // Pin ...
- HC系列蓝牙模块连接单片机与电脑,传输数据(蓝牙心电测试)
毕设做无线心电监护.有线的做出来了,AD8232+MCU+LabVIEW上位机.pcb还没时间搞,这个9*7*2.5cm拿来测试能用. 自己做了AD8232的模拟前端,打的板子还没到没法测试. 虽然比 ...
- Arduino蓝牙模块实现通信
蓝牙参数特点 1.蓝牙核心模块使用HC-06从模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接 2.led指示蓝牙连接状态,闪烁表示没有 ...
- Arduino 各种模块篇 蓝牙模块 手机蓝牙控制Arduino LED灯
解决方案. 条件: 1.手机android 商店下载 blueTerm 2.向arduino中载入如下代码: char val; ; void setup() { Serial.begin(); pi ...
- 【Arduino】开发入门【十】Arduino蓝牙模块与Android实现通信
[Arduino]开发入门[十]蓝牙模块 首先show一下新入手的蓝牙模块 蓝牙参数特点 1.蓝牙核心模块使用HC-06从模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机 ...
- Arduino入门笔记(9):蓝牙模块及第一辆蓝牙遥控小车
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino UNO板 https://item.t ...
- [TPYBoard-Micropython之会python就能做硬件 7] 学习使用蓝牙模块及舵机
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.实验器材 1.TPYboard V102板 一块 2 ...
- HC-42蓝牙模块-nRF52832-数传蓝牙
资料下载地址:链接:https://pan.baidu.com/s/1RRajrI5NvNY8tRVuYbOTug 提取码:31ho 我的蓝牙模块淘宝购买地址:https://detail.tm ...
- 使用Arduino Nano驱动Lora模块
使用Arduino Nano驱动Lora模块 为什么选用Lora 射频通信芯片有很多种,但是一般在同样功耗下,距离没有Lora远;同等范围下,没有Lora节能. Lora通信只适用于低速率,高延时的场 ...
随机推荐
- GPU---NVIDIA GPU 计算能力
查询网址:https://developer.nvidia.com/cuda-gpus 使用,makefile文件实例: GPU= CUDNN= OPENCV= OPENMP= DEBUG= ARCH ...
- Codeforces Round #510 (Div. 2) C. Array Product
题目 题意: 给你n个数,有两种操作,操作1是把第i个位置的数删去, 操作2 是把 a[ j ]= a[ i ]* a[ j ],把a[ i ]删去 .n-1个操作以后,只剩1个数,要使这个数最大 . ...
- No qualifying bean of type 'org.springframework.scheduling.TaskScheduler' available
2019-07-22 17:59:30,966 [DEBUG] [localhost-startStop-1] [ScheduledAnnotationBeanPostProcessor.java : ...
- Django中的Session与Cookie
1.相同与不同 Cookie和Session都是为了记录用户相关信息的方式, 最大的区别就是Cookie在客户端记录而Session在服务端记录内容. 2.Cookie和Session之间的联系的建立 ...
- 专为简化 C 开发而设计的编程语言 Trad
Trad 是一个专为简化 C 开发而设计的编程语言,它: 基于 C: 经编译器编译后能得到干净可读的标准 C 代码,其与 C 的关系就像 TypeScript 与 JavaScript 一样 专为 U ...
- Python十大经典排序算法
现在很多的事情都可以用算法来解决,在编程上,算法有着很重要的地位,将算法用函数封装起来,使程序能更好的调用,不需要反复编写. Python十大经典算法: 一.插入排序 1.算法思想 从第二个元素开始和 ...
- Linux监控系统概览
自从Linux系统诞生之始,监控系统就随之出现. 当然说到监控系统,我们就必须聊到SNMP协议,SNMP分为管理端(NMP)和被管理端. 管理端周期性的到被监控端采集数据,被监控端还需要有权限收集数据 ...
- jQuery事件触发前后进行其他的操作
<!-- 事件触发前后执行其他操作的三种方式: 多适用于:公众号的订阅,有订阅的可以收到文章,没有订阅的收不到文章. --> <!DOCTYPE html> <html ...
- php面向对象:类的继承实例讲解
什么是类的继承?说白了,我觉得就是提高代码使用效率的.下面我就给大家介绍下继承.大理石平台维修 类的继承概念 子类继承父类的所有成员变量个方法,包括构造方法,当子类被实例化时,php会现在子类中查询构 ...
- Greenplum table 之 外部表
转载自: https://www.cnblogs.com/kingle-study/p/10552097.html 一.外部表介绍 Greenplum 在数据加载上有一个明显的优势,就是支持数据的并发 ...