💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
**【整理与体验】 一克拉** * * * * * 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