杨吉欢,李娟,周拓,徐思雨,谷银珂,林沁瀚
摘要:随着人们生活水平的提高,生活垃圾的种类和数量越来越多,为减少环境污染,提高资源利用率,许多城市实施垃圾分类。“垃圾分类小助手”是一款基于微信云开发的微信小程序,该小程序利用模糊查询、图像识别等技术,实现了垃圾信息查询、拍照识别垃圾分类、视频宣传和益智答题等功能,为垃圾分类困难者提供了有效的帮助,保障了垃圾资源的合理运用。
关键词:垃圾分类;云开发;信息查询;拍照识别;微信小程序
中图分类号:TP311.1 文献标识码:A
文章编号:1009-3044(2022)33-0042-03
1 引言
近几年,我国大力推广垃圾分类知识普及活动,加快推进全民垃圾分类工作,为建设绿色环保家园提供相应保障。但由于垃圾分类工作在国内许多城市还没有太多实践经验,导致垃圾分类践行效果与其倡导的做法相比仍有一定的差距,人们的自主意识有待提高[1]。垃圾分类是一种新的习惯、新的素养,在提高群众垃圾分类意识上,需要政府采取更多的措施,引导和帮助群众树立正确的生活方式。广州城市管理和综合执法局开发了一套垃圾分类信息化管理系统[2],助力垃圾分类高质量发展。
基于当下研究现状,本文提出设计一款名为“垃圾分类小助手”的微信小程序,助力于垃圾分类高质量发展。“垃圾分类小助手”是基于微信云开发的小程序,具有多种方式帮助群众了解垃圾分类常识,培养群众对垃圾分类的意识,提高垃圾分类达标率,从而有效地进行资源利用回收,共建美丽家园。
2 关键技术
2.1 微信小程序及其框架
微信小程序作为一种内存小、无须安装并自带流量的应用,用户可以通过微信搜索随时使用,又无须考虑安装卸载的问题。微信小程序的开发首先要具备微信开發者工具编译器,并在小程序官网获取自己的App ID,建立一个小程序项目。在小程序项目中,通过 WXML视图和WXSS 样式实现了小程序的UI界面设计。WXML展示的是小程序页面的基本框架结构,WXSS为框架和元素提供了相应样式。
微信小程序提供了一套名为MINA开发框架,它具有较高的运行速度,对于小程序端有着高度一致的呈现。MINA框架包括视图层、逻辑层以及系统层。视图层由多个Page页面组成,逻辑层采用Javascript语言进行开发,开发者可以方便地调用其丰富的函数库,对于初学者来说极易学习和上手开发。在程序运行时,逻辑层对数据进行修改,随后视图层根据逻辑层反馈的结果做出相应的更新,系统层是视图层与逻辑层通信的纽带,允许小程序通过调用API从而提高用户体验。
2.2 云开发技术
2018年,微信推出了小程序云开发的功能。小程序云开发基于Serverless云服务的理念,为开发者提供完整的服务支持,开发者只需写完函数并部署到Serverless即可,且后期无须关心服务器的维护。微信为云数据库中的集合、云端资源和云函数提供了可视化的管理,并且为云开发提供了许多API。云开发为开发人员提供了云数据库、云存储和云函数3种基本功能[3]。云函数的写法与在本地定义的JavaScript方法没有很大差别,在调用云函数时,会将定义好的代码放在Node.js环境中执行,所有开发者都共有这段代码,大大提高开发效率[4]。云端也可以存放AppID、OpenID 等数据信息,方便开发者保存调用。
云开发与传统服务器相比,较为容易,开发者能更好地上手。对于一个小程序后台的快速组建,云开发是一个不错的选择。通过云开发,开发者不用把精力和时间都花在服务器的注册搭建以及设计维护上,相当于弱化了服务器的功能。云开发将后端封装成BaaS服务,并提供了相应的SDK给开发者,开发者可以像调用函数一样使用后端服务,极大减轻开发难度。
2.3 模糊查询技术
模糊查询是指用户通过输入关键字查询相关内容,并显示在页面上。目前小程序云开发还未提供模糊查询机制,因此需要通过构造正则表达式来完成云开发的模糊查询。利用小程序提供的db.RegExp构造函数创建正则表达式,其中regexp属性填写用户需要查询的内容,options属性支持i,m,s三个flag,注意,使用s这个flag时要先构造一个正则对象。
2.4 百度图像识别技术
百度AI开放平台提供的通用物体和场景辨认接口支持识别10万个常见物体及场景,能够返回相应的名称结果[5]。该小程序利用百度AI开放平台中的图像识别的通用物体和场景识别接口,实现拍照识别功能,帮助用户更好的识别垃圾,提高分类效率。
1)百度云开发注册及配置
首先登录百度AI开放平台官网,注册百度账号,并进入百度云智能管理中心,点击创建图像识别应用,创建完成后打开,可以看到相应的API Key,Secret Key,需要在小程序中进行调用。
2)获取Access Token
Access Token作为小程序全局唯一接口调用凭据,大多数接口的调用都需要Access Token,开发者需妥善保存。该小程序中使用POST方法向百度授权服务地址发送请求,并在URL中填写好grant_type,client_id,client_secret三个参数,其中第一个参数固定为client_credentials,后两个分别是应用的API Key和Secret Key,都可以在百度AI平台管理应用中查看。
3)服务器域名配置
登录微信小程序官网,点击开发管理的开发设置,填写服务器域名为百度接口域名。只有在小程序后台配置合法域名后,才能调用该接口。注意,服务器域名配置仅支持https和wss协议,且每个月只能修改5次。
3 系统设计
3.1 数据库设计
根据对系统的需求分析,共设计了四个数据表,分别为:管理员信息表,用于存储管理员的相关信息;垃圾分类信息表,用于存储垃圾类别;垃圾信息库表,用于存储垃圾信息;益智题库表,用于存储答题练习中的题目。
其中垃圾分类信息是利用Python技术抓取的,并将其转换为JSON格式,一条垃圾分类数据对应一个JSON对象。通过转换,得到了近万条垃圾分类数据,并将其上传至云数据库。对于垃圾分类数据集合,系统将其权限设置为所有用户都可读,仅创建者可读写,各集合通过唯一的ID值相互引用数据,保障数据库的安全。
3.2 功能设计
垃圾分类小助手微信小程序一共設计了六个功能,包括:用户管理、垃圾分类常识、视频宣传、益智答题练习、垃圾信息查询和拍照识别等,如图1所示。
用户管理:设置了管理员用户和普通用户两类。其中,普通用户首次登录时,需要授权才能登录,管理员登录后具有完善垃圾模块。
垃圾分类常识:该模块大体介绍了可回收垃圾、湿垃圾、干垃圾、有害垃圾四类垃圾的相关常识和垃圾投放的要求。
视频宣传:该模块提供了垃圾分类的相关视频科普,分类宣传可回收垃圾、湿垃圾、干垃圾、有害垃圾四类垃圾。视频较为简短,有助于用户快速了解。
益智答题练习:该模块提供了练习模式和答题模式。其中,答题模式将自动组卷10道垃圾分类题目,要求用户在10分钟内完成答题。当所有题目完成之后,用户才能交卷,交卷后即时查看测试成绩和答案。
垃圾信息查询:用户可以查询相关垃圾的关键字,通过模糊搜索到相应的垃圾分类信息。
拍照识别:用户通过手机拍照,小程序利用百度AI开放平台分析图像,自动识别出照片中的有关垃圾。小程序将弹窗提供匹配物品的选项供用户选择,选定后即可查看垃圾所属的类别。
4 系统实现
4.1 用户管理模块的实现
该模块利用微信自带的授权登录功能,调用getOpenid云函数,获取用户的微信头像和微信昵称,并显示在“我的”页面上。管理员的_openid 存在于管理员信息表中,登录时会把用户的_openid 与管理员的_openid 做匹配,管理员登录后能对普通用户反馈的搜索不到的垃圾有关分类信息进行添加,解决垃圾信息完善问题,普通用户则没有。
4.2 垃圾分类常识模块的实现
该模块采用小猪佩奇的四种不同形态简单判断垃圾类别,形象而生动。用户可点击左侧分类栏,即可查看四种分类的概念、主要包括哪些垃圾以及垃圾投放的要求,帮助用户快速了解垃圾分类的常识。如图2所示。
4.3 视频宣传模块的实现
该模块提供了干垃圾、可回收垃圾、湿垃圾、有害垃圾四种垃圾各一分钟的视频介绍,用户可点击查看四种垃圾分类的视频,可随时播放或暂停。通过简短的视频介绍,用户可以快速了解垃圾分类的相关常识,增强垃圾分类意识。
4.4 益智答题练习模块的实现
答题模式下,系统将自动抽取10道垃圾分类的题目,用户可以点击上一题或者下一题进行答题。用户答题正确,选中框会变成绿色,答错的话选中框会变成红色。用户每完成一题,题目下方将自动显示出正确答案。练习模式的题目和答题模式的题目一样,但是练习模式可以直接查看答案,方便用户在测试前进行模拟练习。
4.5 垃圾信息查询模块的实现
用户可以在搜索框内输入需要查询的垃圾关键字,通过模糊搜索以及数据分页加载技术,可以搜索到含有关键字的相关垃圾。用户点击想要查看的垃圾后,页面会显示该垃圾所属分类以及该分类里面主要包括哪些垃圾,这样可以大大提高搜索效率,帮助用户更好的查询。
4.6 拍照识别模块的实现
用户点击拍照识别后,小程序首先将拍照时在微信本地缓存的图片转换成base64编码,通过token请求调用百度的图像识别API,然后将转换后的图片上传到百度图像进行识别。将识别之后的结果返回到小程序,再渲染到页面弹窗。用户勾选想要查看的垃圾后,小程序进行模糊搜索,再将符合条件的数据渲染到页面上,这样也尽可能提高了搜索正确率和拍照效率。图3展示了拍照识别的全流程。
5 结束语
为了更好地提高居民垃圾分类意识,促进智能化垃圾分类,共建美好家园,本文通过对市场需求的调研和国内发展现状的分析,设计了一款基于微信云开发的“垃圾分类小助手”小程序。该小程序积极响应国家垃圾分类政策,借助人工智能技术,为群众提供方便快捷的垃圾查询服务,借助微信云开发技术,为人们提供益智答题服务,最终使垃圾分类更加全民化、智能化、寓教于乐,对于减少环境污染,推动资源回收利用提供有效帮助。
参考文献:
[1] 朱莞怡,胡俊祥,王宇,等.国内垃圾分类现状及对策研究[J].中国资源综合利用,2022,40(4):136-138.
[2] 常燕青,蔡静晶,常中龙,等.谈国内外典型城市垃圾分类现状[J].山西建筑,2021,47(13):1-3.
[3] 陆禹文.基于微信小程序的移动学习平台的设计、开发及应用[D].兰州:兰州大学,2020.
[4] 周政.基于小程序云开发的沼气工程监控系统设计[D].桂林:桂林理工大学,2020.
[5] 邓斌权,李剑波,瞿先超.基于云开发和微信小程序的垃圾分类系统实现[J].电脑知识与技术,2020,16(7):82-84.
【通联编辑:谢媛媛】