本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

精巧呆萌系列之ESP32驱动的3D打印视频流机器人
发布时间:2020-07-28
分享到:
精巧呆萌系列之ESP32驱动的3D打印视频流机器人
发布时间:2020-07-28
分享到:

描述
       ESP32 WiFi机器人是ZeroBot的精简版本(https://hackaday.io/project/25092)。它由Raspberry Pi代替,而由类似流行的ESP32驱动。ESP32机器人尽管处理能力较低,但仍具有许多功能。它可以通过WiFi传输彩色视频,使用小的LiPo电池供电,并且可以通过任何Web浏览器进行精确控制。有了4欧元的Esp32和3欧元的相机,它的确也很便宜。

特征:
-完全3D打印的机箱,(几乎)不需要胶水
-使用Websocket接口的模拟控件
-120x160px处的低延迟流(〜100ms)
-定制PCB,无需凌乱的布线
-可与任何3.7V锂聚合物电池一起使用
-微型USB

       ESP32不需要任何应用程序,可以从任何具有Web浏览器的PC或移动设备进行控制。与其他基于浏览器的机器人不同,Web界面使用虚拟模拟棒,可与任何触摸屏或鼠标精确配合。甚至可以接受键盘输入。流分辨率可以认为是160x120px的马铃薯质量。它仍然超过Gameboy相机,并具有8位色彩。该机器人可以在接入点模式下使用,也可以连接到现有的WiFi路由器。单节LiPo电池为机器人供电,并可以从Micro USB端口充电,该端口也用于对ESP32编程。其他功能包括温度和电池电压监控以及明亮的LED输出。为了使机器人尽可能紧凑,将组件焊接到定制PCB上。

组件:
数量         组件名称
1个    ×    请参阅Eagle文件以获取完整的BOM表
1个    ×    ESP32机房
1个    ×    OV7670摄像头(无FIFO)
1个    ×    TI DRV8833双电机驱动器
1个    ×    MCP73831 LiPo充电器
1个    ×    > 400 mAh 3.7V锂电池(请检查CAD文件以获取尺寸)
2 个   ×    15mm 6V有刷齿轮电动机75:1

       为了使机器人尽可能的小,我不得不设计一个定制的PCB,而不是使用单独的模块。ESP32实际上只需要很少的外部组件即可运行。为了对其进行编程,需要一个USB串行桥。对于这一部分,我为使用FT231XS的“ ESP32 Thing”复制了一些Sparkfun的布局。 有较便宜的解决方案,例如CP2104,但如果没有热风站,则很难手工焊接。要连接相机,PCB边缘上有18个焊盘。这就是对机器人进行编程并传输视频所需的全部。其他组件是DRV8833,它是微型步进电动机/双刷电动机驱动器。为了供电,板上有一个LiPo充电器。USB电源和电池可以同时插入。还有一个小晶体管,用于接通更高功率的LED。但是,这些头灯LED尚未包含在3D打印部件中。以下是Eagle布局过程的一些动画:

这些PCB是从德国电路板供应商Aisler订购的,与美国的OSHPark非常相似。不到两周后,我在邮件中收到了成品板:

完全填充后,PCB如下所示:

       电机分别通过两根电线连接。通过将电池端口放在印刷零件的前面,我犯了一个小的设计错误。无论如何,根据所使用的电池,可能需要一个小型适配器。另一个设计错误是缺少相机的i2c上拉电阻。我以为摄影机板上包括了这些摄像头,但如果没有这些摄像头,它似乎可以正常工作。 

简介
       最初的Zerobot在Thingiverse上的下载量已超过20.000,已经非常流行。因此,在过去两年中,我一直在不断改进代码并添加更多功能。现在,我想基于Zerobot的Web界面构建一些新东西。一种选择是从Raspberry Pi Zero切换到Pi 3B +,但是除了增加尺寸和性能之外,这没有任何改变。相反,我决定使用ESP32来缩小机器人的体积。随着从Linux计算机向微控制器的转变,处理能力也明显下降。 

我发现在QQVGA(160x120px)上的流媒体效果很好。与现代标准相比,该分辨率非常糟糕,但可用于在办公桌上四处浏览。这是快照:


各个像素值通过websocket服务器发送给客户端,而不是编码流。相同的Websocket用于控制机器人。在客户端,javascript将像素组装为完整图像,并将其显示在html文件中。该html文件是从ESP32发送的,因此不需要其他软件。

在有了工作原型后,我继续设计PCB。它包括一个FT232模块,用于对ESP32,LiPo充电器和DRV8833电机控制器进行编程。摄像机直接焊接到板上,以减小机器人的整体尺寸。 

在等待PCB从Aisler到达时,我设计并打印了一个机箱。我本来希望使机器人更小,但是与Arduino相机相比,OV7670巨大。在机器人最终看起来像现在一样之前,我经历了不同的设计。此设计被完全废弃:


再次有两个外壳经过3D打印,其内部面向打印床。我不得不在摄像机下方移动马达,这使得可以使用较小的轮子。我仍然赞成Zerobot的设计更为简单,但是使用OV7670可以做到这一点。机箱中剩余的可用空间可用于放置更大的电池或其他附件。甚至可以在其中安装常规的ESP32开发板来代替我的PCB。 

 

外文原文:点击查看
 

声明:本文由Hackaday授权电路城翻译,系电路城的原创内容,转载请注明出处!

加入微信技术交流群

技术交流,职业进阶

关注电路设计技能公众号

了解最新技术方案

加入电路城 QQ 交流群

与技术大牛交朋友

讨论