垃圾分类小程序
了解垃圾分类
2019年7月1日起上海就要开始正式执行《上海市生活垃圾管理条例》,真的。。。不是开开玩笑随便执行
如果依旧混合投放垃圾,拒不整改个人最高可罚款200元企业单位最高罚款5万元。
所以魔都的朋友都开始努力复习垃圾分类
- 干的东西不一定就是干垃圾
- 湿的不一定就是湿垃圾
- 你以为的可回收物未必就是可回收垃圾
不少人都表示:实在太难了!
垃圾分类可是要全国推行的到2020年底, 先行先试的46个重点城市, 要基本建成垃圾分类处理系统。
除上海外,还有:
北京、天津、重庆、石家庄、邯郸、太原、呼和浩特、沈阳、大连、长春、哈尔滨、南京、苏州,杭州、宁波、合肥、铜陵、福州、厦门、南昌、宜春、郑州、济南、泰安、青岛、武汉、宜昌、长沙、广州、深圳、南宁、海口、成都、广元、德阳、贵阳、昆明、拉萨、日喀则、西安、咸阳、兰州、西宁、银川、乌鲁木齐市。
这简直比高考还难!
难到都不想点外卖喝奶茶了…
于是 这款基于图像识别、语音识别的垃圾分类小程序 就来了~
扔垃圾再也不怕不怕啦!
更多垃圾分类相关参考:https://www.sohu.com/a/325019787_100159440
一、垃圾分类问题
1.关于垃圾分类
- 垃圾分类是社会进步和生态文明的标志,是人人均可参与其中来保护环境和改善环境的方式。
- 我们追求进步,崇尚文明,希望有碧水蓝天净土,共建美好家园。
2.垃圾分类的标准
- 由于全国垃圾暂时没有统一的标准,开放垃圾分类的城市以自己的规定为准。
- 像上海,生活垃圾分为 有害垃圾、可回收物、干垃圾、湿垃圾。
- 像北京,生活垃圾分为 有害垃圾、可回收物、其他垃圾、厨余垃圾。
注意:北京的厨余垃圾就是上海的湿垃圾,北京的其他垃圾是上海的干垃圾,名称不同,实际上的垃圾种类是相通的。
3.基本分类及其定义
上海为例
- 1、可回收垃圾:玻璃金属蓝桶入,循环利用变宝物。
可回收垃圾即废纸张、废塑料、废玻璃制品、废金属、废织物等适宜回收、可循环利用的生活废弃物。 - 2、有害垃圾:电池废药有害处,灯管油漆红桶入。
有害垃圾即废电池、废灯管、废药品、废油漆及其容器等对人体健康或者自然环境造成直接或者潜在的危险的生活废弃物。 - 3、湿垃圾:厨房剩饭瓜果皮,统统转入湿垃圾。
湿垃圾即易腐垃圾,是指食材废料、剩菜剩饭、过期食品、瓜皮果核、花卉绿植、中药药渣等生物质生活废弃物。 - 4、干垃圾:毛发尿片香烟蒂,无害无用灰桶里。
干垃圾即其他垃圾,是指可回收物、有害垃圾、湿垃圾以外的其他生活废弃物。
4.垃圾分类技巧
上海为例
关于上海垃圾分类流行这样一句话
- 猪能吃的——湿垃圾(厨余垃圾)
- 猪都不吃的是——干垃圾(其他垃圾)
- 猪吃会shi的是——有害垃圾
- 卖了可以买猪的是——可回收垃圾
需要注意的是
- 小骨头算湿垃圾,大个的猪骨头牛骨头算干垃圾;
- 鸡蛋壳算湿垃圾,而坚果壳算干垃圾;
- 陶瓷碗碟算干垃圾,塑料碗碟算可回收垃圾;
- 纸杯算干垃圾,纸杯的塑料盖子算可回收垃圾;
- 奶茶里的珍珠是湿垃圾,奶茶杯算干垃圾,奶茶塑料盖算可回收垃圾。
5.垃圾分类查询网站
- 功能网站查询:https://www.8684.cn/ljfl
- 上海市垃圾分类查询:http://www.lsnews.com.cn/py/qg/201907/t20190701_214222.shtml
二、小程序
1.需求
需要一款微信小程序,能够根据所在城市的垃圾分类准则,方便准确的为用户提供 关于垃圾投放 等相关问题。
涉及的功能模块
- 首页
- 搜索框直接搜索
- 图像识别搜索
- 语音识别搜索
- 专题
- 更多
2.开发环境
- 工具:微信开发者工具
- 环境:云函数、云数据库、云存储
- api:百度Al接口
3.开发过程
3.1位置定位模块
- 使用微信小程序的qqmap-sdk工具包,创建
utils
工具类封装方法getLocation()
获取当前位置。 - 定位失败、当前城市未开放垃圾分类的情况默认上海。
- 用户可以点击选择指定的城市,可以一键重新定位当前城市。
- 不同的城市对应不同的垃圾分类数据信息,数据存储在 云数据库 中。
3.2首页分类图片显示
- 显示当前定位城市的垃圾分类数据。
- 进入首页—》根据当前城市查询数据库—》获取 sx_name 即当前城市对应分类图片的缩写—》然后渲染为本地图片。(针对不同城市垃圾分类种类不相同,如上海的
干垃圾
即为北京及其他地区的其他垃圾
) - 点击分类图片进入该当前分类的详情页,具体展示 分类概述 、投放指南、代表垃圾。(图像识别、语音识别之后得到结果也是跳转这个分类图详情页面)
3.3图像、语音识别实现流程
- 图像识别:上传图片,获得
tempFilePath
—》拿着tempFile获得base64编码—》拿着base64
等参数访问api
—》渲染结果—》拿着结果(多个)请求数据库获取分类信息—》渲染到页面该识别结果的后面显示。 - 语音识别:上传语音(配置好
recorderManager
等录制参数,选在可选PCM
格式)获得tempFilePath
—》拿着tempFilePath获得base64编码—》拿着base64
等参数访问api
—》渲染结果到搜索框----》用户点击搜索框,进行类别匹配(丛云数据库中取数据)
3.3专题
- 专题是针对于那些常见但是不宜区分、一种物品拆分分类的垃圾。
- 专题的实现一般不需要频繁变动,因此可以使用静态数据,减轻云函数、云数据库的压力,提高响应速度。
注意
- 实现并没有直接调用其他的识别接口,那样太简单了,而且一般这种接口需要付费。
- 语音识别api因为是http,暂时只能pc端、体验版调试 使用,线上环境会出现
'网络错误~'
的提示。(现已经解决)
问题
这里不再详细说明,开发中遇到的问题记录在博客(id:xiaosi、
),参考
- 微信小程序云开发问题篇1_使用云数据库查询不出数据解决(字段类型对应、数据库读写权限)
- 微信小程序云开发问题篇2_微信小程序调百度图像识别接口问题小计(报错:216101 not enough param 参数不足、上传到云存储图片名称后缀问题、图像base64编码识别)
- 微信小程序云开发问题篇3_云数据库导入Excel数据(xls转为json导入之后报错:导入数据库失败, Error: Poll error, 导入数据任务(id:1431654)异常…)
- 微信小程序云开发问题篇4_微信云数据库记录内嵌数组查询( 根据数组对象的key 查询一条记录中 符合条件的 {key :xxx, value: xxx}对象,然后将该对象返回)
- 微信小程序云开发问题篇5_关于navigateTo()页面跳转的传参问题(中文字符通过eventChannel实现参数传递)
- 微信小程序云开发问题篇6_微信小程序从云存储保存图片到本地(关于图片保存授权的问题和一些坑:只弹出一次图片权限确认框、getSetting获取所有权限的判定存在undefined的情况)
- 微信小程序云开发问题篇7_微信小程序调百度语音识别接口问题小记(报错1: invalid audio length 、报错2:json param error 、关于json和row两种方式的请求)
- 微信小程序云开发问题篇8_语音识别问题:忽略了https校验
源码
开发的源代码也上传至GitHub:
4.效果
目前小程序1.0.0版已经发布,可以通过扫描二维码的方式体验
基本截图
这是1.0.0版本的截图,后续会改进优化~