317| 13
|
[项目] 【Arduino 动手做】3D 打印的多功能机器人开发平台 |
Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。 Arduino的特点是: 1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。 2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。 3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。 4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。 5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。 ![]() ![]() |
“3D打印机器人开发平台”或3DPRDP,是一个完全可3D打印的开发平台。它由Nvidia Jetson Nano和Arduino Nano开发板驱动,运行在Ubuntu系统上。它可以轻松实现人工智能和机器学习模型。我设计它是为了快速测试原型和新想法。它不需要每个项目都从头开始,而是有助于在项目早期测试关键内容,例如代码和算法。我希望设计一个价格合理且易于使用的系统。它完全由3D打印而成,无需复杂的组装或螺母和螺栓。 主程序用 Python 编写,使用 Flask 和 Socket I/O 在板上运行 Web 服务器。您可以使用 IP 地址连接到接口。该项目是模块化的,您无需安装所有组件即可运行。我已经在本文的注释中标注了可以替换的组件及其替代方案…… ![]() ![]() |
## 补给品 3D打印部件 Nvidia Jetson nano 犯罪现场调查:橙色 职业课程(可选) Arduino nano 2 个电机驱动器 2 X MG90S伺服器 0.92英寸OLED PCA9685伺服驱动器 USB 电缆 4 X 16850 锂电池 Jetson Nano 移动电源 ## 第一步:放松,听我说完 放松并听我说完 这个项目对初学者来说可能有点难,但不用担心,只要你愿意付出一些努力,一切都会好起来。这个项目的设计对初学者来说可能看起来有点吓人,但其实不然。我不是专业的程序员或专家。我在做这个项目的过程中学习了所有的代码和其他知识。所以,如果我能做到,你也能做到。我还附上了所有我学习时用到的资源。 另外,并非所有组件都是完成此项目所必需的。如果您预算紧张,可以省略一些组件,例如 GoPro。不用担心,我会逐步解释。我还调整了代码,以防某些组件不可用,只需注释掉一些行即可正常工作。 我在项目中提供了许多超链接,如果你仔细阅读它们,将会帮助你更轻松地构建这个项目。它们将解决你的大部分问题。 ![]() |
## 第 2 步:设置 Nvidia Jetson Nano 我们将在本项目中使用 Nvidia Jetson Nano。NVIDIA Jetson Nano 开发套件是一款小型但功能强大的计算机,可让您并行运行多个神经网络,用于图像分类、目标检测、分割和语音处理等应用。所有这些都集成在一个易于使用的平台上,运行功耗仅为 5 瓦。 您可以使用树莓派,而且该项目的代码与所使用的硬件无关。我选择 Nvidia 是因为它提供了大量的库和示例,这将使将来添加 AI/ML 功能更加容易。 这是有关如何设置 jetson nano 的完整官方指南。 https://developer.nvidia.com/emb ... -jetson-nano-devkit 对于视觉学习者 Digi-key 教程 提示:- 这里有一些关于 Jetson Nano 的学习资源。我用它们设置了我的 Jetson。这是 Jetson 设备最好的专用网站。 https://www.jetsonhacks.com/ ![]() ![]() |
## 步骤3:组装 这个项目完全由 3D 打印,无需任何复杂的组装。采用 PLA 材料打印,层高 0.3 毫米,使用 ender 3 pro。阅读组装说明会非常枯燥,因此我们提供了一个可在浏览器上运行的整个项目的交互式 3D 模型。Grab CAD 上有一个 3D 模型分解功能,请使用它,这样您可以更好地了解各个部件的放置位置。 Grabcad 交互模型 用于 3D 打印的 STL 文件 您也可以从给定的链接下载该项目的原始 Solidworks 文件。由于这些是原始文件,并且是参数化修改的,因此设计将非常容易。 提示:- 如果您没有 3D 打印机,可以使用任何常规的机器人底盘或旧塑料盒。我刚开始做这个爱好的时候,用过很多外卖塑料盒。机器人技术是一项昂贵的爱好,但总有办法解决这个问题,比如模拟之类的。ROS 是一个免费的平台,可以免费实验和搭建机器人。我将在下周为这个项目制作一个 ROS 软件包,很快就会在这里更新。 ![]() ![]() ![]() ![]() ![]() ![]() |
## 步骤4:Arduino和电机设置 我们使用 Arduino nano 和两个电机驱动器来控制每个车轮。设置很简单,就像任何其他使用 Arduino 驱动的汽车一样,没有什么特别之处。Arduino 将通过 USB 连接到 Jetson。 为 Arduino 和电机驱动器供电。 Arduino 通过 USB 数据线从 Jetson nano 供电。电机驱动器则由锂离子电池供电。它们使用两个独立的电源供电。电机驱动器有单独的 + - 引脚用于电源输入。我们只需将 Arduino nano 的地线连接到电机驱动器的地线即可。切勿同时使用电池和 USB 为 Arduino nano 供电,否则会导致电路板烧坏。 (请勿同时将 ARDUINO 连接到电池和 JETSON。 仅将电池的接地线连接到ARDUINO NANO的接地) 电机驱动器 电机驱动器有输入引脚 (A1, A2, B1, B2) 或 (INT1, INT2, INT3, INT4),虽然标签可能不同,但它们的功能相同。从 Arduino 引脚获取信号,并据此改变电机方向。 驱动器还有 4 个输出引脚,分别标记为电机 A 和电机 B。您可以将电机线连接到此处。电机没有单独的电源,它们由电机驱动器供电。 使用的引脚:3、6、4、5 接线 司机1 IN1=3; IN2=6; IN3=4; IN4=5; 司机2 IN5=7; IN6=8; IN7=9; IN8=10; 将 Arduino nano 的 GND 与电机驱动器的 GND(负极)连接。 Arduino_程序.ino 提示:- 你可能对 Arduino 的这种设置不太习惯,没关系。还有其他选择,我使用这种设置是为了让我的部件看起来更简洁。我们也可以使用普通的 Arduino UNO 搭配电机驱动器扩展板。这就是我把所有东西都做成独立系统的原因。 我们的当前系统如何运作。 Arduino nano 通过 USB 从 python 文件获取命令。 f - 向前 b - 向后 l - 左 r - 右 c-停止 根据这些命令,它将运行一个功能。 例子:- 如果收到“f”,它将运行 Forward(Speed,0);这将使机器人向前移动。 我们可以用 Arduino UNO 和电机驱动器扩展板替换当前的设置,而无需更改 Python 代码中的任何内容。只需在 Arduino 代码中进行更改即可。实际上,您可以使用相同的 Arduino 代码,只需更改代码开头的引脚声明即可。 这是我之前一个项目的参考代码。它运行在蓝牙上,你可以使用这段代码来学习如何声明引脚。 智能雷达系统 https://github.com/sastejugaad/SMARS ![]() ![]() ![]() ![]() |
本帖最后由 驴友花雕 于 2025-6-3 16:01 编辑 ## 步骤5:炮塔系统 转塔的作用是控制摄像头的转动。它由两个伺服电机、OLED 显示屏和 CSI 摄像头组成。OLED 显示屏仅显示 Jetson Nano 的统计数据,并非机器人运行的必要条件。即使不使用它,一切仍可正常工作。 伺服器将由 PCA9685 伺服驱动器控制,该驱动器将连接到 Jetson Nano 的 SDA 和 SLC 引脚。OLED 屏幕也同样,将其连接到 Jetson Nano 的 SDA 和 SLC 引脚。查看图片以便更好地理解。 你是 OLED连接指南 用于OLED的Python库 PCA9685 安装 PCA9685 的 Python 库 https://www.youtube.com/watch?v=8YKAtpPSEOk 提示:- Oled 和 PCA9685 库也适用于树莓派。所以如果你遇到问题,也可以搜索树莓派教程。 适用于树莓派的OLED 更多 pi ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
## 步骤6:摄像系统 我们有一个 GoPro Hero 会话(非必需)和 CSI 摄像头。CSI 摄像头是我们的主要摄像头,所有计算机视觉工作都将在这里完成。请使用树莓派摄像头,因为 Jetson 不支持 2 个较旧的摄像头。首次设置摄像头会比较棘手,以下是简要指南。我建议在设置好 Jetson Nano 后,使用 Python 文件进行简单的摄像头测试。 您所需要的一切都在下面给出。 Jetson CAM 指南 USB CAM 指南 CSI CAM指南 您可以使用 USB 摄像头。代码中已内置对 USB 摄像头的支持,但已被注释掉。因此,请注释掉 CSI 摄像头的注释行,并取消 USB 摄像头的注释行,这样就可以了。 例如: #video_capture = cv2.VideoCapture(1) 提示:- 有两个用于处理计算机视觉的 Python 文件:camera.py 和 ARcamera.py。两者基本相同,只是 ARcamera.py支持Aruco 标记。你可以用它制作一些很酷的 AR 内容。我不想让本教程太复杂,所以我们暂时使用简单的 camera.py 版本。 这是我之前的一个项目的例子。跟踪两个标记之间的距离并进行增强现实演示。 增强现实演示 寻找距离 ![]() ![]() ![]() ![]() |
## 步骤 7:为所有设备供电 嗯,电源系统一团糟。我做了个 Jetson Nano 的移动电源,以及 4 块 16850 电池,分别给电机和炮塔系统供电。两块电池给 Arduino 和直流电机供电,另外两块给炮塔上的伺服电机供电。 这完全没有必要,整个系统只能由锂电池和直流转换器供电,但我想安全起见,所以我决定分离电源。 16850电池 小米移动电源3超紧凑型 提示:- 普通的 9V 电池也可以代替 16850 电池,但续航时间可能不长,大概 8-10 分钟。任何移动电源都可以,我选了最小的那个。如果你想尝试一下,还有一种更好的电源系统设计方法。我会在下一个版本中实现它。 更好的电力系统 ![]() ![]() ![]() |
## 步骤8:代码设置 它全部用 Python 3 编写。我们将使用 HTML、CSS 和 JavaScript 来处理 Web UI。不过不用担心,除非你想修改 UI,否则你不需要处理这些。Github 页面上有单独的 UI 处理指南。 文件层次结构 main.py - 主文件控制所有其他系统。运行此文件即可使用机器人 turret.py——控制炮塔 camera.py - 打开相机并将帧发送回 main.py,这些帧在 Web 浏览器上显示为视频源 ARcamera2.py - 与 camera.py 相同,但带有 aruco 标记 Oled_disp.py - 显示有关 jetson nano 系统的统计数据。 Simplecameratest.py - 顶部检查相机是否安装正确。 arduino_control.py - 与 Arduino 通信。从 main.py 接收命令,并通过 USB 连接发送至 Arduino Arduino_program.ino - 上传至 Arduino。用于控制电机。 代码如何工作 运行 main.py 文件将启动所有其他功能,例如摄像头和 Web 服务器。我们使用 flask 和 Socket IO 库通过 Web 浏览器与机器人通信。移动设备和机器人应连接到同一网络。然后,打开 Web 浏览器并输入 <ipdressofjetsonnnao>:5000,即可看到界面。 代码逐行都有详细的注释,方便你了解各个部分的功能。我还在 GitHub 上对代码进行了更详细的解释,因为那里更容易理解。 提示:- 请不要重命名或移动文件,除非您更改代码中的引用,否则您将收到错误。 ![]() ![]() |
## 第十步:恼人的问题 下面列出了一些可以简化您的工作的命令。这将节省您数小时的研究时间。这些命令是通用命令,并非特定于此项目。 重启相机恶魔 这一点很重要,因为有时你可能会重启主程序,然后会收到“摄像头不工作”或“没有实时视频”的错误提示。运行此命令可以修复此问题。 sudo 服务 nvargus-daemon 重启 检查CSI摄像头是否正常工作 gst-launch-1.0 nvarguscamerasrc!'video/x-raw(内存:NVMM),宽度=3820,高度=2464,帧速率=21/1,格式=NV12'!nvvidconv flip-method=0!'video/x-raw,宽度=960,高度=616'!nvvidconv!nvegltransform!nveglglessink -e 在 jetsonano 上创建热点 # 创建连接 sudo nmcli 连接添加类型 wifi ifname '*' con-name my-hotspot 自动连接是 ssid my-local-hotspot # 将其放入接入点 sudo nmcli 连接修改 my-hotspot 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method 共享 # 设置 WPA 密码(你应该更改它) sudo nmcli 连接修改 my-hotspot 802-11-wireless-security.key-mgmt wpa-psk 802-11-wireless-security.psk 12345678 # 启用它(每次想要启用接入点时运行此命令) sudo nmcli 连接我的热点 检查 I2C 连接(Oled 和伺服驱动器) sudo i2cdetect -y 1 或者 sudo i2cdetect -r -y 1 列出视频设备 ls /dev/video0 列出CSI相机支持的视频格式 v4l2-ctl -d /dev/video0 --list-formats 提示:- 使用 sudo ![]() ![]() |
1.06 MB, 下载次数: 31
4.13 MB, 下载次数: 36
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed