1. 引言
当前社区虽然都配备了有盖垃圾箱,但仍不可避免现在很多人扔垃圾时,不愿意用手直接接触垃圾箱盖的问题 [1]。有人甚至把垃圾扔在垃圾箱旁,非常影响周边环境。为了美化商场和社区的环境,同时减轻环卫人员的工作负担,本文开发了一款智能垃圾箱及调度系统。本系统开发的智能垃圾箱相较于市场上现有的垃圾箱做出了许多改善,针对于智能垃圾箱清洁不便利的问题,本系统所设计的智能垃圾箱器件均可拆卸,使得清洁工作难度大大减轻;针对于智能垃圾箱耗能大、工作供电不便利问题,本垃圾箱的箱盖装有太阳能板,可以辅助供电,与此同时还可遮蔽太阳的直接照射,提高了器件寿命。且使用的元件价格较低,整体成本低 [2]。
2. 总体设计概述
本文所设计的基于物联网的智能垃圾箱及调度系统主要由两部分组成,分别是装在箱体内的硬件部分及部署在云端服务器上的服务端部分。硬件部分主要包括主控部分、状态检测部分与数据发送部分,分别采用了STM32F103ZET6单片机、人体传感器模块、超声波探测模块、WiFi模块等,实现对垃圾箱状态的实时监控。为了能够最大化的减小垃圾箱所占用的空间,在箱盖上加装了可拆卸式太阳能充电板。服务端部分主要功能是通过云端服务器的数据分析及处理,将预计使用时间及预计路线发送至网页,同时为了用户可以及时的与管理员反馈垃圾箱情况,在网页端加装了实时通讯脚本。总体工作流程大致为智能垃圾箱提供自动开盖式投放功能,便利垃圾的收集,盖子闭合后状态检测模块实时监测垃圾箱内的容量,经数据发送模块传送至云端服务器,服务器对各个垃圾箱装满时间进行预判,调度系统对各个处理结果进行任务编排管理,设计出最优处理方案(即最优清理时间与路线)。设计概念图如图1所示。
Figure 1. Overall design concept drawing
图1. 总体设计概念图
3. 硬件设计
系统框架结构图如图2所示,系统以STM32F103单片机为主控芯片,使用了HC-SR501 (以下简称为人体传感器)、US-100 (以下简称为超声波传感器)、ESP8266-01S (以下简称为WiFi模块)、OLED显示屏、电动推杆电机等器件。大概工作流程为:人体传感器与超声波传感器将数据发送至主控芯片,主控对数据进行处理和判断后将信息反馈至WiFi模块、OLED显示屏和电动推杆电机 [3]。
Figure 2. System framework structure diagram
图2. 系统框架结构图
3.1. STM32F103主控设计
STM32系列采用ARM Cortex-M3内核,此款内核具有低功耗、门数少、中断延迟小、容易调试等特点,其最高的工作频率可达72MHz。它是为功耗和价格敏感的应用领域而专门设计的一款具有较高性能的处理器,应用范围可从低端微控制器到复杂SoC。
STM32F103ZET6是一款中等容量增强型单片机。其内部配有2个12位A/D转换器,具有双采样和保持功能;内置多达7个定时器,其中3个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM/脉冲计数的通道和增量编码器输入口;1个带死区控制和紧急刹车的用于电机控制的PWM高级控制定时器;2个看门狗定时器(独立型和窗口型);1个24位自减型计数器(系统时间定时器)。此单片机具有多达80个快速I/O口,所有I/O口都可以映射到16个外部中断,几乎所有的端口均可承受5V的输入信号,所有端口均支持JTAG,通过JTAG调节器可以从CPU获取调试信息,使产品设计大大简化。因此,选用此芯片作为本设计的主控芯片。
3.2.人体传感器模块
HC-SR501,采用被动式红外探头,是基于热释电效应的人体热释运动传感器,可以准确检测到人体发出的红外线。由于人是恒温动物,具有恒定的体温,体温一般维持在37度左右,所以会发出特定波长10 UM左右的红外线。被动式红外探头就是靠探测人体发射的10 UM左右的红外线而进行人体检测的。其具体工作原理如下,人体发射的10 UM左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上,红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。此模块本身不具有任何类型的辐射,功耗较小,价格低廉,而且穿透能力弱,恰好可以避免误触发,因此选用此人体传感器模块。
3.3. 超声波探测模块
US-100是超声波探测模块。此模块可以在−20℃~70℃的温度下正常运行,不仅避免了极端天气引起的系统失效问题,而且运行状态稳定,可以连续长时间工作。超声波探测模块作为本设计的裸露器件,要适应较强的温度变化。此器件可以很好的满足本设计要求。
3.4. WiFi模块
ESP8266是上海乐鑫信息科技设计的低功耗WiFi芯片,其自身集成了完整的TCP/IP协议栈和MCU。ESP8266WiFi模块是深圳安信可公司基于ESP8266芯片研发的串口WiFi模块,其具有成本低、使用简便、功能强大等特点。兼容3.3 V和5 V单片机系统,可以很方便的与我们的产品进行连接。且模块支持串口转WIFI STA、串口转AP和WIFI STA + WIFI AP的模式,从而能够快速构建串口WIFI数据传输方案,方便设备使用互联网传输数据。WIFI模块是单片机与服务器连接的桥梁,由于传输的数据量较小,所以选择相对价格较低的ESP8266-01S模块,降低成本。
3.5. OLED显示屏
OLED即有机发光二极管(Organic Light Emitting Diode)。OLED由于同时具备自发光、不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异的特性,被认为是下一代的平面显示器新兴应用技术。相较于LCD而言,OLED不需要背光,而且显示同样的内容OLED效果要更好一些,即OLED更适合与小屏幕显示。由于本系统需显示的内容量不大,所以选择较为小巧的0.96寸OLED显示屏。数据接口选择了一种同步、全双工、主从式接口-SPI。其优点在于它的结构相当的直观简单,容易实现,并且有很好扩展性。因此本系统选用的是SPI型0.96 OLED显示屏。
4. 软件设计
4.1. 主控部分
调控好各个模块正常运行后,系统开机工作。首先完成对主控芯片及各个硬件模块的初始化,完成后垃圾箱开启实时人手检测,当检测到人手时缓缓打开垃圾箱盖,并通过辅助人体传感器判断人是否以及完成扔垃圾,待人手离开后延迟10s缓缓关闭,当垃圾箱盖关闭后系统会计算垃圾箱容量以及电池电量,显示在垃圾桶OLED显示屏上,同时讯息会通过WiFi模块上传至服务器接收端;若检测到垃圾箱余量剩余不足5%时,直接通过WiFi模块发送报警信息 [4],主控部分的工作流程如图3所示。
4.2. 服务端部分
服务器部分主要分为接收数据、数据存储、数据分析、前端页面构建、页面后端构建以及报警系统。其主要的工作流程为将Python、MySQL、Apache、PHP等程序软件服务启动后,对环境进行初始化,开启TCPServer服务端,实时接收垃圾箱传送的数据;当接收到数据后系统会根据数据的形式判断数据的类型,若数据类型是报警信息,则直接传送至报警系统,否则系统会判断数据的完整性,将完整的数据存入数据库中,转交数据分析模块处理数据进行对垃圾箱的剩余使用时间的分析,最后将分析好的数据在前端WEB界面展示,管理员及工作人员可实时登录查看预测结果以及电量信息 [5]。数据的基本流程图如图4所示。
Figure 3. Working flow chart of main control part
图3. 主控部分工作流程图
4.2.1. 数据接收
数据接收使用Python作为主要编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python语言是少有的一种可以称得上即简单又功能强大的编程语言,它注重的是如何解决问题而不是编程语言的语法和结构。
Python提供了两个级别访问的网络服务,分别是低级别的网络服务支持基本的Socket以及高级别的网络服务模块Socket Server;本设计选用较为基础的Socket方式接收数据,它提供了标准的BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。
使用服务器提供商给定的公网IP以及未被占用的端口绑定地址,而后开启TCP监听,建立一个TCP Server端。TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。
4.2.2. 数据存储
数据存储采用MySQL,它是一个关系型数据库管理系统,它数据库体积小、速度快、总体拥有成本低、开放源代码其有着广泛的应用,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,因此搭配PHP和Apache服务器可组成良好的开发环境。可以更好配合后端存入与前端读取。
4.2.3. 数据分析
后端收到数据后首先会对数据进行判断,检测传输内容是否完整,完整则由后端程序直接调用MySQL,将完整信息存入,同时会对记录的数据进行分析预测。
容量分析:
预测方法:投掷垃圾会随着地区、季节、节日等条件的影响而发生变化,而投掷垃圾的时间变化不大。CNN适合提取数据特征,LSTM适用于处理时间序列问题,所以结合两种算方法的优点,提出了CNN-LSTM算法 [6]。CNN-STM算方法具有时间,空间的特征表达能力。因此本文主要选用CNN-LSTM机器学习模型以及权重模型的方式进行混合预测。使用CNN-LSTM模型预测日占用量,使用权重模型分析每一天的投掷比例,预测最终垃圾箱余量使用剩余时间。
4.2.4. 前端页面构建
网页工作流程图如图5所示,以管理员身份登录可以修改垃圾箱的基本信息,以及访问数据库存储的垃圾箱数据;当以工作人员登录时,工作人员只能在管理员设定好的范围内访问信息。
1) 设置meta标签
Meta标签是放在HTML文档中的一个标签,在meta标签中设置“name”属性值属于viewport,而viewport在实际上是手机浏览器中显示网页的区域,在代码设置中,将maximum-scale、initial-scale的属性设置为1,使用户在通过网页与好友进行交流时能够手动缩放界面,提高使用的实用性。
2) 视频与音频的嵌入
借用HTML5技术中新增的audio音频标签与video视频标签来进行图像视频编辑,通过这两个标签可以快速地在网页中嵌入视频与音频资料。
3) form表单
网页端主要包含以下模块:基本信息设置、信息查询管理、信息预测模块、系统管理模块。各个模块都可以调用数据库内的信息。如下分别介绍这几个模块:
基本信息设置:垃圾箱位置设置、垃圾桶编号设置、员工信息设置。
信息查询:查询垃圾桶余量信息、查询垃圾桶电量信息。
信息预测模块:直接调用数据分析后存入数据的数据。
系统管理:删除日志、查看日志、数据备份、用户管理、数据恢复和系统数据清理组成。
4) 地图嵌入
高德地图JS API是一套JavaScript语言开发的地图应用编程接口,移动端、PC端一体化设计,一套API兼容众多系统平台。此平台功能完善,开发成本低,简单易学。只需将js代码嵌入html中即可显示。
5) 外置信息系统嵌入
借助TIDIO网页聊天系统可以提高用户与管理员沟通的效率,通过在head标签添加一行简单的Javascript脚本安装代码,即可将TIDIO插入页面中;通过简单的设置以及配置中文词典,即可完成配置,聊天测试效果图如图6所示。
4.2.5. 页面后端构建
1) 初步实现Apache
首先启动节点外壳,打开命令提示符或终端,然后键入节点。然后创建请求:server,监听Server的请求并设置请求处理函数,第三步实现目录列表,通过渲染来减轻前端压力,读取目的路径的相关文件并在客户端显示,可以在HTML5里面替换相关名称。
2) 搭建PHP环境
PHP的应用范围相当广泛,尤其是在网页程序的开发上。一般来说PHP大多执行在网页服务器上,透过执行PHP代码来产生用户浏览的网页。PHP可以在多数的服务器和操作系统上执行。
下载PHP文件并将PHP模块在Apache配置文件添加,添加AddType application/x-httpd-php.php.phtml设置Apache解文件类型,添加phpinidir设置PHP配置文件目录,重启Apache使PHP解析器正常运行。
3) 接入MySQL数据库
PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展、PHP的MySQLi扩展、PHP数据对象(PDO)。PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展。MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的。因此这个扩展虽然可以与MySQL4.1.3或更新的数据库服务端进行交互,但并不支持后期MySQL服务端提供的一些特性。由于太古老,又不安全,所以已被后来的MySQLi完全取代;所以本设计采用MySQLi的方式。将MySQL客户端库作为名为libmysql.dll的文件包含在Windows PHP发行版中,即可完成接入。
5. 设计优势
本系统运用机器学习算法,通过对过去几周的客流量数据分析,实现了对未来一周社区/商场客流量较为精准的预测。并对其设定额定报警值,通过预测数据分析其人流量密集程度,当人流量过多时,发出报警信号,为疫情防控提供技术性支持。
通过访问调查发现,大多数老年人未能很好的适应智能化潮流,为能更好的协调人员配置问题,面对那些不会使用智能手机的老年清洁员,我们采用短信通知的方法,方便那些老年清洁员及时进行垃圾清理。
为使得系统服务更加人性化,添加了用户反馈功能。用户可以实时反馈消息,遇到特殊情况方便处理。
6. 小结
该研究设计的智能垃圾箱及调度系统以STM32为核心控制器,实现了非接触式投放垃圾,解决了人们对于接触式投放垃圾的困扰。将垃圾箱融入网络,可以更方便地实现管理员的实时动态查看,同时系统会根据大数据分析垃圾箱的使用容量,方便管理人员合理地安排垃圾箱的位置及数量,减轻清洁人员的工作负担的同时还可以享受到大数据时代带来的便利。
在垃圾箱的结构设计方面,本设计采用了较为方便的模块化设计,方便清洁人员更换或清洗,尽可能的将绿色溢价压低;在环保方面在箱盖上加装了太阳能板辅助供电;在操作方面使用WEB展示 + 短信报警的形式,系统操作简单,满足了部分不会使用智能手机的清洁员,提高了垃圾回收的效率,具有一定的社会推广价值。
NOTES
*通讯作者。