物联网不求人-3D打印机伴侣
在上一期物联网不求人-服务器搭建So Easy教程中,我们学会了搭建常见的一些创客相关物联网服务器,让我们以最低成本拥有了自己的私有服务器,从此物联网不求人。对于一名合格的Maker来说,除了了解到一些物联网服务之外,我们还会接触到一些创客DIY神器,如3D打印机,激光切割机等。通常我们使用3D打印机都是将G文件拷贝到U盘或者SD卡中再插入到3D打印机当中进行打印,在这个过程当中,我们会时不时的来查看打印的进度和打印质量,偶尔还会有打印失败从而打印连成一坨或者是打印成“泡面”,这我怎么能忍?于是强迫症的我开始寻找如何能够愉快玩耍3D打印机的方法,经过不懈努力最终我找到了OctoPrint这个3D打印机控制神器。一开始我用的是创客朋友送的树莓派用来部署OctoPrint,但随着我的3D打印机增至四台而且由于众所周知的原因现在的树莓派价格贵的离谱,如果继续使用树莓派那么我重新部署三台OctoPrint服务器的价格都能让我继续再买一台3D打印机了。因此我决定用最低的成本来改造我的3D打印机,在上个教程当中我所使用的电视盒子足够便宜且配置不低刚好能够满足我的要求,因此我将改造的过程记录下来,希望能够帮助到拥有3D打印机的小伙伴,让我们愉快的使用3D打印机吧。
视频演示
下面让我们来看看OctoPrint控制打印的演示视频,该视频中我们使用电视盒子搭配M5 TIMER CAMERA X远程监测并记录打印过程,最后将打印过程通过延时摄影呈现给我们,让我们能够实时了解打印进度与打印状态,同时获得打印过程的录像(根据录像我们可以分析打印情况,若有打印失败情况的发生可以辅助我们寻找打印失败原因)。
M5stack Octoprint延时摄影演示
所用硬件
“Timer Camera X” 是一款基于ESP32-D0WDQ6-V3的摄像头模块,板载8M PSRAM,采用300万像素的摄像头(OV3660), DFOV 66.5°,最高可实现拍摄2048x1536分辨率的照片,内置140mAh电池与LED状态指示灯,在指示灯下方有一颗的复位按键,方便开发调试。
硬件特点
- 基于 ESP32 开发,支持 WiFi,蓝牙
- WIFI图像传输
- 定时休眠唤醒
- 状态指示灯
- 超低功耗设计
- 内置140mAh电池
- 一路拓展接口
搭建OctoPrint需要哪些准备
硬件准备
- 一个可以安装Armbian的任意开发板;
- 一个U盘(至少16G用于写入镜像);
这里我们使用型号为CM311-1A电视盒子为例(实际上任何支持Armbian的盒子或者开发板都可以),此电视盒子为运营商宽带赠送,某鱼某多价格50+,配置为2+8G架构为ARM,与同为ARM架构的树莓派相比尽管没有千兆网口与USB3.0,但其价格感人,不足同等配置树莓派的1/10,作为个人第一款入门级服务器来说是绰绰有余的,购买时只需告知商店帮刷安卓系统可以从U盘启动系统即可。CM311-1A主视图如下:
Armbian基础
“Armbian”是一个基于Debian和Ubuntu的操作系统,专门为ARM架构的嵌入式设备设计。它支持多种ARM单板计算机,包括Raspberry Pi、Orange Pi、Banana Pi等,并提供了针对这些设备的优化版本,关于Armbian的详细信息与支持的开发板请访问Armbian官网进行了解。
Docker基础
“Docker”是一种开源项目,用于将应用程序自动部署为可在云或本地运行的便携式独立容器,Docker基础可通过bilibili“Docker 10分钟快速入门”进行了解,通过Docker我们可以使用一条指令便可部署服务而无需理会各种环境与配置问题,在这里我们仅需了解镜像,映射端口与挂载点即可,这个我们将下面实际服务器部署中进行说明。
CasaOS基础
“CasaOS”是一个基于Docker生态系统的开源家庭云系统,专为家庭场景而设计。致力于打造全球最简单、最易用、最优雅的家居云系统。使用CasaOS我们可以很方便的管理与配置我们的Docker应用并管理Armbian的文件系统(可通过文件共享将Armbian的文件挂载到电脑方便管理),其有一个特点就是可以随时修改已有Docker容器的任意配置项,如端口映射,挂载点等。
OctoPrint基础
“OctoPrint”是一款用于3D打印机的开源软件,它可以通过网络连接控制和监控3D打印机。OctoPrint提供了一个用户友好的Web界面,使用户可以远程控制打印机,例如启动和停止打印,调整打印机设置,查看打印进度和监控打印状态。此外,OctoPrint还支持各种插件,以扩展其功能,例如添加监控,导入和导出打印文件等。 OctoPrint一般通过树莓派或其他类似的单板计算机运行也可以使用Docker部署,但前提是你的设备至少具备一个USB口且支持串口。(下面会介绍到几个实用的OctoPrint拓展插件,让我们的更加便利的使用3D打印机)
开始服务器搭建
镜像烧录
准备一张16G的U盘使用文末附件中的镜像烧录工具烧录Armbian镜像
Armbian初始配置
镜像烧录成功后插入靠近网口的USB口,插上网线并开启设备,等待路由器发现增加的设备后,通过ssh登陆设备,默认ssh账号为root密码为1234
登陆成功后出现下方界面(如果你是第一次使用盒子,请参考上一期物联网不求人-服务器搭建So Easy教程启动U盘启动系统设置)
Armbian第一次引导,会要求你创建密码,密码设置字母加数字(简单数字密码不行至少8位密码),输入两次自己想要设置的密码并回车,出现下方提示后选择1并回车最后按Ctrl+C跳出如下图
烧录镜像后系统并不能正确识别U盘的容量,因此想要扩容。输入命令armbian-tf扩容并选择e如下图
扩容时间与U盘速度与容量有关,容量越大需要的时间越长,扩容成功后如下图所示(扩容时间可能会持续几小时,此处可以去喝杯咖啡玩会游戏)
安装Docker
扩容完成后接下来安装Docker,输入命令curl -fsSL https://get.docker.com/ | sh回车如下图(安装时间与网络环境有关)
安装Docker成功后出现下方画面
安装CasaOS
输入wget -qO- https://get.casaos.io | bash回车安装CasaOS如下图
出现如下字样后自动安装CasaOS
等待一段时间后出现下方字样表示安装成功
CasaOS使用
浏览器访问Armbian的IP地址后出现下图所示界面
点击开始按照提示输入用户名与密码创建CasaOS新用户
用户创建成功后登陆出现下方界面
点击Files图标可以在线访问与管理Armbian的所有文件,如下图所示
切换到Root根目录下选择dev文件夹,可看到ttyAML0与video0文件,看到此文件基本代表Armbian可以使用串口与USB摄像头(若你用的是其他设备使用Armbian,这两个文件不一定有可能有ttyAML0但不一定有video0,没有的就代表系统没有相关驱动,上个教程物联网不求人-服务器搭建So Easy中的系统就没有这两个驱动因此不能用于3D打印机的控制)
将3D打印机插入盒子的另一个USB口可以发现增加了一个设备ttyACM0或者video1,video2等表示设备识别到了串口设备或者USB摄像头,下图所示为插入USB摄像头增加了video1与video2(此处只有一个USB口因此只能接入一个USB设备,可以通过USB集线器拓展多个USB设备,但可靠性较弱些)
Octoprint部署
通过CasaOS可以通过网页在线使用ssh登陆Armbian系统,点击CasaOS主界面右上角第三个图标进入ssh登陆界面如下图
输入ssh账号与密码后进入下图界面
输入下方指令部署Octoprint如下所示(此处没有映射任何实体设备到Docker仅将容器的80端口映射到设备的81端口,因为设备80端口已被CasaOS占用)
docker run -d -v octoprint:/octoprint \
-e ENABLE_MJPG_STREAMER=true \
-p 81:80 --name octoprint \
octoprint/octoprint
等待Octoprint容器部署完成如下图
关闭网页ssh并刷新网页可以看到其他容器里面一个名为octoprint的Docker容器如下图
点击该图标设置端口号为上面的81端口并确定如下图(注意IP地址不要修改保持默认)
点击保存后出现下面的界面
等待几分钟后点击octoprint图标自动跳转到如下界面表示Octoprint已经成功部署了
按照提示完成Octoprint配置后出现下方界面,这里我们没有添加串口设备因此红色提示我们没有串口设备(此处篇幅有限忽略配置过程,不懂可以百度参考详细设置过程)
至此Octoprint部署完成,现在我们将3D打印机插到盒子上在CasaOS主界面鼠标悬停到octoprint图标可以看到图标右上方出现3个小点,点击小点并选择设置在出现的界面中滚动至下方的界面,在设备处点击根据自己接入的设备填写/dev/ttyUSB0(打印机串口)与/dev/video0(USB摄像头)注意只有存在的设备才添加,否则会导致容器无法启动。(第一次插入设备一般串口填写为/dev/ttyACM0,摄像头填写为/dev/video1,具体得要根据自己的实际情况来)
Octoprint视频流配置
当我们没有USB集线器使用USB摄像头或者系统不支持USB摄像头时,Octoprint不能进行实时监控,这里我们可以使用网络摄像头代替。点击Octoprint右上角第一个工具图标并选择Webcam & Timelapse项可看到如下所示的配置界面,该界面主要与Octoprint的实时监控视频流与延时摄影有关,只有正确的进行设置才能使用Octoprint的远程监控功能。
我们打开Arduino IDE通过选择ESP32开发板,选择对应的板卡,打开ESP32自带案例选择ESP32>Camera>CameraWebServer根据选择合适开发板配置自己的WiFi信息并上传,上传成功后通过串口监视器或者路由器后台查看设备IP地址,浏览器访问设备IP可以进去下方的网页,通过该网页我们可以很轻松的对摄像头镜像配置。(如果你打开了串口监视器那么你查看视频流时还可以看到串口监视器显示了视频流帧率,图片格式等信息)
我们将摄像头视频流与图片预览地址填入Octoprint摄像头配置页面点击保存便可得到下方的页面,此时我们便可以通过该页面控制3D打印机了,可以在线上传与管理G文件并远程打印(通过上个教程物联网不求人-服务器搭建So Easy中介绍的内网穿透服务你可以异地远程管理3D打印机)
Octoprint插件推荐
Octoprint拥有丰富的插件库,可以为Octoprint添加各种各样的功能拓展,以下为大家介绍几个使用插件
OctoPrint-PrettyGCode-master
可以渲染预览G文件,让我们知道打印的物品全貌并提前检查可能出现的问题效果如下
Octoprint-Draggable-Files-main
可以通过拖拽方式轻松管理分类G代码
OctoPrint-FullScreen-master
可以全屏预览网络摄像头画面方便观察打印质量
OctoPrint-Obico-master
通过AI监测打印质量,当发现疑似打印失败时会自动暂停当前打印(若确保打印正常可以恢复打印),同时还提供APP远程管理多台3D打印机
OctoPrint-Resource-Monitor-master
能将系统各状态通过可视化的曲线方式进行呈现,让我们知道系统详情(CPU资源占用率,网络情况等)
镜像打包
为了方便大家学习我将常见插件与Docker镜像进行了打包,并导出整个U盘镜像供大家快速下载使用,打包镜像各服务如下
程序下载
以上就是物联网不求人-3D打印机伴侣的全部介绍,如果你想体验演示视频中的项目,那么你可以访问https://docs.m5stack.com/zh_CN/download根据你自己的系统下载M5Burner烧录工具进行安装,打开软件按照下面的步骤进行烧录体验。
使用说明
- 下载M5Burner烧录软件
- 打开软件选择CAMERA
- 下滑到底部选择Timer Camera X网络视频服务器下载并烧录固件
- 点击USER CUSTOM登陆或者注册账号
- 进入用户主页点击BurnerNVS跳出弹窗选择对应的串口并连接
- 输入网络信息
- 各数据输入完成确认并保存后单击复位按钮
- 通过串口监视器(波特率115200)或者路由器后台查看设备IP地址
- 浏览器访问设备IP地址在线体验Timer Camera X网络视频服务
总结
从本教程中我们学习了如何通过Octoprint简单便利的控制我们的3D打印机,并通过Timer Camera X弥补了USB口不足的情况,关于Timer Camera X实际上可发挥的地方还有很多,例如录制视频,结合云服务使用人工智能等,由于文章篇幅限制,本文不再展开,后续将通过其他案例进行讲解。本教程方法适用于所有支持Armbian的设备或者开发板,考虑到部分朋友可能存在网络问题导致Docker镜像下载缓慢或者失败,以及部署时间长等问题,因此笔者使用32GU盘配置好文中所有镜像,使用时仅需使用32G以上U盘烧录该镜像按照文中的方法使用即可,镜像下载地址见附录。