单片机打印AT指令控制蓝牙模块

#单片机# #蓝牙# #AT指令集#

PS:强烈不建议使用这个方法!用软串口就可以!

社团最近在进行一个开发小车的项目,其中一条要用蓝牙控制。统一购买的蓝牙名字都是HC-05,大家不知道哪个是自己的蓝牙,造成混乱。于是需要自定义蓝牙的名称,后续更进一步的开发也要用到AT指令,故花了一天时间来探索。单片机大家都有,而USB-TTL只有一个,能不能用单片机来给蓝牙模块发AT指令呢?

探索的结论如下:

如何用单片机自定义蓝牙名称和密码

需要:任意单片机(我使用的是esp8266,Arduino开发),蓝牙模块,四根双母头杜邦线,手机蓝牙终端app

原理:电脑给单片机烧录程序,再由单片机写入蓝牙。全过程都可以在Arduino自带的串口调试工具里观测,利于我们debug。

Ps:为什么要经过单片机,而不能直接用串口监视工具发AT指令给蓝牙?个人发现从串口监视工具发送的消息送到了单片机的串口缓存区,而单片机发送的消息同时送到了串口监视工具和蓝牙。

代码介绍

封装好的读取代码,方便我们在串口查看蓝牙发来的信息。

void read()
{ 
  delay(200);//确保已经接收完毕
  while(Serial.available())
  {
    String serialData = Serial.readString();//昨天课上还吐槽这个函数用得少
    Serial.println(serialData);
  }
  delay(1000);
}

 封装好的启动代码

void begin()
{
  Serial.print("AT\r\n");
  read();
}

封装好的改名字代码

void changeName()
{
  Serial.print("AT+NAME?\r\n");
  read();
  Serial.print("AT+NAME=君の名は\r\n");//此处修改蓝牙名字
  read();
  Serial.print("AT+NAME?\r\n");
  read();
}

 封装好的改密码代码

void changePSWD()
{
  Serial.print("AT+PSWD?\r\n");
  read();
  Serial.print("AT+PSWD=2016\r\n");//此处修改连接密码
  read();
  Serial.print("AT+PSWD?\r\n");
  read();
}
实际步骤
步骤1

打开代码 BLE_AT.ino,找到changePSWD函数和changeName函数,修改蓝牙名字和密码。(改密码的原因是防止别人看到你优秀的蓝牙名字心怀不轨)

注意:不要删掉\r\n。

步骤2

不要接蓝牙,直接给单片机烧录代码(记得选单片机型号和端口)打开串口调试工具,设置波特率38400,短按单片机上的reset,可以看到这样的东西:

不用管AT前面那一坨东西(个人猜想应该是上电打印,如果波特率正确就能看到具体内容了)

然后短按单片机上的FLASH按键,可以看到这样的东西:(名字和密码内容可能不一样)

这样说明烧录成功了。

这些你看到的都是单片机发到串口(PC and 蓝牙)上的内容。你在串口里发出去的内容是不显示的。(Arduino串口调试工具的特点)

步骤3

蓝牙Rx接单片机Tx,Tx接Rx,VCC接3.3,GND接GND。关掉手机的蓝牙,按住蓝牙上的黑色按键,然后再给单片机上电,一开始自带的LED灯会快闪,之后开始慢闪,这时松开按键,蓝牙就进入了命令响应模式(AT模式),可以用波特率为38400的指令来交互。

Ps:如果LED灯快闪,说明进入了自动连接模式,可以用手机连接,但是不能用AT指令;对应的,慢闪时不能连接手机。

步骤4:打开串口监视器,按下单片机的FLASH键。看看效果如何。

这样就修改好了。

步骤5:拔掉蓝牙,给单片机烧上输出串口内容的代码,串口调试工具设置波特率9600,给蓝牙重新上电为自动连接模式(LED快闪),打开手机终端app,找到你的名字,连接,输入密码,然后就可以测试蓝牙的功能了。

PS:如果你之前已经连接过该蓝牙,那么它很大概率会以之前的名字(HC-05)出现在已经连接过的蓝牙目录里。再次连接即可更新它的名字。

(真心觉得AT指令集是个非常棒的交互方式)

以此为基础,可以往蓝牙上输出任何你想要的AT指令了。

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值