40浏览
查看: 40|回复: 13

[项目] 【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

[复制链接]
DODGE是一款新颖的三脚架设计,由ESP32 Cam模块驱动。三脚架的第三条腿(支撑腿)位于中间,可在移动过程中为定位支撑腿提供支撑。由于支撑腿底部设有伺服装置,它还可以 360 度旋转。该机器人共有六个伺服装置,考虑到 ESP32 Cam 模块在使用摄像头时可用的 GPIO 引脚有限,因此可以实现多种运动。顾名思义,DODGE 可以横向移动,也可以垂直上下移动。

Dodge 可在室内用于监控房屋周围环境,并可通过连接到其 WIFI 接入点,使用手机或电脑进行控制。连接后,您可以控制它的运动,并查看安装在其头部的摄像头的实时画面。它使用两块电池 - 一块为伺服器供电,另一块为 ESP32 模块供电。两块电池确保机器人稳定运行,因为使用同一块电池为伺服器和 ESP32 模块供电会导致摄像头信号出现一些故障,稍后会详细介绍。

至于未来的计划,我希望将道奇的摄像头拍摄的画面传输到树莓派,用于图像识别、人脸检测等功能,并控制其运动。道奇的3D模型是使用Fusion360设计的,并进行了3D打印。由于道奇体积小,所有部件都可以快速打印,且耗材量不大。

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

驴友花雕  中级技神
 楼主|

发表于 昨天 10:34

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 补给品

Emax ES08MDII 数字伺服电机 x 6连杆
铝棒(长度-200mm,直径-4mm)x 1节
SS 销或铝销 - 如果您愿意,也可以将铝棒切成 10 毫米长的段(直径 4 毫米 x 长度 10 毫米)x 4链环
ESP32 Cam 模块,带 MB,用于 Type-C USB(CH340)连接 x 1链路
7.4 V 800mAH 15C 锂电池(长 57mm x 宽 30mm x 高 15mm)
5V 800mAh 锂电池(长 50mm x 宽 31mm x 高 11mm)
2.5M 螺纹插件 x 8
2.5M六角螺丝(长度-15mm)x 4
2.5M六角螺丝(长度-25mm)x 4
2.5M六角螺丝(长度-10mm)x 4
3A 可调降压转换器模块 x 1链接
筒式千斤顶 x 1节
母头引脚(8 孔)x 2
LM4UU 直线轴承 (内径-4mm, 外径-8mm , 长度-12mm) x 2链节
小型径向轴承(内径 4 毫米,外径 7 毫米)x 4链节
电解电容(10V,1000uF)x 1
电解电容(10V,470uF)x 1
通用穿孔板 (50mm x 50mm) x 1
2mm普通螺丝 x 4
28 AWG 延长线(黑色、红色、黄色)x 1
螺旋绕线(直径 4 毫米)x 1节
滑动开关 x 1链接
强力胶 x 1
旧鼠标垫或热缩材料,用于在脚和地面之间产生摩擦
手锯或 Dremel x 1
3D打印机 x 1
3D打印耗材 x 1

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:38

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 第 2 步:小腿

支腿设计为两部分,分别为下支腿和上支腿。在组装上支腿之前,先将舵机臂压入下支腿的开口中。下支腿底部设有孔,用于安装支脚。舵机臂对面的孔用于将不锈钢/铝制销钉穿过上支腿上的径向轴承。组装好舵机的上支腿只需稍用力即可推入舵机臂,确保对面留出 1 毫米的间隙。完全推入后,不锈钢/铝制销钉将与支腿外表面齐平。

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图2

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:40

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 步骤3:大腿

大腿设计有开口,以便安装连接肩部舵机的舵角,并用 2 毫米普通螺钉固定。小型径向轴承与连接小腿和大腿的舵角相对安装。这确保了腿部不会移位,并在移动时提供旋转稳定性。轴承压入后,舵机可以安装在大腿的底部,并使用舵机随附的安装螺钉固定到位。组装小腿前,请务必注意舵机的旋转角度。舵机在大腿上的 90 度位置应使小腿与大腿平行。开口便于拧入螺钉,并确保组装时定位正确。


【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图2

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图3

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:44

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 步骤4:脚

支脚设计有切口,可容纳 20 毫米长的铝棒,以增加强度。200 毫米长、4 毫米直径的铝棒可以切成两段 20 毫米的段,剩余部分稍后将用于齿条和小齿轮组件,因此请确保暂时将其放在一边。将铝棒安装到支脚后,可以将其推入小腿底部的孔中,并使用一些强力胶将其固定到位。可以使用热缩管粘在支脚底部以在移动时产生牵引力。我使用了一个旧鼠标垫,将其切成支脚底部的形状并将其粘在适当的位置。这产生了必要的摩擦力,但您可以使用任何可用的东西。

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图2

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:47

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 第五步:肩膀

肩部将腿部连接到顶板,头部和电池组就放置在顶板上。用烙铁将螺纹嵌件推入肩部顶部的孔中。注意,虽然有3个孔,但只需插入两个。再次将径向轴承插入切口槽中,然后安装舵机并用螺丝固定。在拧紧之前,请确保舵机角度允许腿部完全旋转。当舵机处于90度位置时,大腿在伸展手臂的位置应低于10度,这样它就可以完全向下移动,而不会向上移动太多。然后就可以将腿部组装到肩部上了。

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图3

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图4

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图2

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:50

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 步骤 6:支撑腿

支撑腿由齿条和小齿轮组件组成,小齿轮由伺服器驱动。另一个伺服器安装在支撑脚上,使 Dodge 能够旋转 360 度。由于伺服器的旋转范围为 0 到 180 度,Dodge 可以抬起支撑脚,使其旋转 180 度,然后将其脚放低至地面,使其能够旋转另一半。考虑到单个 180 度伺服器的局限性,这是一种实现 360 度旋转的巧妙方法。

用强力胶将机架的一端固定在套环的插槽上。套环的下端有一个齿轮轮廓切口,用于插入耦合齿轮,耦合齿轮随后用螺丝固定在舵机附带的圆形舵机支架上。然后将舵机放入支撑脚中,并用螺丝固定到位。支撑脚也需要与地面产生摩擦,所以旧鼠标垫派上了用场,它被剪成合适的形状,并粘在支撑脚的底部。

轴承支架两侧各有两个孔,可装入直线轴承,然后将其粘合到机架后面的切割槽中。机架和轴承支架上有对准标记,可实现精确组装,粘合前应对准。轴承架需要粘到顶板底部。顶板底部的对准孔和轴承架上的孔可轻松组装。将轴承架粘合到位后,需要将铝棒切成两段,长度为 60 毫米。这些杆穿过直线轴承,允许滑动运动并限制其他方向的运动。驱动小齿轮的伺服器可以用螺丝固定在顶板底部。伺服器附带的圆形伺服喇叭安装在小齿轮后面的槽中,然后使用两个 2.5M 六角螺钉(10 毫米长)将其固定到位。现在可以将小齿轮推入伺服头并拧紧。再次确保将伺服头旋转至90度(中间位置),并将齿条置于中间位置,拧紧小齿轮。虽然伺服头无需旋转至最大范围即可控制支撑腿的升降,但组装完成后,您也可以随时进行调整。

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图8

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图3
【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图2

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图4

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图5

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图7

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图6

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:53

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 步骤7:头部和电池组

头部由前部和后部两部分组成,其中装有 ESP32 摄像头模块的穿孔板夹在头部的前部和后部之间。对准头部后,在穿孔板上钻四个孔。将四个螺纹嵌件插入头部后部的孔中,并使用四个 M2.5(25 毫米长)六角螺钉固定前部头部、穿孔板和头部后部。

电池组粘在两侧,较重的辅助电池组位于左侧,较轻的主电池组位于右侧。由于增加了驱动小齿轮的舵机,更多的重量向右移动,因此较轻的电池组位于右侧。电子元件整理好后,舵机的电线就可以通过头部后部的孔布线。

降压转换器放置在降压转换器外壳内,然后粘合在主电池组和辅助电池组之间。在将其密封在外壳内之前,请确保在输入电压为 7.4V 时将输出电压调整为 5V。

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图2

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图3

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图6

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图4

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图5

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:56

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 步骤8:接线

将穿孔板切割成 35 x 50 毫米的尺寸,然后将母头引脚焊接到板上。使用焊料制作了两条导轨,分别用作 GND 和 VCC(伺服电机电源)。检查头部正面的开孔后,应将滑动开关焊接到穿孔板上。这样,当头部闭合时,就可以操作开关。将连接件连接到相应的引脚,并从孔中引出电线。这样,我稍后就可以将电线焊接到伺服电机上,并清楚地知道需要多长的电线才能让腿部自由移动。

伺服连接如下:
支撑脚底座伺服器 - IO 4
右腿顶部伺服器 - IO 12
左腿顶部伺服器 - IO 13
右腿底部伺服 - IO 14
左腿底部伺服器 - IO 15
小齿轮伺服 - IO 2

ESP32 摄像头和伺服器均通过电容供电,以平滑任何电压尖峰,避免伺服器运动抖动和摄像机镜头出现故障。伺服器通过 1000uF 电容供电,ESP32 摄像头通过 470uF 电容供电。最初,我尝试使用 7.4 V 电池同时为伺服器和 ESP32 供电,但 ESP32 模块出现了断电现象,有时还会导致摄像机信号出现故障。我推测这是由于电压尖峰和电源线不规则造成的。隔离电源后,一切正常。添加电容后,效果也确实有显著的改善。

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图2

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图3

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图4

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 11:00

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 步骤9:运动学分析

运动学分析
为了加快开发进程,对运动进行运动学分析始终是必要的。由于我们关注的是确定伺服器需要移动的角度来定位小腿的末端,因此使用逆运动学模型会很有帮助。在这种情况下,我们的主要目标是确定角度θ1和θ2,它们分别是大腿和小腿的伺服器角度,而不太关心小腿末端相对于垂直轴(Y)的角度,因为无论角度如何,脚尖的圆形设计都能提供与地面的充分接触。

下面是一段 Python 代码,用于推导方程式并确定角度。在我的案例中,在为支脚添加摩擦垫后,连杆长度 L1 和 L2 分别确定为 42 毫米和 72.5 毫米。已知变量为 L1、L2、x 和 y,需要计算的是角度 theta1 和 theta2。


  1. import math
  2. x = 30
  3. y = 80
  4. L1 = 42
  5. L2 = 73.5
  6. z = math.sqrt((x**2)+(y**2)) # -> Eq 1
  7. theta2 = math.degrees(math.acos(((x**2) + (y**2) - (L2**2) - (L1**2))/(2*L1*l2))) # -> Eq 2
  8. Psi = math.degrees(math.acos(((L1**2) + (z**2) - (L2**2))/(2*L1*z))) # -> Eq 3
  9. alpha = math.degrees(math.atan(x/y)) # -> Eq 4
  10. theta1 = Psi + alpha
  11. Phi = theta1 - theta2 # -> Eq 5
  12. print(f'Theta 1 = {theta1}')
  13. print(f'Theta 2 = {theta2}')
  14. print(f'Phi = {Phi}')
复制代码


【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 11:02

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 步骤10:STL和代码

需要注意的是,将代码上传到 ESP32 Cam 模块时,您需要使用带有引导加载程序的 ESP32 Cam-MB 来上传代码。您需要按下 ESP32 Cam-MB 上的 IO 0 按钮,然后按下 ESP32 模块上的 RST 按钮,以使开发板接受代码上传。此外,您还需要从 Arduino IDE 的库管理器下载 Kevin Harrington/John K. Bennett 编写的 ESP32Servo 库。

在代码文件中更新您所需的密码以连接到 Dodge。代码上传后,您可以在 WIFI 网络上看到它,名称为 Dodge-Tripod。上传代码后,请务必按下背面的 RST 按钮重置 ESP32 Cam 模块。连接到 Dodge-Tripod,然后打开浏览器,在手机/电脑的 URL 中输入 192.168.4.1,即可连接到 Dodge Control App。请确保已为主电池和备用电池供电,然后即可开始使用。

代码和3D模型

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图2

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 11:03

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

## 步骤11:结论

搭建完成后,值得注意的是,当机器人的整个重量压在支撑腿上时,支撑腿会有些晃动,因为我在支撑腿上的伺服器上用了一个塑料伺服喇叭。或许可以用铝制喇叭来解决这个问题,这样可以防止喇叭变形或弯曲。

Dodge 是一款小型机器人,可以在室内使用,它能够捕捉视频,让我可以监控房屋周围环境。它也可以用作桌面机器人。如前所述,我的下一个目标是将其视频数据传输到 Raspberry Pi,用于人脸检测和图像识别。除此之外,除了已经完成的功能外,它还可以通过编程实现许多其他动作,我希望尝试一下,如果有机会,我会更新这个教程。

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 11:34

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

附录
【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人
项目链接:https://www.youtube.com/watch?v=WIU3OHDz7Xk
项目作者:马尔代夫马累 hannu_hell (我热衷于一切机械的东西,并融入艺术和创意。就像一块废金属,在计算机的二进制世界里,与电火花融合在一起。)
项目视频 :https://www.youtube.com/watch?v=WIU3OHDz7Xk
项目代码和 3D 文件:https://github.com/hannu-hell/Dodge-ESP32-Cam-Tripod

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图2

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图3

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 18:20

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图2
【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图3

【Arduino 动手做】由ESP32 Cam模块驱动的全方位监控机器人图1



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail