Arduino 综合实例之一 _ 避障小车

#Arduino

1. 说明:

此实例实现了通过蓝牙连接小车和手机,在手机端用软件控制小车前进,后退,左/右转向,控制行驶速度。并能让小车自动行驶,躲避障碍。 我买的是最便宜的黄色四驱小车,加了一个电机驱动模块(用于控制小车),一个蓝牙模块(用于与手机连接),一个距离传感器(测试前方是否有障碍物),一个舵机(在遇到障碍时,控制距离传感器转动,判断左/右哪边空间更大)。

2. 硬件:

(加起来百十来块钱)

1) 小车硬件

小车(30+),含车架,车轮,电动机等。最便宜的一套 30 块钱左右(四驱),当然也不怎么结实。实验用没什么问题。

2) 电机驱动

电机驱动模块可使用 L298n(5+)或 L293D(8+)。一个 L298N 可驱动两个电机,一个 L293D 可驱动四个电机。我使用的是一个 L298N,控制四个电机(两两串联,也带得动)。 不太喜欢 L293D 扩展板,它是 Arduino UNO

R3 的扩展板,是直接插在 Arduino 板上用的,我买的那一块,虽然能接几个舵机,几个直流电机,但是要想再插传感器就比较麻烦了,还有 TX/RX 接蓝牙好像也没引出来。它虽然把 A0-5 以及几个供电引出来,可以焊上针脚使用,但还是麻烦。

3) 传感器和步进电机

在小车上,一般用超声距离传感器(4+)加小舵机(6+)或红外距离传感器 x 2

(2+)用作判断前方是否有障碍物。有的小车正面安装一个超声,左前右前各安一个红外;有的把超声安在一个小舵机上,通过步进电机实现“转头”的功能。 超声距离传感器可测到具体的距离,而红外距离传感器则是设定一个阀值,据此判断回传 0 或 1。由于日光里也有红外线,所以在户外会有一定影响,建议使用超声传感器加舵机的方案。

4) 电池和充电器

可使用航模电池加充电器(35+),也可以用电池盒。由于需要提供 Arduino 板和电机驱动的供电,一般使用 6-12V,用电池盒试了一次,电压降得很快,建议购买航模充电电池。

5) Arduino 板

本例中使用了 ArduinoUNO R3 (15+) 和 sensor shieldv5.0 扩展板(6+) Arduino 上一般有一个 3.3V 和一个 5V 供电,三个 GND,外接硬件超过两个,供电就比较难插,这里至少需要一个蓝牙模块,一个距离传感器,一个控制传感器方向的舵机,一个电机驱动模块。扩展板为每个 IO 都配上了 VCC 和 GND;且 sensor

shield v5.0 可直接插在 Arduino UNO R3 上,非常方便。

6) 小车控制

红外遥控接收器(2+)或蓝牙模块(17+) 红外遥控和蓝牙模块取其中之一即可,各有优势:红遥控接收器很便宜,可以和任何一个家用遥控板配合使用,但是必须对准,才起作用,小车行进的过程中就不太好用,另外因为日光中有红外线,所以户外不太好用;蓝牙模块稍贵,只要在附近就能收到,但需要其它蓝牙设备控制,如:手机控制,同时还要在手机端写相应程序,比较复杂。

7) 其它小配件

杜邦线若干(5+):公对公,母对公,公对母,15-20cm,开关一个(0.2+)

3. 小问题

1) 超声传感器如何固定?

超声传感器一般安装在小车前端,有时通过舵机相连。有的店卖一些塑料的连接板,购买时请注意和超声传感器是否配套,如不配套,可能安装不上,或者影响侦测距离。

2) 如何调速?

对于调速,有人说通过使能端调速 ENA/ENB,我用的是 L298n 红板,试了不管用,于是用 Arduino 的 5,6,9,10(PWM)连接电机驱动板,并用 AnalogWrite 写入 0-255 即可调速。

3) 小车电机如何与电机驱动板相连?

我买的小车电动机有个铜片,我在其上焊了两条杜邦线,然后用胶封了一下。

4. 后记:

总体来说,装硬件调试还是很麻烦。对于增加更多功能,我觉得比较好的解决方案是与手机相连,把更多软件的逻辑放在手机端,也能更好地利用手机的传感器,声音,以及摄像头等等,以实现更多功能,同时又不会让电路变得过于复杂。比如:把手机放车上,使用其上的重力传感和指南针,判断小车位置,绘制地图(手机上也有距离传感器);手机用蓝牙控制小车;用 OpenGL 辨别图像,实现追踪等功能;根据小车情况,加一些语音提示…