很高兴又跟大家见面了,今天教小伙伴们轻松做一个蓝牙遥控小车。
首先给大家介绍今天要使用到的主板:ITEADUINO
Mboard。
MBoard是一款基于ATMega32U4(Leonardo)芯片的带电机驱动功能的Arduino整合板。使用的是L298P电机驱动芯片,可以驱动两路直流电机或者1个步进电机。另外还配备了Bee插座、2.4G模块接口和SD卡槽,还把ATMega32U4的I/O口引出为电子积木接口,方便连接各种传感器模块。非常适合智能小车、智能机器人的开发应用。
产品特性:
板子大小: 80.77mm
X 57.66mm X 1.6mm
供电电压: 7~23V
DC
主控芯片: Atmega32u4
指示灯:
PWR, Tx, Rx, D13, C1, C2,C3, C4
通信接口: XBee,nRF24L01+,UART,IIC
I/O电压:
3-3.6V DC
I/O电流:
100-500mA
电机每路电流:最大3A
引脚图:
详细原理图和手册下载:http://pan.baidu.com/s/1c0ncd2o
在大致认识这个板子后,我们现在就用它来做一个手机蓝牙控制的小车。所需配件如下:
第一步,先把小车组装好。我想各位小伙伴们都有自己心爱的小车模型了吧?
我们以亚克力小车为例,安装很简单,两个后轮,一个万向轮。
接下来先把电机引线接好,再把mboard板子用铜柱固定在小车上,连接电机。如下图:
现在就可以烧写程序了,使用一根mini
接口的USB
数据线连接电脑和mboard
。驱动安装就不介绍了,跟arduino
的uno
、Leonardo
一样。mboard
烧写的时候”board
类型选择leonardo”
。
以下是代码,很简单,不需要库,蓝牙模块收到对应的信号就执行对应的命令。
#define _US 0x5553 //命名字符串和对应的ACII值
#define _DS 0x4453
#define _LS 0x4C53
#define _RS 0x5253
#define _UL 0x554C
#define _DL 0x444C
#define _UR 0x5552
#define _DR 0x4452
#define _SS 0x5353
#define ENA 10
#define ENB 11
#define IN1 7
#define IN2 8
#define IN3 12
#define IN4 13
#define LOWSPEED 100 //前后左右时候的速度,可以调为其他值
#define HIGHSPEED 255 //转弯的时候的速度,可以调为其他值
#define IN1_HIGH PORTE |=0x40
#define
IN1_LOW
PORTE &=~0x40
#define IN2_HIGH PORTB |=0x10
#define
IN2_LOW
PORTB &=~0x10
#define IN3_HIGH PORTD |=0x40
#define
IN3_LOW
PORTD &=~0x40
#define IN4_HIGH PORTC |=0x80
#define
IN4_LOW
PORTC &=~0x80
#define ENA_HIGH PORTB |=0x40
#define
ENA_LOW
PORTB &=~0x40
#define ENB_HIGH PORTB |=0x80
#define
ENB_LOW
PORTB &=~0x80
uint16_t value;
uint8_t r_buffer[4];
uint8_t number;
uint8_t command;
void setup(){
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
//ENA_HIGH;
//ENB_HIGH
run(0);
Serial1.begin(9600);
}
void loop(){
if(Serial1.available())
{
uint8_t readbuf = Serial1.read();
r_buffer[number]=readbuf;
number++;
if(readbuf==0x3B) //此处是结束符,3B对应的ACII值是分号
{
if(number==3)
{
value = (r_buffer[0]<<8) | (r_buffer[1]);
}
number=0;
command=1;
}
}
if(command)
{
command=0;
switch(value)
{
case _SS: run(0);break; //对应9个运动方向
case _US: run(1);break;
case _DS: run(2);break;
case _LS: run(3);break;
case _RS: run(4);break;
case _UL: run(5);break;
case _UR: run(6);break;
case _DL: run(7);break;
case _DR: run(8);break;
}
}
}
void forward()
{
ENA_HIGH;
ENB_HIGH;
IN1_HIGH;
IN2_LOW;
IN3_HIGH;
IN4_LOW;
}
void backward()
{
ENA_HIGH;
ENB_HIGH;
IN1_LOW;
IN2_HIGH;
IN3_LOW;
IN4_HIGH;
}
void turnleft()
{
ENA_HIGH;
ENB_HIGH;
IN1_LOW;
IN2_LOW;
IN3_HIGH;
IN4_LOW;
}
void turnright()
{
ENA_HIGH;
ENB_HIGH;
IN1_HIGH;
IN2_LOW;
IN3_LOW;
IN4_LOW;
}
void stopcar()
{
ENA_LOW;
ENB_LOW;
IN1_LOW;
IN2_LOW;
IN3_LOW;
IN4_LOW;
}
void run(int direct)
{
switch(direct)
{
case 0:
IN1_LOW;
IN2_LOW;
IN3_LOW;
IN4_LOW;
analogWrite(ENA,0);
analogWrite(ENB,0);
break;
case 1:
IN1_HIGH;
IN2_LOW;
IN3_HIGH;
IN4_LOW;
analogWrite(ENA,LOWSPEED);
analogWrite(ENB,LOWSPEED);
break;
case 2:
IN1_LOW;
IN2_HIGH;
IN3_LOW;
IN4_HIGH;
analogWrite(ENA,LOWSPEED);
analogWrite(ENB,LOWSPEED);
break;
case 3:
IN1_LOW;
IN2_LOW;
IN3_HIGH;
IN4_LOW;
analogWrite(ENA,LOWSPEED);
analogWrite(ENB,LOWSPEED);
break;
case 4:
IN1_HIGH;
IN2_LOW;
IN3_LOW;
IN4_LOW;
analogWrite(ENA,LOWSPEED);
analogWrite(ENB,LOWSPEED);
break;
case 5:
IN1_HIGH;
IN2_LOW;
IN3_HIGH;
IN4_LOW;
analogWrite(ENA,LOWSPEED);
analogWrite(ENB,HIGHSPEED);
break;
case 6:
IN1_HIGH;
IN2_LOW;
IN3_HIGH;
IN4_LOW;
analogWrite(ENA,HIGHSPEED);
analogWrite(ENB,LOWSPEED);
break;
case 7:
IN1_LOW;
IN2_HIGH;
IN3_LOW;
IN4_HIGH;
analogWrite(ENA,LOWSPEED);
analogWrite(ENB,HIGHSPEED);
break;
case 8:
IN1_LOW;
IN2_HIGH;
IN3_LOW;
IN4_HIGH;
analogWrite(ENA,HIGHSPEED);
analogWrite(ENB,LOWSPEED);
break;
}
}
在arduino
IDE编译上传完成后,插上蓝牙bee模块,接上电源,硬件完成实物图:
http://s13/mw690/003bqY9ggy6KgdqwRu41c&690mboard小车" TITLE="【简单教程】手机蓝牙遥控arduino
mboard小车" />
http://s4/mw690/003bqY9ggy6KgdqAkAbf3&690mboard小车" TITLE="【简单教程】手机蓝牙遥控arduino mboard小车" />
此时,蓝牙指示灯不停闪烁,处于等待配对状态。
好消息:ITEAD自家的蓝牙小车遥控APP已经上线了!
现在不用烦恼了!ITEAD已经设计了自己专属的APP,目前只支持安卓系统屏幕4寸-7寸屏幕的手机或者平板(7寸的话界面排版可能会有空隙,不过不影响使用)。
先上视频和照片!
http://s4/mw690/003bqY9ggy6PESDPOdta3&690mboard小车" TITLE="【简单教程】手机蓝牙遥控arduino mboard小车" />
使用方法:
安装完成后,点击Set up
按键,可以看到软件默认设置好的按键指令,如下图:
http://s13/mw690/003bqY9ggy6PESFh5Rabc&690mboard小车" TITLE="【简单教程】手机蓝牙遥控arduino mboard小车" />
不过我们现在的小车代码已经修改过了,所以这里面的设置也要改一下先。修改设置后如图:
http://s3/mw690/003bqY9ggy6PESFj7oKd2&690mboard小车" TITLE="【简单教程】手机蓝牙遥控arduino mboard小车" />
输入完成后点击返回即可自动保存设置。可能在输入的时候过程会有点繁琐,给点耐心!
说明一下:UL;是UP+LEFT(左上),US;是UP+STRAIGHT(直行),D是DRAW BACK(后退)依次类推。重点是SS;这个指令是让小车停止(Stopstop),我们把它设置为on和off。其他ABCD按键暂时没有使用到,可以自行开发用途。
返回主界面后,点击手机菜单键可以打开搜索链接按键,如图:
http://s5/mw690/003bqY9ggy6PESFeAte84&690mboard小车" TITLE="【简单教程】手机蓝牙遥控arduino mboard小车" />
搜索到itead设备,首次连接需要输入pin码:1234
连接配对成功后就可以用手机遥控Mboard蓝牙小车了!
最后一个说明:很多小伙伴反应配对上后发指令小车不会动,这是因为供电不足的原因。请一定从设配器口供9V-24V的电源,小车上的4节电池槽可以用来给主板供电,不过如果用9V以上的充电池的话就不需要用电池槽了。本教程使用的是3节18650充电锂电池,电压12V。
APP下载地址:百度云盘http://pan.baidu.com/s/1jGwyzvK
按下刚设置好的按键,看小车是不是动起来了?
PS:如果小车原地打转,就是电机+ -接反了。如果跟设置的控制方向相反,可以重新设置键盘,左右命令反过来即可。
加载中,请稍候......