准备材料:电机驱动板、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博客
手机的蓝牙助手设置按钮
测试蓝牙效果:手机按下按钮,出现对应的结果
五、最终组装测试
(驱动板有些差异,仅供参考)
实际效果:超级超级简陋的安装,由于只有极少的电线、杜邦线,所以只能实现原地转圈圈功能。