**【整理与体验】 一克拉**
* * * * *
1、蓝牙串口是基于SPP协议(Serial Port Profile)。能在有蓝牙的设备之间创建串口,进行数据传输的一种设备。
2、蓝牙串口的目的是在两个不同设备上保证一条完整的通信路径。
3、蓝牙核心模块一般使用HC系列,本案例使用【BT04-A】模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接。
4、led指示蓝牙连接状态:闪烁表示蓝牙没有连接,常亮表示蓝牙已连接并打开了端口。
5、输入电压3.6~6V,未配对时电流约30mA,配对后约10mA,输入电压禁止超过7V!
6、可以直接连接各种单片机(51,AVR,PIC,ARM,MSP430等),5V单片机也可直接连接
7、在未建立蓝牙连接时支持通过**AT指令设置**波特率、名称、配对密码,设置的参数掉电保存。蓝牙连接以后自动切换到**透传模式**
8、Arduino 与蓝牙模块连接方法
VCC:接Arduino的5V。
GND:接Arduino的GND。
TXD:发送端,接Arduino的RX。
RXD:接收端,接Arduino的TX。
![](https://box.kancloud.cn/530fd6b3be2186d2c9c66ae162d8b4a0_690x680.jpg)
* * * * *
### 一、 调试源代码 先测通。
**1、若UNO-->发送端,PC-->接收端,烧录以下代码**
void setup()
{
Serial.begin(9600); //初始化串口并设置波特率为9600
}
void loop()
{
Serial.print("Hello!"); //串口向外发送字符串
Serial.println(" lqzx"); //串口向外发送字符串 ,并带回车
delay(1000); //延时
}
* * * * *
**2、若UNO-->接收端,PC-->发送端,烧录以下代码**
void setup(){
Serial.begin(9600); //初始化串口并设置波特率为9600
}
void loop(){
char val;
val = Serial.read(); //读串口
if(val!=-1){
Serial.print(val); //将收到是数据再通过串口发送出去
}
}
将上面代码复制粘贴到IDE,烧录程序到Arduino,烧录完成后,从IDE自带的串口助手观察结果:输入内容,发送时出现
![](https://box.kancloud.cn/ec2eb5fb67edcfa89c619bafb40dc787_610x612.jpg)
### 二、测通后,进一步实现Arduino 蓝牙与安卓手机的通信
1、首先下载Android手机的蓝牙管理软件 [千月串口](https://pan.baidu.com/s/1oAggO58) 或扫描二维码下载:
![](https://box.kancloud.cn/8e7e9b740dd4cea9e840030ffa8b7987_280x280.png)
2、打开手机上蓝牙,打开千月串口,找到目标蓝牙配对,在手机端输入,则有返回数据。手机能返回数据
![](https://box.kancloud.cn/beedb7bb3eaf6ebb09492a3d4fc6ffb5_394x714.jpg)
3、打开arduino串口监视器,输入数据,有数据返回。蓝牙能返回数据
![](https://box.kancloud.cn/ec2eb5fb67edcfa89c619bafb40dc787_610x612.jpg)
由2、3测试,表明手机与arduino的通讯已建立。
* * * * *
* * * * *
### 三、其它实例展示
Arduino 蓝牙与手机APP 通信的实现(手机控制小车案例LED演示)
1、下载手机APP:手机控制![arduino.apk](https://pan.baidu.com/s/1qZhiy4k) 在手机上安装好。或扫描二维码安装
![](https://box.kancloud.cn/a46a8cb45f1b004be5c346bb55cef32e_280x280.png)
打开手机控制arduino,界面如下:
![](https://box.kancloud.cn/6bc022911f76ec5b3f835152c12a539d_406x708.jpg)
温馨提示:点击“前”发送文本为“q”,点击“后”发送文本为“h”......
* * * * *
2、将下面代码用arduino IDE下载(上传或者叫烧录)到arduino即可联调:
// 手机控制小车案例LED演示
void setup(){
Serial.begin(9600); //初始化串口并设置波特率为9600
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
}
void loop(){
char val;
val = Serial.read(); //读串口
if (String(val).equals(String("q"))) { //前
digitalWrite(13,HIGH);
} else if (String(val).equals(String("h"))) { //后
digitalWrite(12,HIGH);
} else if (String(val).equals(String("z"))) { //左
digitalWrite(11,HIGH);
} else if (String(val).equals(String("y"))) { //右
digitalWrite(10,HIGH);
} else if (String(val).equals(String("t"))) { //停止
digitalWrite(9,HIGH);
} else if (val!=-1) {
Serial.print(val); //将收到是数据再通过串口发送出去
}
}
3、实际情况可不是这样的!先自己用LED发光二极管演示看看接到对应数字引脚上,用手机控制的逻辑对不对。修改完善你自己的arduino程序,来达到你的要求。
* * * * *
### Arduino 蓝牙与手机APP 通信的实现
(蓝牙-门锁手机钥匙)
1、代码
int pxq; // 定义整数型全局变量为pxq,用来保存接收的数据。
void setup() {
Serial.begin(9600); // 打开串口(蓝牙)
pinMode(9,OUTPUT); // 定义9脚为输出。(数字或PWM)
pinMode(10,OUTPUT); // 定义10脚为输出。
pinMode(11,OUTPUT); // 定义11脚为输出。
pinMode(12,OUTPUT); // 定义12脚为输出。
pinMode(13,OUTPUT); // 定义13脚为输出。
}
void loop() {
while (Serial.available() > 0) { // 串口收到字符数大于零。
pxq = Serial.parseInt(); // 在串口数据流中查找一个有效整数。
if (Serial.read() == 'X') { // 收到结束符后开始处理数据。
switch (pxq) { // 判断数据内容。
case 1001:
digitalWrite(10,HIGH); // 点亮10脚LED。
Serial.println(pxq); // 回传数据并带回车。
break;
case 1002:
digitalWrite(10,LOW); // 熄灭10脚LED。
Serial.println(pxq); // 回传数据并带回车。
break;
case 2001:
digitalWrite(11,HIGH); // 点亮11脚LED。
Serial.println(pxq); // 回传数据并带回车。
break;
case 2002:
digitalWrite(11,LOW); // 熄灭11脚LED。
Serial.println(pxq); // 回传数据并带回车。
break;
case 3001:
digitalWrite(12,HIGH); // 点亮12脚LED。
Serial.println(pxq); // 回传数据并带回车。
break;
case 3002:
digitalWrite(12,LOW); // 熄灭12脚LED。
Serial.println(pxq); // 回传数据并带回车。
break;
case 4001:
digitalWrite(13,HIGH); // 点亮13脚LED。
Serial.println(pxq); // 回传数据并带回车。
break;
case 4002:
digitalWrite(13,LOW); // 熄灭13脚LED。
Serial.println(pxq); // 回传数据并带回车。
break;
default:
pxq = map(pxq,0,100,0,100); // 转换数据范围到PWM输出值。
analogWrite(9,pxq); // 调整LED亮度。(PWM)
}
}
}
}
2、下载手机APP:[蓝牙-门锁手机钥匙.apk](https://pan.baidu.com/s/1nwlYoM9) 在手机上安装好。或扫描二维码安装
![](https://box.kancloud.cn/a6eebf14a53727a9b7c946f420fddc5d_280x280.png)
打开蓝牙-门锁手机钥匙手机APP,如下图:
![](https://box.kancloud.cn/36b35c477b1b49a828260a0a597e9805_418x710.jpg)
3、联调看效果(这里用LED发光二极管模拟)
* * * * *
### 蓝牙AT设置
用于开锁具有保密级别的项目,蓝牙配对密码一定要修改,最后把名称也改一改,这就需要利用AT命令来设置。BT04-A 只需连接四根线,上电就自动进入AT模式。不需置高AT功能端!!
AT+NAME //查询:返回查看蓝牙名称
AT+NAMEcklm07 //设置:设置蓝牙名称为cklm07
AT+ROLE //设置/ 查询:返回查看蓝牙模式为0从模式
AT+CMODE //设置/ 查询:蓝牙连接模式1为任意地址连接模式
AT+PIN //设置/ 查询:蓝牙配对密码出厂值为1234
AT+DEFAULT //恢复出厂设置
AT+LADDR //设置/ 查询: MAC 地址
AT+RESET //复位
例子:设置配置密码为 1111
发送:AT+PIN1111\r\n
返回:+PIN=1111
此时表示配对密码已经配置成 1111
AT+BAUD ////设置/ 查询: 波特率
返回:波特率
1:1200
2:2400
3:4800
4:9600
5:19200
6:38400
7:57600
8:115200
9:230400
A:460800
B:921600
C:1382400
默认波特率:9600
- 第 1 节 【基础】认识Arduino
- 电子知识
- Arduino与图形编程软件结合使用
- 第 2 节 【基础】串口类串口并口
- 第 3 节 【基础】认识传感器
- 认识舵机
- 超声波传感器
- 认识蓝牙
- LCD1602屏显
- 光敏电阻传感器
- 第 4 节 【教程】Arduino示例教程模块版
- 第 5 节 【概述】电脑控制UNO板组件
- 第 6 节 【实例】光敏传感器与LED灯结合用(自控节能灯)
- 第 7 节 【实例】超声波测距及调试
- 第 8 节 【实例】点亮LED灯
- 第 9 节 【实例】可控舵机-电位器控制舵机
- 第 10 节 【实例】安卓手机控制Arduino单片机-蓝牙串口通讯
- 第 11 节 【实例】WIFI物联-贝壳物联网控制LED灯