西北民族大学电气工程学院 黄剑林 韦国全 林伟杰 刘恩泽 刘 一
传统垃圾箱存在内在设计缺点,一般的垃圾箱没有遮盖,垃圾溢出造成垃圾外扔,成为滋生并传播病菌的大本营。另外,经过调查发现即使是没有乱扔垃圾的现象,但是对垃圾的分类不合理,也是一种资源浪费。垃圾分类的意义重大,实行垃圾分类,可以防止空气污染、减少对土地的侵占、提高资源利用率,垃圾分类已成为一个时代热点,政策驱动垃圾分类正在全国推广。针对上述问题,为了提高资源利用率和生活质量,同时满足人们对于智能化的需求,本智能分类垃圾箱从实际出发解决及时垃圾清理、智能垃圾分类等问题。
使用Cortex-M4内核STM32F1系列芯片控制器作为控制单元,控制系统搭载舵机模块、语音识别模块、按键模块、温湿度传感器、显示屏模块、短信模块、超声波传感器、称重模块、定位模块等组成(如图1所示),对垃圾箱进行再造升级。
图1 系统框图
本项目研究的是基于MCU的智能分类垃圾箱,其主要功能是实现智能分类。语音交互的过程就是用户发出信号,语音模块LD3320会对信号进行频谱分析,再由STM32检索数据库内180多种垃圾进行匹配,成功后由舵机模块打开相对应的垃圾箱口并在液晶显示屏上显示开箱信息;如果短时间内没有反应,可以通过液晶显示屏来触摸按钮打开对应的垃圾箱口。本项目还搭载各种智能环境监测模块,如满箱监测、气味监测、秤重监测以及温湿度监测等,也可以通过手机端观察数据等并对不合格现象提供多种解决办法。其可通过GSM模块提醒管理者,管理者可通过GPS定位模块(仅管理员使用)悉知附近每个垃圾箱分布情况,以便于解决紧急问题。
2.1.1 垃圾分类功能
本项功能主要基于垃圾容纳部分、数据库处理部分、人机交互部分、程序设计及优化部分。
(1)垃圾箱结构部分:四分类垃圾箱(可回收垃圾、有害垃圾、干垃圾、湿垃圾),主要用金属或者塑料等适合的材质制造垃圾储存的部分,使垃圾箱本身的响应迅速便利。
(2)数据库处理部分:在本项目中要将生活中常见的180多种垃圾信息建成数据库,这是整个项目的主要部分,其他部分与此处进行查询进而响应,针对不同的垃圾产生不同的应激反应。
(3)人机交互部分:该部分是此机器从外界获取信息的部分,其将会应用类似于LD3320语音识别模块获取外界信息,作为响应数据传到机器系统中,机器系统根据传来的信息进行处理,把应该打开的垃圾箱口通过可触摸显示屏反馈给用户。此后可根据反馈的信息选择应开启的垃圾箱口,实现垃圾分类投放的功能。
(4)程序设计优化部分:该部分是整个项目的核心,其以STM32为处理核心,使用Keil对本项目进行分模块编程,主要实现的是从人机交互部分获取信息,进而在数据库中对该信息进行查找并将结果反馈在可触摸显示屏幕上。在用户选择了所要开启的箱口之后,向垃圾容纳部分输出PWM波控制舵机偏转一定的角度从而打开箱口,实现垃圾分类投放。
2.1.2 智能监测功能
本功能是在垃圾箱实现智能分类的前提下,集合温湿度传感器、气味传感器、称重模块、超声波传感器等对垃圾箱内侧环境进行智能监测,保证智能垃圾箱的正常工作。
(1)温湿度传感器:采用DHT11温湿度数字传感器来实时监测箱内温度和湿度,并把温湿度显示于显示屏上。DHT11温度精确校准,且其信号输出距离长、响应快。管理员通过设置两个阈值(即上限值和下限值)来判断箱内是否存在火源或者过于潮湿(易滋生过多细菌),以便打开换气扇。当超过阈值会及时通过手机APP推送或者发送短信给管理员,提醒其要及时进行安全处理。
(2)气味传感器:采用类5A-VOC100气味、异味传感器,这类传感器响应时间短,具有极高的灵敏度,所以用来实时监测箱内气体浓度(甲醛、氨气、氢气、酒精、一氧化碳等),将浓度显示于显示屏上。由管理员设定一个阈值,当超过阈值时开启换气扇模块,将内部的空气迅速排出,防止垃圾分解产生的易燃气发生爆炸。
(3)超声波传感器:采用超声波测距模块对箱内垃圾高度进行监测,由用户设定阈值,当达到这个阈值时即临近满箱,系统会及时通过手机APP推送或者发送短信给管理员,提醒其及时清理。
(4)称重压力传感器:采用HX711模块来测箱内的重力压力,将测出的重力压力显示在可触摸显示屏上,由管理员设定阈值,如果超过阈值则满载将会及时发送短信或者手机APP推送给管理员,同时箱的指示灯变红,提醒其他用户不可用此箱。
2.1.3 定位功能
GPS定位模块:管理员可以通过GPS定位模块获取多个智能分类垃圾箱的具体投放位置,以便在出故障或者紧急情况之时,通过通信接收到的信号利用电脑上位机观察信号所在的具体位置,从而可以快速的到达故障现场。
2.1.4 通讯功能
通过手机APP随时监测智能分类垃圾箱的上述各种情况,当出现紧急情况的时候及时发送短信通知管理员。
本项目使用12.6V的锂电池作为电源,整个系统还需用到5V电源为MCU以及部分模块供电、3.3V电源为部分模块供电。另外,需要使用两个可调降压模块使锂电池电源提供的电压分为两种不同大小的电压以满足系统需要,从而保证能够为MCU及所用到的模块提供其所需要的电压,以便满足项目所需。
根据MCU不同I/O口所具有的硬件资源将不同模块接在合适的I/O口上,以合理使用硬件资源;此外,大多数模块采用串口通信,为了满足模块能够实现其功能并能够进行相互间的通信从而满足项目需要,需要将MCU的串口资源进行分配使其不存在冲突,以便顺利完成项目所需要的功能。其中,LD3320语音模块使用USART4、GPS北斗双定位模块使用USART3、GSM/GPRS模块使用USART2,剩下两个串口当作备用。此外,MCU的定时器资源也需要合理分配给各个模块使用。
本项目中使用的编程语言是C语言,使用的编译器为Keil 5。Keil编译器完美的支持使用C语言对STM32系列芯片的驱动,该编译器功能非常强大,其能确定bai的Keil RTX,小封装实时操作du系统(带源码),支持在线仿真功能;同时,可以通过观察窗看到每一个寄存器的值,也可以更加直观的看到程序设计时出现的错误并及时改正,对于程序的调试非常有帮助。程序编写时使用模块化编程,把不同模块的初始化及驱动过程封装在不同的.c文件中。模块化编程最大的好处就是程序的可阅读力比较强,编程思路的体现更加清晰,对于程序的分模块调试以及程序修改也非常方便。在本项目中使用到的功能有I/O口复用、IIC通讯、PWM波的输出、串口通讯、定时器中断、外部中断、定时器等。本程序执行流程图如图2所示。
在代码设计与实现中要进行反复调试,确保能够达到预期的效果,可通过上位机来模拟智能垃圾箱实现自动分类功能。针对程序中出现的问题我们应该从现象入手分析,对每一次的现象和数据进行记录,通过比较找出最好的数据提供给使用者。如果现象并不明显可靠,也可以使用Matlab进行仿真计算出比较完美的值或者使用更好的算法来优化项目成品。
图2 程序执行流程图
总结与展望:本项目设计的“智能分类垃圾箱”通过语音模块来实现智能垃圾分类处理,通过增加触摸按键辅助实现垃圾分类;可以增加多类环境传感器来监控垃圾箱正常工作,在此基础上添加定位系统和短信接收系统,能够帮助管理员尽快处理问题。此款垃圾箱在模拟的环境中可以完成既定任务,有较强的实用性。本项目设计的智能分类垃圾箱控制系统具有一定的使用价值,但功能还不够完备。比如垃圾分类中数据做的不够全面,需要在此基础上增加垃圾大数据库,以便更好的识别监测信号,又好又快的实现垃圾箱的开与关;另外,可以使用集成芯片来减少项目成本,使该垃圾箱更好的服务于人们的实际生活。