准备材料:电机驱动板、Arduino板、蓝牙模块、小车全家桶

制作流程:一、组装小车 二、接线 三、烧录代码 四、调试蓝牙 五、测试

一、组装

按照图纸组装,有手就行。一定一定要准备螺丝刀和多几条杜邦线,或者问商家要多几条电线

​​

血的教训:由于电线不足,所以没有安装电源开关,也只测试了一个电机是否能转动成功。

电机驱动模块介绍:

这是最低级的:

​​

最好买普遍的L298N电机驱动:

arduino板可以供电,为什么要加电机驱动模块?

1、四块电池接电机,电流过大,烧坏arduino板。

2、电机驱动模块可以实现两个直流电机的正反向驱动,正转、反转、刹车、慢行,否则只会直行

3、电机驱动模块具有驱动能力强,发热量低,抗干扰能力强的特点。

其中左边和右边的孔一一对应,我们可以将Arduino的数字输出针脚接到in1 ~ in4上,即可将对应的高低电平信号映射到驱动板输出的接线柱上,从而控制电机

二、接线

原理图:

Arduino板

驱动板

VIN

+

GND

5

INT1

6

INT2

9

INT3

10

INT4

原理:电池组供电给电机驱动板,和Arduino板。Arduino板相当于一个智能开关,传输信号给驱动板的INT1-4引脚,INT引脚再决定是否输出电压给它们对应的输出引脚(接电机)。

蓝牙模块用法传送门:Arduino蓝牙模块实验(HC-42)_Z·y001的博客-CSDN博客

蓝牙模块先不用接。 先测试一下驱动板,电机是否能转动

刚接上去电机即可转动。

三、代码烧录

拆下驱动板

单独连接Arduino和电脑

char serial_data; // 将从串口读入的消息存储在该变量中

int wheel_R_1 = 5; // 右轮in1对应Arduino 5号引脚

int wheel_R_2 = 6; // 右轮in2对应Arduino 6号引脚

int wheel_L_1 = 9; // 左轮in3对应Arduino 9号引脚

int wheel_L_2 = 10; // 左轮in4对应Arduino 10号引脚

void setup(){

// 配置所有控制轮的引脚为输出

pinMode(wheel_L_1, OUTPUT);

pinMode(wheel_L_2, OUTPUT);

pinMode(wheel_R_1, OUTPUT);

pinMode(wheel_R_2, OUTPUT);

// 配置蓝牙串口波特率

Serial.begin(9600);

}

void loop(){

if(Serial.available()){

// 将从串口读入的消息存储在该变量中

serial_data = Serial.read();

// 按照 w a s d x 在键盘上的布局来控制车

// 如果接收到 w ,直行

if( serial_data == 'w' ){

move_ahead( ); //直行的函数

Serial.println("The car is moving ahead!"); //手机蓝牙端显示

}

// 如果接收到 x ,后退

else if( serial_data == 'x'){

move_backwards( );

Serial.println("The car is moving backwards!");

}

// 如果接收到 a ,左转

else if( serial_data == 'a'){

turn_left( );

Serial.println("The car is turning left!");

}

// 如果接收到 d ,右转

else if( serial_data == 'd'){

turn_right( );

Serial.println("The car is turning right!");

}

// 如果接收到 s ,停止

else if( serial_data == 's'){

stop();

Serial.println("The car is stopping!");

}

}

}

// 定义直行函数

void move_ahead(){

digitalWrite( wheel_L_1, HIGH);

digitalWrite( wheel_L_2, LOW);

digitalWrite( wheel_R_1, HIGH);

digitalWrite( wheel_R_2, LOW);

}

// 定义后退函数

void move_backwards(){

digitalWrite( wheel_L_1, LOW);

digitalWrite( wheel_L_2, HIGH);

digitalWrite( wheel_R_1, LOW);

digitalWrite( wheel_R_2, HIGH);

}

// 定义左转函数

void turn_left(){

digitalWrite( wheel_L_1, LOW);

digitalWrite( wheel_L_2, LOW);

digitalWrite( wheel_R_1, HIGH);

digitalWrite( wheel_R_2, LOW);

}

// 定义右转函数

void turn_right(){

digitalWrite( wheel_L_1, HIGH);

digitalWrite( wheel_L_2, LOW);

digitalWrite( wheel_R_1, LOW);

digitalWrite( wheel_R_2, LOW);

}

void stop(){

digitalWrite( wheel_L_1, LOW);

digitalWrite( wheel_L_2, LOW);

digitalWrite( wheel_R_1, LOW);

digitalWrite( wheel_R_2, LOW);

}

​​

进入串口监视器,在这里我们可可以对上传到板上的程序进行测试,在输入栏输入“a”后,点击【发送】按钮,会发现文本框里可以从Arduino得到相应的反馈(这是在源代码中设置的),然后还可以依次测试发送“w”、“s”、“d”这几种消息,如均正常,则程序无误。

四、调试蓝牙

蓝牙模块用法传送门:Arduino蓝牙模块实验(HC-42)_Z·y001的博客-CSDN博客

手机的蓝牙助手设置按钮

测试蓝牙效果:手机按下按钮,出现对应的结果

五、最终组装测试

(驱动板有些差异,仅供参考)

实际效果:超级超级简陋的安装,由于只有极少的电线、杜邦线,所以只能实现原地转圈圈功能。

​​