一、项目背景介绍
随着3D打印技术的日益普及,这项新兴科技已经悄然融入了我们的日常生活。然而,由于3D打印的目标部件往往结构复杂,加之打印机速度的限制,打印过程可能需要相当长的时间才能完成。为了解决这一问题,并避免因材料堵塞、断电等意外情况导致的时间延误和材料浪费,采用视频监控系统成为了一种非常有效的解决方案。通过实时监控打印进程,我们可以及时发现并解决潜在问题,从而显著提高打印效率和成品质量,减少不必要的成本损耗。
本次我计划使用Seeed XIAO ESP32S3 Sense开发板和配套的摄像头,以及温湿度传感器DHT11,制作一个可以远程查看3D打印机打印进度以及环境信息的监控系统。
详情请移步本项目基础部分:FastBond3基础部分-基于Seeed XIAO ESP32S3 Sense开发板的3D打印智能监控系统 (eetree.cn)。
二、项目设计思路
得益于Seeed XIAO ESP32S3 Sense开发板较高的集成度以及较低的开发门槛(可利用Arduino进行开发),本项目的电路设计图较为简单,如下图所示:
将DHT11温湿度传感器的数据引脚连接到ESP32S3 Sense开发板的D1引脚,VCC和GND分别连接到开发板的3V3引脚和GND引脚。
下图是本项目的方案框图:
三、项目设备支持
本项目需要的硬件主要有两个:XIAO ESP32S3 Sense开发板和DHT11温湿度传感器:
详细介绍请看本项目基础部分:FastBond3基础部分-基于Seeed XIAO ESP32S3 Sense开发板的3D打印智能监控系统 (eetree.cn)。
四、项目实现方法
图像信息监控功能
XIAO ESP32S3 Sense开发板自带有一个的示例代码,实现效果是与开发板处在同一局域网内的设备(手机或电脑)可以在浏览器中输入开发板的IP地址,进而查看实时视频流,包括更改视频流分辨率等功能,如下图所示:
但是这个示例代码有其局限性,将图像监控功能限制在同一局域网内,就是说我无法在宿舍访问实验室的图像监控,即无法异地访问,于是我了解到内网穿透这一方法。
内网穿透,又称NAT穿透,它通过在内外网之间建立通信隧道,使得位于局域网或私有网络中的设备能够被外网直接访问。这一技术常用于解决由于网络地址转换(NAT)带来的内网设备无法直接与外网通信的问题,使得内网中的Web服务、数据库、远程桌面等资源能够在互联网上被安全地访问,极大地提高了网络资源的利用率和管理的便捷性。
支持内网穿透的软件有很多,这里我选择的是樱花FRP软件,这是一款基于FRP(Fast Reverse Proxy)项目的内网穿透工具,由第三方开发者维护。樱花FRP可以帮助用户将自己的内网计算机上的服务暴露到公网上,使得外网用户可以访问这些服务,例如远程桌面、Web服务、游戏服务器等:
温湿度信息监控功能
对于温湿度这种文本信息,我想起了之前使用过的MQTT协议方法。MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,专为物联网(IoT)设备和服务设计,它通过发布/订阅模式进行消息传递,具有低带宽消耗、低延迟和可靠传输的特点,适用于连接远程位置或移动设备,确保了在资源受限的网络环境中高效的数据交换。MQTT协议原理图如下所示:
XIAO ESP32S3 Sense开发板作为信息发布端将DHT11采集到的温湿度信息上传到MQTT服务器(本项目中我所使用的是一个公共的免费服务器)并自命名一个主题,我的手机或电脑就可以作为消息接收端订阅这个主题,获取到温湿度信息。
五、项目成品测试
本项目的源代码已上传附件,最终项目成品如下图所示,为方便放置,特别设计了一个挂钩孔:
遗憾的是,使用内网穿透服务后,所给示例代码运行的网页就无法查看实时视频流,只能查看图片信息,不过对于远程查看3D打印机的打印情况已经足够了:
安装可以接收MQTT消息的APP后,手机端就可以正常接收到温湿度信息:
同样,在电脑端也可以正常接收温湿度信息:
六、心得体会
感谢电子森林发布的FastBond活动这次的机会,让我能够有机会实现自己之前的小创意。并且官方推荐的厂商的产品质量都很值得一试!