首先需要配置蓝牙
两种蓝牙AT指令配置方法:
1、与USB转TTL相连后接入电脑,将波特率设置成9600,模块指示灯快闪,这时再按下模块的按钮便进入AT模式,这时打开串口助手,输入AT指令再回车就可以发送AT指令了。
2、与USB转TTL相连后接入电脑,将电源线断开一根,长按模块按钮,上电,然后松手,模块的指示灯慢闪,将波特率设置为38400便进入AT模式,打开串口助手,输入AT指令再回车就可以发送AT指令了。
文末附AT指令 集合
设备连接图如下
主要代码:
1、在上传代码之前,您必须安装必要的库
2、在点击编译上传按钮之前断开蓝牙模块的连接,否则您将收到编译错误消息。
3、安装AFMotor Library库方法: https://learn.adafruit.com/adafruit-motor-shield/library-install
4、下载完库之后打开 Arduino IDE >> go to sketch >> Include Libray >> ADD. ZIP Libray >> Select the downloaded ZIP File >> Open it >> Done
5、库安装成功后,您可以毫无问题地上传代码,但在上传代码时请确保蓝牙模块未与Arduino连接
#include <AFMotor.h>
//车轮控制定义
AF_DCMotor motor1(1, MOTOR12_1KHZ);
AF_DCMotor motor2(2, MOTOR12_1KHZ);
AF_DCMotor motor3(3, MOTOR34_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ);
char command;
void setup()
{
Serial.begin(9600); //设置蓝牙波特率
void loop(){
if(Serial.available() > 0){
command = Serial.read();
Stop(); //initialize with motors stoped
//Change pin mode only if new command is different from previous.
//Serial.println(command);
switch(command){
case '1': //前进
forward();
break;
case '2': //后退
back();
break;
case '3': //向左
left();
break;
case '4'://向右
right();
break;
}
}
}
void forward()//前进
{
motor1.setSpeed(255); //定义差速
motor1.run(FORWARD);
motor2.setSpeed(255);
motor2.run(FORWARD);
motor3.setSpeed(255);
motor3.run(FORWARD);
motor4.setSpeed(255);
motor4.run(FORWARD);
}
void back()//后退
{
motor1.setSpeed(255); //定义差速
motor1.run(BACKWARD);
motor2.setSpeed(255);
motor2.run(BACKWARD);
motor3.setSpeed(255);
motor3.run(BACKWARD);
motor4.setSpeed(255);
motor4.run(BACKWARD);
}
void left()//向左
{
motor1.setSpeed(255);//定义差速
motor1.run(BACKWARD);
motor2.setSpeed(255);
motor2.run(BACKWARD);
motor3.setSpeed(255);
motor3.run(FORWARD);
motor4.setSpeed(255);
motor4.run(FORWARD);
}
void right()//向右
{
motor1.setSpeed(255); //定义差速
motor1.run(FORWARD);
motor2.setSpeed(255);
motor2.run(FORWARD);
motor3.setSpeed(255);
motor3.run(BACKWARD);
motor4.setSpeed(255);
motor4.run(BACKWARD);
}
void Stop()//停止
{
motor1.setSpeed(0); //速度为零停止
motor1.run(RELEASE);
motor2.setSpeed(0);
motor2.run(RELEASE);
motor3.setSpeed(0);
motor3.run(RELEASE);
motor4.setSpeed(0);
motor4.run(RELEASE);
}
AT指令集合
指令 | 功能 | 响应 |
AT | 识别是否进入AT模式 | OK |
AT+NAME / AT+NAME=< param > | 询问名字 / 设置名字 | +NAME:< param >OK |
AT+RNAME?< param1> | 获取远程蓝牙设备名称: | 1、+NAME:< param2> OK 2、FAIL |
AT+PSWD / AT+PSWD=< param > | 询问密码 / 设置密码 | +PSWD:2333OK |
AT+UART /AT+UART=< param > < param >< param > | 询问波特率/设置波特率 (默认9600,0,0) | +UART:< param> < param >< param >OK |
AT+ROLE/AT+ROLE=< param > | 询问主从模式/设置主从模式 (返回值:0从;1主) | +ROLE:< param>OK |
AT+ADDR/AT+ADDR=< param > | 询问/更改模块地址 | +ADDR:< param>OK |
AT+RMAAD | 清除配对列表 | OK |
AT+RESET | 复位(重启) | OK |
AT+ORGL | 恢复默认状态 | OK |
AT+ IAC? | 询问访问码 | +IAC: < param>OK |
AT+CMODE/AT+CMODE=< param> | 询问/设置连接方式 (0:指定蓝牙地址连接 1:任何蓝牙地址连接 2:回环角色) | + CMODE:< param>OK |
AT+PMSAD=< param> | 从蓝牙配对列表中 删除指定认证设备 | OK |
AT+STATE | 询问蓝牙工作状态 | + STATE: < param> OK |
AT+VERSION? | 获取软件版本号 | +VERSION:< param>OK |
AT+INQ | 询问蓝牙设备 (蓝牙地址 设备类 信号强) | +INQ: < param1>, < param2> <param3>OK |
AT+INQC | 取消查询蓝牙设备 | OK |
AT+ENSNIFF=< param> | 进入节能模式 | OK |
AT+EXSNIFF=< param> | 退出节能模式 | OK |
AT+LINK=< param> | 设备连接 | OK/FAIL; Param: 远程设备蓝牙地址 |
AT+DISC | 断开连接 | 1、+DISC:SUCCESS OK; 2、+DISC:LINK_LOSS OK; 3、+DISC:NO_SLC OK; 4、+DISC:TIMEOUT OK; 5、+DISC:ERROR OK |
AT+PAIR=< param1>,< param2> | 设备配对 | 1、OK——成功; 2、FAIL——失败 Param1: 远程设备蓝牙地址; Param2:连接超时(秒) |
AT+INIT | 初始化 SPP规范库 | 1、OK——成功;2、FAIL——失败 |
AT+MRAD? | 获取最近使用过的蓝牙认证设备地址 | + MRAD :< param> OK ; Param:最近使用过的蓝牙设备地址 |
AT+ADCN? | 获取蓝牙配对列表中认证设备数 | +ADCN:< param> OK; Param:配对列表中蓝牙设备数 |
AT+FSAD=< param> | 从蓝牙配对列表中查找指定的认证设备 | 1、OK——成功 2、FAIL——失败 |
AT+RMAAD | 从蓝牙配对列表中删除所有认证设备 | OK |
AT+SENM=< param>, < param2>,AT+ SENM? | 设置/查询安全、加密模式 | 1、OK——成功 2、FAIL——失败 + SENM: < param>,< param2>,OK |
AT+SNIFF=< Param1>, < Param2>,< Param3>, < Param4> / AT+IPSCAN? | 设置/查询—SHIFF节能参数 | OK +SNIFF: < Param1> , < Param2> ,< Param3> < Param4> |
AT+MPIO? | 查询 PIO端口输入 | +MPIO:< Param> OK |
AT+PIO=< Param1>,< Param2> | 设置 PIO 单端口输出 | OK |
AT+MPIO=< Param> | 设置 PIO 多端口输出 | OK |
AT+BIND=< Param>/AT+ BIND? | 设置/查询—绑定蓝牙地址 | OK + BIND:< param> OK |