所需元器件
arduino板
l298n电机驱动块
小车模型和两块电机(俗称马达)
一块hc05或者hc06的蓝牙(可以接收数据的蓝牙都行,我更推荐BT24)
蓝牙
这样的小车都可以
关于以上模块,网上很多具体解释,我就懒得解释具体原理了,主要是我因为懒- -+
接线
首先来教接线
具体就是
电机驱动块的12V–电池的正极
电机驱动块的GND–电机的负极
IN1接–4
IN2接–5
IN3接–6
IN4接–7
同时,EN需要给高电平去使能ENA和ENB,实际上我们盖上跳键帽就是给了个高低平了,ENA控制使能OUT1,2 ,ENB控制使能OUT3,4。
然后从电机驱动块的GND里面再引一条线到arduino的GND上(共地,很多人控制不了是因为没有共地),5v引一条到VIN上
千万不要引12V会到arduino上,不然会烧掉arduino,vin的电平不会经过稳压和电容的处理的,之前懵懂无知,引了个12V的GND到arduino上,直接冒青烟了!!!!
接线来是蓝牙的接线:
vcc接5V
GND接GND
TX 接 RX
RX 接 TX
如图
四脚车也是如此,只不过两个电机同接一个OUT罢了。
代码部分:
(arduino烧录代码的时候,记得断开蓝牙的RX和TX,不然会占用串口,导致烧录不进去)
代码很简单:
#define IN1 4 //定义引脚4是IN1
#define IN2 5 //同上同理
#define IN3 6 //+1
#define IN4 7 //+2
char ch; //定义一个字符类型ch 用来储存接收到的数据
void setup()
{
Serial.begin(9600);//串口开始 波特率是9600 是的是1s或者1ns传输一个周期的数据
pinMode(IN1,OUTPUT);//引脚输出1
pinMode(IN2,OUTPUT);//引脚输出2
pinMode(IN3,OUTPUT);//引脚输出3
pinMode(IN4,OUTPUT);//引脚输出4
}
void loop() //开始循环?
{
if(Serial.available()>0) //连续可得到的数据?
{
ch = Serial.read(); //连续读取
Serial.print(ch);
if(ch=='0')//如果ch为0,全停 刹车
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
if(ch =='1') //IN1 IN2 高低 IN3 IN4 高低 前进
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
if(ch == '2')//IN1 IN2 低高 IN3 IN4 低高 后退
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
if(ch == '3') //IN1 IN2 高低 IN3 IN4 低高 左转,靠反向力去转
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
if(ch =='4') //IN1 IN2 低高 IN3 IN4 高低 右转,靠反向力去转
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
}
}
什么是高,什么该低,具体看你的IN1 IN2 IN3 IN4的OUT1 OUT2 OUT3 OUT4的接线。
蓝牙调试
这个时候手机下载蓝牙串口调试器,一般蓝牙密码是1234,接上蓝牙后,再用串口调试助手去调试。
打开编辑,关闭HEX(发送16进制的数)
up设置为1
OK设置为0 刹车!!!极重要!!!
down设置为2
其他同理
制作自己的app
打开app inventor的网址
http://app.gzjkw.net/
或者增强版也行
app.wxbit.com
app.wxbit.com学校网络有时候进不了
界面设计如图所示
Activity启动器1的Action填上:
android.bluetooth.adapter. action.REQUEST_ENABLE
代码设计
然后就可以控制我们的蓝牙小车了