摘 要:目前全国各地都在推行生活垃圾分类政策,但是广大市民的参与度和正确投放度等方面使垃圾分类工作进度推展缓慢,收效甚微。为了提高居民的垃圾分类意识和垃圾分类的准确度,结合智能家居系统,本文设计了基于微信小程序的智能分类垃圾桶远程控制终端,实现智能分类垃圾桶的远程控制、政府最新政策的推送、分类答题、积分兑换等功能,从而帮助提高居民垃圾分类的意识,养成垃圾分类的行为习惯,促进垃圾分类工作的进展。
关键词: 垃圾分类;小程序;mqtt协议;
0 引言
国家在《中华人民共和国固体废物污染环境防治法》中第四十九条提出:“产生生活垃圾的单位、家庭和个人应当依法履行生活垃圾源头减量和分类投放义务,承担生活垃圾产生者责任。任何单位和个人都应当依法在指定的地点分类投放生活垃圾。禁止随意倾倒、抛撒、堆放或者焚烧生活垃圾。已经分类投放的生活垃圾,应当按照规定分类收集、分类运输、分类处理”。生活垃圾分类是一项需要全面参与的活动,但是由于很多居民的垃圾分类意识薄弱,以及垃圾种类繁多使居民有时无法准确的区分,导致垃圾分类实施以来遇到了很多的困难,收获的成效甚微。
为了提高广大居民的垃圾分类意识、精准区分垃圾种类,智能分类垃圾桶也就应运而生了,垃圾的自动分类,解决居民投放错误的问题,鉴于智能手机和智能家居的普及,为了提高居民的垃圾分类意识和积极性,本文为智能分类垃圾桶设备终端,设计了基于基于微信小程序的控制终端。利用WiFi和MQTT协议实现微信小程序与智能分类垃圾桶设备终端的远程通信,相比使用终端APP来实现,具有节省开发成本、操作简单、不占用手机内存,无需下载即可轻松使用等优点。
1 总体方案设计
基于微信小程序的智能分类垃圾桶主要包括设备端、云服务器、用户小程序端三大部分。系统总体设计框图如图1所示。
图1 总体设计框图
该系统的设备端核心处理芯片采用了ST公司的STM32F103C8T6,无线通信模块采用esp8266,摄像头采用K210摄像头模块,进行垃圾种类的采集和区分,然后通过wifi模块将设备端的状态信息、以及采集到的垃圾种类信息,发送到阿里云ESC服务器,云服务器再将这些数据信息通过MQTT协议传输并储存到MySQL数据库中,用户端的微信小程序通过MQTT协议订阅到这些信息,并进行显示。
2 微信小程序主要界面设计
微信小程序的设计架构如2所示。
图2 微信小程序设
计架构
微信小程序界面主要有由首页、设备管理、个人中心三大界面组成,其中首页主要功能为显示投放垃圾的重量、投放记录查看、分类答题、投放积分奖励、分类政策知识等主要功能。设备管理主要功能有查看设备列表和添加设备,可以通过远程开关灯、更改设备网络等功能来控制设备工作,设备信息主要功能有查看设备剩余电量、设备是否满溢、火情报警信息、当前剩余容量等。添加设备主要有两种方法,可以扫描设备上的二维码进行添加,也可以输入设备码进行绑定设备。个人中心可以查看设备参数、当前信息、以及使用帮助等。
微信小程序界面设计如图3所示。
图3 微信小程序界面设计
3 smartconfig一键配网设计
随着越来越多智能家居设备进入家庭,这些产品大部分都要连接家庭的WiFi网络,但WiFi网络的接入需要知道无线路由器的名字(SSID)和密码,本系统采用smartconfig一键配网,实现智能垃圾桶设备终端的连网功能,只需要长按设备上的配网按钮再通过手机微信小程序进行一键配网并绑定相关设备即可实现。smartconfig的配网基本原理是通过手机直接发送UDP广播报文到待配网设备,待配网设备进入配网模式后,扫描所有的可用无线信道,找到发送smartconfig报文的信道,并锁定在这一信道上开始接受数据。
智能分类垃圾桶微信小程序Smartconfig配网流程如下:
首先手机连接到设备所要连接的wifi,打开智能分类垃圾桶客户端小程序,通过提示打开配置界面手动填写当前手机连接到的WiFi密码,请求配网token;
触发智能分类垃圾桶设备端配网按键,使wifi模块开启混杂模式监听所有网络数据包;
手机通过广播、组播循环发送 ssid/password/token数据字段;
智能分类垃圾桶设备端通过 UDP 包(长度)获取配置信息捕捉到ssid/password/token,然后连接到路由器并绑定设备(广播根据 UDP 包长度,组播根据 IP 地址信息)。
Smartconfig一键配网流程如图4所示。
图4 smartconfig一键配网流程
微信小程序smartconfig配网界面如图5所示。
图5 微信小程序smartconfig配网界面
4 MQTT通信协议接口设计
设备端与微信小程序的数据通信采用了MQTT协议。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:
Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
payload,可以理解为消息的内容,是指订阅者具体要使用的内容。
MQTT客户端对MQTT报文的UTF-8格式的解析是调用util里的接口mqtt.min.js,具体客户端的实现包括连接参数初始化、连接服务器、发布接收消息和消息解析
import { connect } from 'mqtt.js';
const mqttUrl = 'wxs://mqtt.qwerzxc.top:8084/mqtt'
通过onshow函数打印出是否成功连接到所订阅的服务器主题数据(mysmarthome/pubb)
onShow() {
var that = this;
that.client = connect(mqttUrl);
that.client.on("connect", function() {
console.log("成功连接mqtt服务器!");
that.client.subscribe("/mysmarthome/pubb", function(err) {
if (!err) {
console.log("成功订阅设备上行数据Topic!");
}
});
});
成功连接到服务器并且成功订阅到mqtt主题后,小程序可通过API接口与后端进行数据交互,并且可以获取到数据库中的信息或者将传感器采集到的数据存入数据库中。
5 总结
本文将智能分类垃圾桶设备终端与线上微信小程序结合起来,通过微信小程序可以对垃圾桶进行一键配网功能、查看垃圾桶的历史相关相关数据和指令的发送等。针对垃圾分类难的问题,本文设计了相关政策知识学习功能,同时用户可以通过答题功能和正确投放垃圾获得相应的奖励积分,从而激励人们对垃圾分类知识的了解和学习,起到提高居民垃圾分类意识、识别垃圾种类、培养垃圾分类习惯等效果。
参考文献
肖波雄,李博宇,张琼,黄波.智能垃圾桶与垃圾分类小程序结合的应用研究[J].电脑知识与技术,2020,16(25):102-104.
[2] 谭宸,孙小进,姜楠,郭朋飞.基于MQTT协议的战场环境监测系统[J].单片机与嵌入式系统应用,2020,231(03):62-66.
[3]金峰.基于微信小程序的家用物联网系统开发[D].浙江大学,2019.
[4]杜欢政,刘飞仁.我国城市生活垃圾分类收集的难点及对策[J].新疆师范大学学报(哲学社会科学版),2020,164(01):134-144+2.