亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

通过以太网控制的机械臂

组件和用品

Arduino 101
× 1
WIZnet WIZ750SR
× 1
Android 设备
× 1
机械臂
您可以使用任何其他机械臂,但如果您的机械臂是太不一样了
× 1
Metal Gear Micro Servo
× 4

应用和在线服务

Arduino IDE
WIZnet S2E 配置工具
Android Studio

关于这个项目

简介

我喜欢机器人手臂。我喜欢你只需要一些简单的机械部件、一些伺服系统或电机和一个好的软件,你就可以得到一个不仅壮观和有趣而且实际上也非常有用的设备。我想建立一个,因为我有一个我非常喜欢的机器人课程。

制作机械臂可以学到很多东西,所以我认为这是一个很好的中级项目,可以加深您对机器人技术的了解。开始吧!

机械臂

你可以从大约 20 美元购买机械臂。为了实验,我想从更便宜的开始。稍后我将建造或购买一个更专业的机械臂,但现在我将使用 Banggood 的 25 美元 DIY 机械臂。

这是一个 4DoF(自由度)机械臂,其中 3 个伺服用于移动,一个用于执行器(我在项目中称之为抓手)。这意味着夹具可以移动到特定区域的任何位置,但其角度不能改变。这是一个很大的限制,但目前还可以,而且对很多事情仍然有好处。

DIY 套件带有 4 个伺服系统,因此实际上除了控制器之外,您还可以获得构建机器人手臂的所有组件。这些舵机还不错,但我更喜欢这些:

这些舵机比蓝色舵机快,而且这些舵机使用的是金属齿轮而不是塑料。

机器人零件有 4 个塑料片。您必须从这些工作表中取出零件。

机械臂套件由一堆零件组成。我建议您观看以下视频。在这段视频中,一个俄罗斯人正在建造相同类型的机械臂。搭建部分7:43开始。

我在包装上有一个关于如何构建机器人手臂的链接,但它的图像和说明质量都很低。那个视频好多了也许你可以弄清楚什么是什么,但如果你这样做,你最终会陷入组装、拆卸、重新组装的几乎无限循环。

插入伺服系统时要非常小心。当您拧紧螺钉时,这种带有这种塑料的设计很容易断裂。螺钉的最佳紧固度对于机器人的其他部分也很重要。把它们弄得太紧,你不能用舵机移动机器人手臂的部分。

经过一些构建,您最终将拥有自己的机械臂。

定位伺服系统有足够长的电缆,但夹具需要更长的电缆。我拆卸了那个伺服器,拆掉了旧电缆,并使用了至少两倍长的电缆。

大脑

好吧,机器人手臂已经准备好了,但你很可能想以某种方式控制它。为此我需要一个微控制器,我选择了我的 Arduino 101 来完成这项工作。

它是唯一使用 Intel 微控制器(Intel Curie)的官方 Arduino 板。它有内置的陀螺仪和加速度计。它还具有蓝牙功能,因此我将来可以通过 BLE 控制机器人。该板的另一个非常有用的功能是串行通信的工作方式。与大多数 Arduino 不同,USB 串行和 UART 引脚 1 和 0(TX 和 RX)不相同。它有它的好处,比如当我重新编程 Arduino 时,我不必从引脚 0 和 1 断开任何其他通信电路。它也可用于调试目的。

如果您想使用 USB 端口的串行,那么您必须使用“串行”,如果您想使用 GPIO0 和 GPIO1 引脚,那么您必须使用“Serial1”

Arduino 101 有 4 个支持 PWM 的 GPIO(GPIO3、GPIO5、GPIO6 和 GPIO9),我用它们来控制舵机。

沟通

我的机械臂可以通过串口控制(具体来说是Serial1)。为此,我使用了我最新的通信模块 WIZ750SR。

这是一个带有 Cortex-M0 MCU 的小型以太网模块。就其基本功能而言,它是一个串行转以太网模块,但您可以轻松地对该模块重新编程以满足您的需求。如果你愿意,你可以把这个板子变成一个 I2C 到以太网板。

一个非常酷的功能是板载 TCP 服务器(或客户端)。使用 TCP 服务器,您可以远程控制 Arduino,就像通过 USB 串行一样,但可以从世界任何地方进行!在 Arduino 方面,它是完全透明的。你不需要在你的草图中添加任何额外的代码来使用这个模块。

我还有一块 WIZ750SR-TTL-EVB 评估板。我可以为 WIZ750SR 供电并有一个调试 USB 端口,但除了一些早期的实验之外,我没有使用它。

Arduino 101 和 WIZ750SR 都使用 3.3V,因此我不必对 TX 和 RX 引脚使用电平转换。 Arduino 还通过其电源为以太网模块供电。该电路非常简单,您可以在该项目的原理图部分找到它。舵机有自己的5V电源。

设置模块

要使用此板,您必须先对其进行配置。我不会重新记录这部分,因为 WIZnet 的人已经在这里完成了,您可以确定您总是在那里获得最新的文档。

他们的文档很棒,但我有一些很好的信息,我有一些(已解决的)问题值得分享。

首先,您可以通过评估板的 USB 端口为评估板供电,但除此之外,该端口主要用于调试和刷机。我相信您无法使用 USB 端口与 WIZ750SR 的 TCP 服务器通信,但是如果您连接到此 COM 端口,您将收到调试信息。一开始这让我有些困惑,因为我不知道会发生什么。

其次,如果 WIZ750SR 连接到您的网络时蓝色 LED 亮起,那么您的开发板应该工作正常,继续使用配置工具,它应该会找到开发板。

当我尝试在配置工具中搜索设备时,我最大的问题发生在这一点上。第一次效果很好,但后来我没有时间,所以我停在那里。两周后,我再次尝试这样做,但在多个网络上的多个操作系统和计算机下,它再也找不到该板了。

我用最新的固件通过评估板的调试 USB 端口进行了重新刷新,它工作正常。我的Windows PC 仍然找不到它,但是Ubuntu 下的Python 版本可以。我不确定是什么问题,但这些步骤终于解决了我的问题。成功配置WIZ750SR后,我的Windows PC也可以再次找到它,所以我继续工作。

正如我所读到的,带有虚拟网络适配器调用的 VM 也会使搜索变得混乱,因此如果您在搜索时遇到一些问题,您应该查看一下。

测试 TCP 通信的一个很好的工具是 NetCat。使用该软件,您可以连接到 WIZ750SR 上的 TCP 服务器。安装 NetCat 后,使用此命令进行连接:

nc [tcp_server_ip] [tcp_server_port]  

之后您可以直接从 WIZ750SR 发送和接收数据。我经常使用这个工具。

从 A 到 B

要移动机器人手臂,您必须告诉控制器您想要什么。最简单的方法是直接更新所有舵机的角度。更新关节角度可以通过一些试验和错误来完成,它实际上可以很好地工作。

在我的下一个机械臂项目中,我将使用逆运动学来控制具有世界坐标的机械臂,但现在我将仅使用关节角度来控制机器人。

系统的速度是这里的一个关键点。伺服系统非常快,但它们仍然需要时间才能到达接收到的位置。另一方面,跳线不喜欢快速移动,所以我不得不放慢速度。无论是硬件部分还是软件部分。

我通过创建系统的路径计算并插入延迟来实现这一点。当您为机器人手臂发送新的关节角度时,您必须提供一个额外的参数:速度 (mDelay)。基本上,您是在告诉机器人手臂控制器循环的最小步进时间。路径计算器将为每个定位伺服系统计算一个可选的步长。这意味着所有舵机将在大约同一时间达到目​​标,速度取决于延迟。结果是每次都非常漂亮和平滑的线性运动。

效应器以不同的方式工作。基本上它只能有打开或关闭(具有3种不同程度的关闭强度)状态,不能平滑过渡。显然你会想尽快抓住物体,同时移动应该是平滑的。

该系统中目前有两种类型的命令。以下是它们的示例:

  • G 1 --> 轻轻合上夹持器。 0 表示打开
  • A 10 130 120 110 --> 以 10ms 步长、130º 上关节角、120º 下关节角和 110º 底座旋转器角度移动机器人手臂。

用于远程控制的 Android 应用

好的,所以此时我可以从世界任何地方控制机械臂,但我必须手动编写每个新命令。这种方式不是很有趣。我需要一种更加用户友好的方式来控制机械臂,因此我开发了一个 Android 应用程序来实现这一点。

该应用程序具有 TCP 客户端,因此可以直接连接到 WIZ750SR 的 TCP 服务器。机器人手臂不存储旧的和未来的运动图。它只知道当前的目标位置。这意味着应用程序不仅会向机器人手臂发送整个运动图,还会根据位置反馈定期向机器人手臂发送新位置。如果您关闭应用程序或断开与 WIZ750SR 的连接,则机器人手臂将在到达上次接收位置后立即停止移动。

连接到机器人手臂后,您将进入配置屏幕。它包含 3 页。第一个是 Run(稍后会详细介绍),第二个是 Init,第三个是 Loop。 Init 和 Loop 基本相同,唯一不同的是保存位置。

除了保存按钮外,屏幕还包含 4 个搜索栏和一个抓手按钮。这些滑块用于设置移动的位置和速度,而夹具按钮用于打开或关闭效应器。所有更改都是即时的,因此您会立即看到机器人手臂上的新位置,但是您必须单击保存按钮将其添加到绘图中。这是一个关于它的简短演示:

如果同时更改夹具状态和机器人手臂位置,则将保存为两个不同的命令。先是夹具指令,然后是位置指令。

如您所料,情节的运行将从 init 开始。初始化和循环就像 Arduino 的设置和循环功能一样工作。 Init 适用于以后不会重复的动作。当 init 命令完成后,循环命令将随之而来。循环命令将永远重复,或者至少直到您停止绘图为止。如果您不需要循环或初始化,您只需将该字段留空。

这些字段是 EditText 字段,这意味着您可以轻松编辑或删除其内容。如果您不想使用滑块,您可以手动编写命令。您还可以复制和粘贴绘图。该应用程序将记住您运行的最后一个绘图供以后使用。

“配置”下的第一行用作测试的视觉反馈。左侧部分显示机器人手臂的最新目标位置(S - 发送),而右侧字段是它的当前位置(R - 接收)。只要目标和当前位置相同,应用就会向机械臂发送一个新的目标位置。

可以看到,当只有init时,机械臂一执行完init命令就停止了。

使用我的应用程序,您可以做很多事情,但未来有很多改进的可能性。我计划在图中使用函数、条件控制、带参数的循环等。

如果你想搭建一个类似的机器人,你可以在这个项目的代码部分找到Arduino代码和机器人手臂控制器应用程序。

结果

我同时使用了 init 和 loop 命令,它允许我完成一些中等复杂的任务。这是一段视频,内容是关于我的机械臂如何设置一些橡皮鸭 (init),然后开始将它们一个一个地绕着自己移动,永远(循环)。

正如您所看到的,如果您考虑到这是一个非常便宜的机械臂,并且具有严重的硬件相关限制,那么它的动作非常流畅、连续和准确。

结论

我的软件运行良好,未来我肯定会致力于改进这个机械臂,或者我会建造一个更先进的机械臂。我完成了我为这个项目计划的一切,没有任何严重的阻塞问题。

Arduino 101 非常适合此用途。该板的唯一限制是仅有 4 个支持 PWM 的 GPIO。如果我构建一个自由度更高的新机械臂,将来可能会出现问题,但是单独的 USB 串行和 GPIO 串行在开发过程中非常有用,并且该板还可以提供大量的计算能力。

我认为 Android 应用程序是一个好主意,但是我必须使其更加健壮、用户友好并增加其功能。目前是 alpha 版本。

WIZ750SR 是一个非常好的惊喜。我担心这块板子会出现更多问题,但是在配置之后,它运行良好。它是完全透明的,我对它零问题。这是一款非常易于使用的设备,也是我曾经与我的任何微控制器一起使用过的最好的以太网模块。

使用机械臂工作非常有趣,所以我一定会更多地了解它,然后在将来与您分享我的知识!感谢阅读!

代码

Arduino 网页编辑器
您可以使用 Arduino Web Editor 访问并直接上传我的项目的 Arduino 代码
Arduino 和 Android 代码
https://github.com/abysmalsb/Robot-Arm-Controller

示意图

目前该系统使用两个独立的电源。一个来自 Arduino 的 USB 端口和另一个用于移动伺服系统的 5V 电源。

制造工艺

  1. 通过蓝牙控制的树莓派机器人
  2. 使用 Raspberry Pi 的手势控制机器人
  3. Windows 10 IoT Core:语音控制机器人
  4. 使用 Raspberry Pi 的 Wifi 控制机器人
  5. ROObockey:遥控、辅助瞄准的街头曲棍球机器人
  6. 双臂 SCARA 机器人
  7. MeArm 机械臂 - 你的机器人 - V1.0
  8. Alexa 通过 Raspberry Pi 控制 LED
  9. Nunchuk 控制机械臂(使用 Arduino)
  10. 语音控制机器人
  11. Arduino 控制的钢琴机器人:PiBot
  12. Littlearm 2C:构建 3D 打印的 Arduino 机械臂