一.简介
通过蓝牙模块HC-05实现安卓端控制小车前进、后退、左转、右转、加速、减速、运动模式切换
二.原理
HC-05蓝牙模块:
HCO5是蓝牙串口模块,采用蓝牙2.0协议,可以与任何版本的蓝牙兼容通讯,与具有蓝牙的电脑,蓝牙主机,手机,PDA(掌上电脑),PSP(Personal Satfware Process)等终端配对。
1.参数:
供电电压:3.3V~5.0V
通信距离:10米
波特率: 支持波特率4800~13824000,默认波特率为9600
2.引脚说明:
RXD:接收端(连接Arduino的TXD端口)
TXD:发送端(连接Arduino的RXD端口)
VCC:供电端口(连接Arduino的+5V输出端口)
GND:模块供电负极(连接Arduino的GND端口)
KEY/EN:设置工作模式
1)工作模式:自动连接
2)AT指令设置模式:命令回应
3.注意事项:
只需连接RXD、TXD、VCC、GND四个端口,并且使用从机模式(被动连接)。
三.源代码
//适用于4个轮的小车
//左轮
#define ENA 6
#define inPinA1 7
#define inPinA2 8
//右轮
#define ENB 5
#define inPinB1 12
#define inPinB2 13
int speedA = 160;//左轮
int speedB = 160;//右轮
int normalSpeed = 160;
int accelerate1 = 180;
int accelerate2 = 200;
int accelerate3 = 220;
int decelerate1 = 150;
int decelerate2 = 140;
//int decelerate3 = 130;
int mode = 1;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(ENA, OUTPUT);
pinMode(inPinA1,OUTPUT);
pinMode(inPinA2,OUTPUT);
pinMode(ENB,OUTPUT);
pinMode(inPinB1,OUTPUT);
pinMode(inPinB2,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
while(Serial.available())
{
char signalChar = (char)Serial.read();
Serial.println(signalChar);
if(signalChar == 'L')
{
//左转
forwardLeft(speedB);
}
else if(signalChar == 'R')
{
//右转
forwardRight(speedA);
}
else if(signalChar == 'U')
{
//前进
forwardPwm(speedA,speedB);
}
else if(signalChar == 'D')
{
//后退
backwardPwm(speedA,speedB);
}
else if(signalChar == 'S')
{
//停止
speedA = normalSpeed;
speedB = normalSpeed;
mode = 1;
stop();
}
else if(signalChar == 'A')
{
speedA = accelerate1;
speedB = accelerate1;
}
else if(signalChar == 'B')
{
speedA = accelerate2;
speedB = accelerate2;
}
else if(signalChar == 'C')
{
speedA = accelerate3;
speedB = accelerate3;
}
else if(signalChar == 'D')
{
speedA = decelerate1;
speedB = decelerate1;
}
else if(signalChar == 'E')
{
speedA = decelerate2;
speedB = decelerate2;
}
else if(signalChar == 'F')
{
//模式选择
mode = 2;
}
if(mode == 2)
{
//延时500ms后停止
delay(500);
stop();
}
}
}
//PWM调节正转速度
void forwardPwm(int valueA,int valueB)
{
forwardPwmA(valueA);
forwardPwmB(valueB);
}
//右轮
void forwardPwmA(int value)
{
analogWrite(ENA, value);
digitalWrite(inPinA1,LOW);
digitalWrite(inPinA2,HIGH);
}
//左轮
void forwardPwmB(int value)
{
analogWrite(ENB, value);
digitalWrite(inPinB1,LOW);
digitalWrite(inPinB2,HIGH);
}
//停止
void stop()
{
stopA();
stopB();
}
void stopA()
{
analogWrite(ENA, HIGH);
digitalWrite(inPinA1,LOW);
digitalWrite(inPinA2,LOW);
}
void stopB()
{
analogWrite(ENB, HIGH);
digitalWrite(inPinB1,LOW);
digitalWrite(inPinB2,LOW);
}
//value:0~255
//PWM调节反转速度
void backwardPwm(int valueA,int valueB)
{
backwardPwmA(valueA);
backwardPwmB(valueB);
}
void backwardPwmA(int value)
{
analogWrite(ENA, value);
digitalWrite(inPinA1, HIGH);
digitalWrite(inPinA2, LOW);
}
void backwardPwmB(int value)
{
analogWrite(ENB, value);
digitalWrite(inPinB1, HIGH);
digitalWrite(inPinB2, LOW);
}
//左转 A反转 B正转
void forwardLeft(int value)
{
//stopB();
backwardPwmA(value);
forwardPwmB(value);
}
//右转 A正转 B反转
void forwardRight(int value)
{
//stopA();
backwardPwmB(value);
forwardPwmA(value);
}
四.运行效果
1)控制效果
通过手机端蓝牙调试软件 控制小车前进、后退、左转、右转、加速、减速、运动模式切换。
2)手机端蓝牙控制app
通过关注下方微信公众号《电子设计研习社》后,回复“蓝牙调试软件”,获取免费软件下载链接。