当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]通过使用底盘套件和配件,可以更轻松地搭建机器人汽车。底盘套件为大多数微控制器板提供了构建机器人的全部组件。以下是用于组装底盘套件的部件:

通过使用底盘套件和配件,可以更轻松地搭建机器人汽车。底盘套件为大多数微控制器板提供了构建机器人的全部组件。以下是用于组装底盘套件的部件:

2WD机器人智能汽车套件 x1

关于本项目

该项目的基本理念是开发一个可控制且适合车载网络的模块。本文展示了如何设计并制作一个低成本的智能Arduino双轮驱动模块,可通过串口进行控制。我的解决方案采用MPU 6050及相应的软件,以校正电机硬件缺陷,从而避免机器人汽车无法保持直线行驶的问题。控制指令采用标准格式定义。

该系统基于开源硬件Arduino,支持多种通信方式,如USB、Wi-Fi、以太网、串口PC遥控或蓝牙。这项工作的成果是一个可配置且灵活的用户界面,适用于汽车演示系统,可以轻松更新、定制,并在无需重新编译或更新程序的情况下,为新应用提供支持。

Wi-Fi 是移动设备最常用的通信协议。在我的以往项目中,我曾添加 ESP32-CAM 相机模块,并将串口连接到机器人上的 Arduino Uno,从而为汽车机器人和机械臂构建了遥控器。我还开发了一个项目,使移动设备能够通过 Wi-Fi 与 ESP32 板进行交互。接下来我将展示如何使用不同的设备来控制车轮,以及实现图像或人脸识别功能。最简单的 Arduino 负责电机控制,而 ESP32 可用于调节图像流传输和图像识别。它还能生成“跟随模式”下的驾驶控制指令。

你需要什么

上图中所示的任何设备都可以用作平台的控制器。正如我所说,您可以使用不同的设备,并根据需要自定义命令。在许多情况下,我们不仅希望发送指令(如“向前行驶”),还需要同时传输相关的数值(如“多长时间?”、“多快?”、“多远?”)。

例如,要控制机器人,我们可以使用“左”和“右”这两个命令,每个后面都跟着一个数字,表示对应电机应提供多少油门。

在项目“使用ESP32实现机器人远程控制与视频监控”中,我们使用了一张不同命令的表格。为了满足我们的需求,我们稍作修改,建立了以下命令:

按钮用于控制车辆向左、向右、前进和倒车移动。

要控制摄像头,我们可以更改命令,例如将左侧的“2”和下方的“4”改为完整的伺服电机水平或垂直位置指令,每个指令后都跟着一个数字,表示角度位置的指示值。

代码

在本项目中,我们采用了我之前项目中的现成解决方案。补充部分包括负责伺服控制和程序循环的子程序,这些子程序会调用通过串行接口传来的指令。主程序循环部分的部分内容已修改,以实现与计算机或其他连接的控制设备通过串行连接进行通信。

在“case switch”部分,所有需要的功能均已调用,其中一些是直接调用,另一些则通过控制变量实现。

在“Loop”程序部分,“Forward”(前进)和“Back”(后退)子程序必须保持不变,因为它们需要持续更新,这一点对其他伺服功能同样适用。而其他如“Left”(左)、“Right”(右)和“Halt”(停止)等函数只需被调用一次即可执行。

关于直线前进的基本程序已在本页面详细说明。

商店中有很多不同的应用程序可用于控制机器人,其原理大致相同。但区别在于图形设计。为了方便使用HC-06蓝牙模块控制机器人或机械臂,我们特别采用了APP控制方式。

最简单的应用程序包含10个控制键。当HC-06蓝牙模块通过APP成功连接到安卓手机后,按下控制键,安卓手机便会发送并接收相应的数值。

我为命令集添加了一些新指令。V和H命令分为两部分。通过Serial.ParseInt函数可以从串口读取多个字符,从而更新角度值。随后,子程序MovToV()和MovToH()会将舵机控制至指定位置。

例如,要控制舵机,可以使用“2”表示“左”,“3”表示“右”,或“4”表示“下”,“1”表示“上”。对于这两种运动,速度限制为每40毫秒内变化1度(命令延迟时间t),从而在运动过程中获得更清晰的图像质量。

但如果我们需要伺服控制的精确角度,就使用命令 H 或 V 来指定水平或垂直位置,后面跟着一个数字,表示应将伺服器置于哪个位置。例如,在串口监视器中输入或通过 Processing 发送的完整命令可以是“H120”或“V-60”。

子程序 SchwenkV() 和 SchwenkH() 可使伺服在指定方向移动,但速度较慢,每度运动时间为 t 毫秒(标准为 40ms)。

这两个子程序都预设了边界移动限制。垂直相机移动子程序的移动范围限制在 50° 至 130° 之间,但水平方向无此限制。

子程序 mov() 会将相机重新设置到初始位置(90°),用于全景拍摄和倾斜伺服。程序还处于主循环中,当串口接口收到命令“5”时即开始运行。

子程序 stp() 会将所有变量重置为零,以便执行新的伺服动作。

子程序 halt() 用于停止模块的运动,其中已包含子程序 stp(),可停止所有伺服电机。

安装完成后,若连接正常,即可使用简单程序测试电机。像“前进”或“后退”这样的子程序必须正常工作,同时“左转”或“右转”等功能如果连接良好也应能正常运行。

结论

这种机器人汽车可用于多种用途。它既可用于工业领域,也可用于军事或民防部门,在自然灾害或战争发生时协助搜救幸存者。此外,还可进一步开发为配备机械臂的机器人,并编程用于在科学实验室中协助开展实验。此类应用可参见此处的教程。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭