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

时间:2024-10-25 08:01:40

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辨别图像,实现追踪等功能;根据小车情况,加一些语音提示…