制作一个Arduino四轮驱动车
1. 引言
你好,这是一个使用Arduino Uno制作的自动驾驶汽车项目。
这个非常简单的项目旨在演示如何搭建Arduino汽车的基本原理。因此我使用了RoboRoverM1底盘,但你也可以用DIY材料自己动手制作属于自己的Arduino汽车。在本教程中,我将使用我自己设计的机器人底盘RoboRover M1。
这是我自行设计的四轮驱动RoboRover M1底盘,采用4毫米厚ABS塑料制成。
这款机器人RoboRover M1已安装所有电子元件,并且我还为机器人制作了一个大尺寸的绿色保护罩,以保护内部的所有电子设备。
设计很棒!看起来就像一台扫地机器人。
2. 电子
2.1 机器人汽车的传感器
在下图中可以看到该机器人汽车的所有传感器。我认为只需研究机器人汽车运动的基本原理即可:
3个线路跟踪传感器,用于学习如何沿线行驶。型号为TCRT5000。
2个红外距离传感器,用于学习如何测量距离并编写避障算法。型号为GP2Y0A21YK0F。
1个安装在伺服电机上的超声波传感器。伺服电机可旋转,可用于绘制机器人前方的简单距离地图。超声波传感器型号为HC-SR04,伺服电机型号为MG995R。
2.2 机器人汽车的电机
要让机器人移动,我们需要使用电机。我使用了4个黄色电机DAGU,齿轮比为1:48,电压为5V。如果你自己制作DIY小车,也可以使用2个电机。
控制电机时,我使用L298N电机驱动器,虽然不是最佳选择,因为它会占用Arduino车的大量I/O引脚,但这是初学者指南。之后你可以升级为使用I2C电机驱动器。
2.3 机器人汽车的电源
要让机器人运行,需要使用电池供电。我建议使用7.4V锂聚合物2S电池,我认为这是这类机器人汽车的最佳解决方案。不要使用AA或AAA电池,这并不是理想的选择。
使用锂聚合物电池时,必须配备专用充电器和电压控制器。锂聚合物电池非常值得!
在机器人运行时,请使用小型电压测试仪,它会提示你何时开始为电池充电。这个小工具能帮助你避免过度放电,因为如果锂电池过度放电,可能会损坏!
3. 布线
3.1 L298N电机驱动器接线图
使用小电容焊接所有电机并安装好。
右侧电机的一根线连接到OUT3,另一根线连接到OUT4。同样方式连接第二台右侧电机。
左侧电机的一根线连接到OUT2,另一根线连接到OUT1。同样方式连接第二台左侧电机。
如果此处接线有误,在上传测试程序后,只需将电线在需要的位置进行调整即可。
制作这种连接器。使用两档开关(用于开启和关闭机器人电机及伺服)。我相信你已经知道如何焊接了。红色连接器用于电池,检查你的电池上安装的是哪种类型的连接器。我建议使用T型插头连接器。
现在不要将T型插头连接在一起!待所有连接完成后,作为最后一步再进行安装!
然后将其安装到车辆中。如果你使用的是其他自制底盘,安装方式可能会有所不同。
红色导线连接到L298N电机驱动器3针接口最左侧的+12V端子。
两根黑色导线连接到L298N电机驱动器3针接口中间的GND端子。
然后取6根长30-40厘米的电线,将其连接到L298N电机驱动器上的ENA、IN1、IN2、IN3、IN4、ENB引脚上。
第7根电线连接到L298N电机驱动器上三针连接器的中间GND插孔(即之前连接黑色电线的位置)。
最后,你的接线应如下所示。
如果你想在机器人小车中使用舵机,必须确认其电压为7.4V兼容。此时可从舵机接口取一根红色电线,连接到L298N电机驱动器三针连接器最左侧的+12V插孔(即之前连接红色电线的位置)。
首先检查舵机的电压!如果电压不兼容,只需将舵机直接连接到传感器屏蔽板,无需任何更改。在我的情况下,舵机MG995R(MG995)是7.4V兼容的,但遗憾的是在那张照片中我忘了连接舵机。
3.2 Arduino Uno传感器屏蔽板的接线
3.2.1 电机驱动器
使用Arduino Uno的简易传感器扩展板连接所有传感器和电机驱动器线缆。我的型号为Arduino Sensor Shield V5。
将电机驱动器的线缆连接到传感器扩展板上的数字引脚:
•ENA → D5
•IN1 → D2
•IN2 → D8
•ENB → D3
•IN3 → D11
•IN4 → D10
3.2.2 线性传感器
线性传感器是数字类型的,但我们可以使用Arduino Uno的模拟输入来读取其数字信号。将传感器的GND引脚连接到扩展板的GND引脚,VCC引脚连接到扩展板的VCC引脚(5V)。
将线性传感器的信号连接到传感器扩展板上的模拟引脚:
•线性传感器(左)→ A3
•线性传感器(中)→ A4
•线性传感器(右)→ A5
3.2.3 红外传感器
与Sharp公司的模拟式红外距离传感器连接方式相同。请注意,Sharp传感器的中间导线(黑色)为GND,左侧导线(红色)为VCC,右侧导线(黄色)为信号输出。
将传感器的GND引脚连接到扩展板的GND引脚,VCC引脚连接到扩展板的VCC引脚(5V)。
将红外传感器的信号连接到传感器扩展板上的模拟引脚:
•传感器左侧 → A0
•传感器右侧 → A1
3.2.4 超声波传感器与舵机
超声波传感器连接至以下引脚:
将传感器的GND引脚连接到屏蔽板上的GND引脚,VCC引脚连接到屏蔽板上的5V VCC引脚。其余引脚连接至屏蔽板上的数字输入引脚。
触发引脚(Trig)连接至D7
回波引脚(Echo)连接至D4
舵机连接至以下引脚:
将舵机的GND线(黑色或棕色)连接到屏蔽板上的GND引脚。
如果舵机支持7.4V电压,则将VCC线(红色或橙色)连接到L298N电机驱动器3针接口最左侧的+12V插孔;若舵机不支持7.4V,则将舵机的VCC线连接到舵机屏蔽板上的VCC引脚。
信号线(黄色、白色或橙色)连接至屏蔽板上的数字引脚D9。
恭喜!你的机器人已经完成!
你可以将黑色连接器插入Arduino,然后打开它。
使用T型插头(或其他任何类型)连接电池。通过开关启动电机。现在开始编写代码吧!希望在你打开机器人电子设备后不会发生火灾。
4. 编码
4.1 安装库
所有库均可从项目的附件部分下载。
我为该机器人创建了多个库,以便以轻松有趣的方式学习编程。我为后续模块制作了自定义库:舵机、电机驱动器、Sharp红外距离传感器、超声波距离传感器、舵机。
这些库设计用于帮助初学者更轻松地理解代码,即使你不是Arduino专家也可以使用,但你可以选择不使用这些库。通过阅读库中的注释,可以更好地了解它们的工作原理。
在尝试运行以下代码之前,请先安装所有库。安装方法与安装所有Arduino库相同。
4.2 代码示例
这里我将提供一些代码示例,请仔细阅读代码中的注释。
代码#1 测试电机
首先测试你的电机,如果发现电机旋转方向错误,请调整电线连接。
上传程序后,打开Arduino Uno并启动电机,按下Arduino板上的复位按钮,即可从头开始运行代码。
代码#2 测试Sharp红外距离传感器
测试红外传感器,确认其是否正常工作。所有信息将通过串口传输。
上传程序并在Arduino IDE中打开串口,以查看距离测量结果。
代码#3 超声波雷达测距传感器
此程序将测试超声波传感器,并检测舵机的旋转。这是一个简单的雷达系统,舵机可左右或居中转动,超声波传感器测量距离。
上传程序后,在Arduino IDE中打开串口,开启Arduino Uno并启动电机,按下Arduino板上的复位按钮,使程序从最开始重新运行。
代码#4 测试线路传感器
代码#5 使用红外距离传感器实现机器人避障移动
该程序可通过红外距离传感器让机器人避开障碍物。
上传程序后,开启Arduino Uno并启动电机,按下Arduino板上的复位按钮,使程序从头开始运行。机器人将开始移动并避开障碍物!
代码#6 机器人沿线行驶
该程序使用线路传感器让机器人沿直线行驶。请先用一条黑色线条在地面上画出一条小轨道。
上传程序后,开启Arduino Uno并启动电机,按下Arduino板上的复位按钮,使程序从头开始运行。机器人一旦被线路传感器检测到黑色线条,就会开始跟随该线条。
本文编译自hackster.io





