58| 10
|
[项目] 【Arduino 动手做】带有 ESP32 和 FreeRTOS 的微型桌面机器人 |
Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。 Arduino的特点是: 1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。 2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。 3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。 4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。 5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。 ![]() ![]() |
DLR(哑巴小机器人)是我名为 Deskbots 的更大项目的一部分。住在您办公桌上的小机器人。到目前为止,我已经制作了它们的 3 种不同的变体。 这是一个具有 freeRTOS 和面部表情的微型 ESP32 机器人。它通过 wifi 应用程序进行无线控制。它有一个 Oled 屏幕,根据机器人正在做什么显示不同的面部动画。 这是该项目的第一个版本。我只添加了基本表达式,将来会添加更多。将来我还会添加 SLAM 和 Swarming 功能。我已经在尝试 SLAM 并取得了非常好的结果。在一个项目中解释所有内容会太多,因此我决定制作它的多个部分。此项目包含有关如何组装和使用机器人的说明。 ![]() ![]() ![]() |
第 2 步:电路和电路板连接 我为我是如何找到减少布线的方法感到非常自豪的。基本上,不同的组件安装在两个 PCB 上以连接 PCB,我使用非常大的母头作为板对板连接器。他们给了我足够的空间来放置带有引脚和接头的传感器。 我的目标是使电路尽可能小,因此我使用了双面穿孔板。电路分为两层,顶层包含 ESP32,底层有电机驱动器和降压模块。也有MPU6050的空间,但目前,我没有使用它,因为我把 MPU 和 OLED 放在同一行,所以当我尝试同时使用它们时,我在动画方面遇到了一些问题。所以现在我已经删除了 MPU。 我在视频的这一部分展示了如何组装电路板。 电池和电源 我正在使用 7 伏 Lipo 供电。降压模块用于将电压降低到 5V 为 ESP32 供电。Oled 由 ESP32 本身通过 3V 线路供电。 “不要向 ESP5 提供超过 32V 的电压” 为电机驱动器供电 电机驱动器有两个电源连接,一个用于电机驱动器芯片,一个用于电机。对于电机,我们为“VM”引脚提供 7V,对于驱动芯片,我们从 ESP32 板向“VCC”提供 3-5V 电压。请阅读本文以了解此电动机驱动器的工作原理。 ![]() ![]() ![]() |
第 3 步:上传程序 使用 Arduino ide 上传 sketch。您必须选择 ESP32 开发板才能执行此作。默认情况下,您不会在开发板的管理器中看到 ESP32。使用此链接将 ESP32 添加到 Arduino IDE “请勿同时将电池和 USB 数据线连接到 ESP32” 您将需要一些额外的库来编译代码。它们都可以在 Arduino 库管理器中找到。如果您需要帮助,请阅读这篇文章 如何将库添加到 Arduino IDE。 Adafruit GFX Adafruit SSD1306 异步 UDP 要编译代码,请选择您的 ESP32 开发板。此代码应该适用于大多数 ESP32 开发板。 Tools > Ports > Select your board(ESP32 Dev Kit 1) 如果一切设置正常,代码应该可以编译。然后,如果一切正常,只需上传代码,您将看到机器人第一次闪烁。代码在 GitHub 上可用,如果有任何问题请提出问题,我会尽力帮助你。 *请使用 IDE 1.8 新版,错误很多 *如果您遇到任何与 anlogwrite 函数相关的错误,请尝试在 MotorController.h 文件中注释或取消注释 #include < analogWrite.h> ![]() ![]() |
本帖最后由 驴友花雕 于 2025-5-22 16:32 编辑 第 4 步:开源与代码解释
代码非常简单,基本上它通过 wifi 接收数据并分离字符串并根据查看的命令控制电机。 “roboteyes.h”、“seperatestring.h” 和 “MotorController.h” 是自定义库。这些包含在 sketch 文件夹中。我将来会更新更多的表情和面部动画。这是我第一次尝试制作一个库,所以任何反馈和建议都会有所帮助。 您需要的所有库。
将您的 SSID 和密码更改为您的 wifi 网络。
这是 UDP 端口。我把它设为 1234,所以很容易记住,但你可以把它改成你想要的任何四位数。 if(udp.listen(1234)) {//UDP port number if there is any problem change this. 在这里,我们创建 “dispTask” 来处理面部动画。借助 FreeRTOS,我们可以同时播放动画和移动机器人。有更好的方法可以做到这一点,比如使用队列,但我无法让它工作。所以如果你能改进这部分,请告诉我。
此函数通过 wifi 读取传入数据,并将每个命令分离到一个数组中
|
第 5 步:应用程序 在您的手机上下载并安装该应用程序。Apk 文件包含在 Github 上的代码中。要使用该应用程序,您需要两样东西:IP 地址和 UDP 端口号。 默认 UDP 端口为 1234 要获取 IP 地址,请在 Deskbot 通过 USB 连接到 PC 时打开串行监视器。然后按 ESP32 上的 reset。如果 wifi 连接成功,您将看到 IP 地址。 Tools > Serial monitor > Change baud rate to 115200 打开应用程序并键入 IP 地址和 UDP 端口号。您的手机和 Deskbot 应该在同一个 wifi 网络上。如果一切正常,您应该能够驾驶钻头。 “请勿同时将电池和 USB 数据线连接到 EPS32” 现在我们已经结束了,享受与您的新可爱朋友一起玩耍的乐趣。如果您被困在任何地方或需要更详细的说明,请告诉我我会更新此页面。 ![]() ![]() |
这是这个项目的第一部分,所以我只包含了基本的东西。在未来的更新中,我将添加更逼真的动画和更多传感器。 我这个项目的最终目标是制作一个小巧的桌面助手,它位于我的办公桌上,并且足够智能,可以在不碰撞或从桌子上掉下来的情况下导航。我不知道它在现实生活中的用途是什么。 您可能已经在代码中看到了一些额外的内容,例如 MPU6050 引用和应用程序中的一些冗余功能。那是因为我已经在试验 SLAM。您在应用程序中看到的黑框是一个画布,您将在其中看到机器人在桌子上移动时绘制的地图。此外,顶部的风扇未连接到任何东西。我打算添加 LED,但认为事情可能会变热,所以我添加了风扇。它看起来很酷,所以我保留了它。 附录 项目链接:https://www.instructables.com/Ti ... ESP32-and-FreeRTOS/ 项目作者:印度 shubham_bhatt 视频教程(6分钟):https://www.youtube.com/watch?v=DRXjLnhupkE 3D打印文件:https://grabcad.com/library/esp32-3d-printed-robot-1 项目开源代码:https://github.com/sastejugaad/LittleBoi |
5.77 MB, 下载次数: 1
11.49 MB, 下载次数: 0
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed