- Arduino UNO R3
- Mpu6050陀螺仪
- HC-06蓝牙模块
- 晶门SSD 1306 0.96英寸OLED显示模块
- HC-SR04 超声波测距模块
- 红外对管模块
- WS2812全彩LED模块
- TB6612电机驱动模块
- 杜邦线若干(双公头,双母头,公母头)
- 电机两个(含霍尔测速编码器)
- 超声波
- GND -- GND
- Echo -- A3
- Trig -- A2
- VCC -- 5V
- 蓝牙(HC-06)
- RX -- 1(板子的发射端)
- TX -- 0(板子的接收端)
- GND -- GND
- VCC -- VCC
- 显示屏(SSD 1306)
- VCC -- 5V
- GND -- GND
- SCL -- SCL
- SDA -- SDA
- 电机驱动(TB6612)
- PWMA -- 10
- AIN2 -- 13
- AIN1 -- 12
- STBY -- 11
- BIN1 -- 7
- BIN2 -- 6
- PWMB -- 9
- GND -- GND
- VM -- 12V
- VCC -- 5V
- GND -- GND
- AO1 -- AO1
- AO2 -- AO2
- BO2 -- BO2
- BO1 -- BO1
- GND -- GND
- 陀螺仪(MPU6050)
- VCC -- 5V
- GND -- GND
- SCL -- A5
- SDA -- A4
- INT -- 2
- 最好在VCC和GND之间加个0.1uf的旁路电容
- 电机A
- AO2
- 5V
- 3
- 8
- GND(并联0.1uf的旁路电容)
- AO1(正极)
- 电机B
- BO1(正极)
- GND(并联0.1uf的旁路电容)
- 4
- 5
- 5V
- BO2
- 全彩LED
- IN -- A1
- VCC -- 5V
- GND -- GND
- 红外对管
- OUT -- A0
- GND -- GND
- VCC -- VCC
注意:单模块测试时,接线按照原理图
注意:接线同上
注意:接线按照“整车连线”写的接线
测试笔记记录在这里。
陀螺仪。
知乎上的关于MPU6050的讲解。
野火上关于MPU6050的讲解。
蓝牙。
HC-06是目前用的较多的蓝牙模块,HC-06只能作为从机工作,因此对于被控制的小车来说非常适合使用。
这里有非常清晰的接线图,其实不需要上位机测试,但更改名称或PIN需要用上位机进入AT进行更改。下载一个串口通信助手,打开后连接蓝牙(默认名称为HC-06),成功后即可发送数据,进行通信。
OLED显示模块。
显示小车信息。
用来辅助测距。
超声波。
测距功能实现的主要模块。
全彩LED。
显示小车状态。
在制作的过程中,遇到的问题有很多,包括硬件软件的问题,这里只列出几个比较典型的问题。
-
Q:明明板子单独测模块的时候没问题,但是后来小车调试的时候有时上传程序出错,两次上传隔的时间太短的话就更容易出现这种情况,为什么呢?
A:这是由于在用USB上传程序时,开发板的VCC接到了其他模块的缘故。如果不拔下来,多次往复就有很大概率导致板子烧毁。因此,在上传程序的时候,一定要把板子的VCC断开,这样就不会有问题了。
如果给空板子烧程序都失败,那很有可能是板子坏了。 -
Q:上传程序后,小车有反应,但是总有延迟。在转动小车的时候,轮胎总要过一段时间才会作出反应,这是为什么呢? A:程序的问题。检查代码中是否有遗留下来的
delay()
,是否有Serial.println()
、Serial.print()
等需要串口才工作的函数。把这些全部注释掉,再查看效果。 -
Q:loop()是空的,按理说不会有函数运行,但是给小车上传程序后,小车还是能够对陀螺仪的变化作出反应,为什么呢?
A:对于本次程序来说,这是因为中断或者串口存在的原因。
来看arduino的程序结构:#include <arduino.h> int main(){ init(); // 初始化库 initVariant(); // 初始化变量 setup(); // 初始化 for(;;){ loop(); // 主循环 if SerialEvent() serialEvent(); // 串口函数 } }
最后的死循环中,除了loop,还有一个串口事件判断函数——有事件则去执行,没有就只执行loop。而loop中虽然没有语句,但setup()中还有中断的功能
MsTimer2::set(5, control); //使用Timer2设置5ms定时中断,控制control函数 MsTimer2::start(); //使用中断使能
开启了中断使能后,程序就会每隔中断的时间去执行一次中断指向的函数。因此loop中没有语句也是可以的。
-
关于速度环调试的问题整理,参见调试笔记04
-
关于转向环调试的问题整理,参见调试笔记04