
作者在高二的时候就做过一个非常基础的沙画机器人,现在准备去普渡大学上学了,正好也打算带上它,于是想着用这俩年新学到的技能重新设计一下之前的沙画机器人。


所需材料
- 3D打印机
- ESP32 DevKit V1
- 2个TMC2208或TMC2209步进电机驱动器
- 2个迷你NEMA 17步进电机
- 2个霍尔效应端止器(通用的就行)
- TSL2561光传感器
- 用于面板安装的USB-C接口和直流电源插座
- 定制PCB
- 4英寸懒人转盘轴承
- 各种嵌角M3螺丝
- SK6812 RGBW LED灯带(1米),项目使用的是144颗LED/米
- M3铆入螺套(外径4.5毫米)
- 各种2、3、4、5引脚的JST连接器和SMT插座
- 带有滑轮的400毫米GT2同步带
步骤1:Fusion 360
我设计这个动态沙画机器人时非常轻薄,打印后高度不到3英寸(7.62 厘米)!有很多重叠的零件,主要集中在大尺寸的Theta齿轮连接到底板的地方。整个机器人是使用Fusion 360从零开始设计的,并且我通过Fusion Team在线共享了它们。
我从草图开始设计外壳的大致形状,然后沿着大悬挑部分分割它,确保可打印。然后我构建了机器人底板,建模了懒人转盘轴承和中央齿轮组合。



附上机器人组装的剖面和爆炸视图,好让大家更详细地了解它们如何组装。
步骤2:3D打印



我用黑色Polymaker ABS打印了所有零件,使用30-50%的gyroid填充,具体取决于零件的情况。通常,内部组件使用50%的填充率,而外壳则打印足够的壳材使其坚固。我几乎用光了为这个项目购买的3公斤的线材。
如果使用PLA(聚乳酸),在抵抗扭曲变形方面会有更好的效果,然而我需要ABS(丙烯腈-丁二烯-苯乙烯)的结构性能。
附上的照片展示了测试安装线性轴和导轨的情况。
步骤3:机器人组装


我在步进电机上加了4引脚的JST连接器,给TSL2561光传感器加了一个5引脚的连接器,并在磁性限位开关和LED灯带上都添加了3引脚的连接器。
然后,我用嵌头M3螺丝将theta步进电机安装到机器人底盘上。接着,我把GT2滑轮安装在电机上,用M3螺丝把懒人轴承固定在大的中心theta齿轮和下底盘上。轴承应该能够直接嵌入位置,不会摇晃。在Fusion组装中,如果轴承出现摇晃,可以使用额外的间隔器。直线轴和导轨用热塑插件直接固定在theta齿轮的顶部。
步骤4:PCB设计


设计文件可以在这个网站获取:<span>https://oshwlab.com/acvigue/sandscara</span>
步骤5:PCB组装
我直接焊接下了马达驱动器、ESP32以及JST连接器。我添加了一个可选的SD卡插槽,它与MPN#47352-1001(Mouser ^[1]^ )是兼容的。我使用尖细的焊接头和一些无需清洁的焊膏手动焊接了这个连接器。
步骤6:连接所有部件

我安装了一个磁性端止器传感器,安装在中心的微小孔上,用来感知Theta齿轮到达已知位置的情况。
完全组装好的机器人底板只需滑入外壳的中间部分。
步骤7:组装外壳


将上半部分的外壳放在下半部分上。用防塌塞的铆入螺套和12颗10mm M3螺丝将其固定。
步骤8:加入沙子

我使用家里的一些普通工艺毡布,通过喷雾胶把它粘在沙床的底部,这样可以让沙床工作的时候更加安静。然后,我就把家得宝(Home Depot)的沙倒进去,用一把黄油刀将其均匀铺开。
步骤9:灯光

我用双面海绵胶带把LED灯带粘在沙床的两侧,并将3根导线(5V数据和地线)从侧面的小缝隙穿过,延伸到主控板。
步骤10:编译Web界面



我从头开始使用TypeScript和Vue 3编写了Web界面,状态管理使用了Pinia,数据获取使用了一组Axios请求拦截器。
GitHub仓库链接:<span>https://github.com/acvigue/tranquilvue</span>
只需克隆和构建这个项目即可继续进行。
你可以在Linux机器上运行以下命令构建项目(对于Windows机器,更改命令为相应的命令):
yarn && yarn build
生成的构建文件保存在<span>./dist</span>
目录中。
步骤11:编译设备固件

该固件几乎是从零开始重新编写的,并且已经进行了至少一年的开发。它是一个普通的PlatformIO项目,可以在这里下载:<span>https://github.com/acvigue/tranquilfirmware</span>
将构建的Web资源拖到此目录,PlatformIO将自动将它们移动到ESP32的SPIFFS分区。
特别提醒:本文中所示的图案不包括在内,可以从互联网上下载。Web界面仅列出设备上安装的图案。
步骤12:配置设备
固件安装后,设备将设置自己的访问点,名为"Tranquil",所有初始配置都在此完成。你可以将其连接到您的Wi-Fi,设置OTA更新。
步骤13:开始玩耍



我现在已经制作了两个沙子绘图机器人,并在设计可打印性和确保我编写的固件稳定性方面积累了很多经验!遇到任何问题,欢迎和我沟通!
作者的博客:https://vigue.me
作者的GitHub:https://github.com/acvigue
原文作者:aidenvigue
原文连接:https://www.instructables.com/ESP32-Powered-Tabletop-Kinetic-Sand-Drawing-Robot/
转载请注明来源信息