1. 引言
随着经济的飞速发展,国民的生活质量不断提高,垃圾是近几年来困扰我们已久的问题。在我国668个城市,近半数以上已经被垃圾环绕包围了,每年垃圾产量达到10亿吨,并以每年10%的速度递增。为解决这一现象,自2019年7月,上海正式实行垃圾分类,至今已有46个重点城市先行实施。但人们对于垃圾分类方面知识还有所欠缺:有一道关于垃圾分类的常识性题目:“黄色垃圾桶装什么类型的垃圾。”结果显示,在400人中只有30人左右是能准确回答问题的 [1],也就是说占比只有8%。人们对垃圾分类的知识还需进一步提高,甚至即使有垃圾分类这样的回收分类机构,但碍于人们的不了解和疏忽,远远做不到真正意义上的垃圾分类。根据上述现象,我们设计了一款具有语言识别功能的智能分类垃圾桶。
本文的智能分类垃圾桶是基于MSP430主控板开发的,它通过识别用户说出的垃圾名称来控制不同分类的垃圾桶接收用户扔出的垃圾。其GSP定位功能可以帮助人们快速找到附近的智能分类垃圾桶。这一点很好的解决了人们在需要进行垃圾的丢弃而无法及时找到垃圾桶的问题。由红外传感器判断智能分类垃圾桶内部是否已满,若内部已经装满垃圾就不会开启桶盖,桶身装置的LED呈现高亮状态表示已满,并提示物业人员或者环卫工人及时清理已满垃圾桶。
2. 总体设计
语音识别的智能分类垃圾桶在垃圾的根源上准确的将其归类,解决了部分人群在对垃圾分类知识上不明确的问题。所有硬件功能模块均由单片机系统中微控制器进行处理,利用无线通讯模块,将用户输入的语音信息与本地语音包和数据库内的数据比对。这里把智能语音识别垃圾桶的工作模式分为两种:离线功能和在线功能。
2.1. 离线功能模式
当智能分类垃圾桶出现断网或者网络不稳定时,可脱机运行,即离线模式。当语音识别模块感知到声音时,启动语音识别程序,同时闪烁LED灯提示用户已收到语音信息并正在识别,识别到与本地语音包中的物品名称相同时,控制相应垃圾桶上的LED灯打开,同时通过舵机打开该垃圾桶的盖子,然后在一定时间后自动关闭。
2.2. 在线功能模式
当垃圾桶所处的区域网络畅通时,即为在线模式。在该模式下,智能分类垃圾桶拥有离线模式下的所有功能,同时,用户输入的语音信息会被上传至数据库进行比对,然后将反馈结果与单片机处理结果进行比对,如若不同则采用回馈数据并更新本地语音包,如若相同则不影响单片机的正常工作。
3. 硬件部分
3.1. 主控板选择
我们选用了MSP430系列单片机作为该系统的开发板(其片上外设如图1 MSP430主控板实物图所示),因为其具有更简洁的指令集、丰富的寻址方式、高效的查表处理指令、大量的寄存器以及片内数据存储器都可参加多种运算等优点,因此与传统的51类单片机相比,它具有较高的处理速度,更强大的处理功能以及能使系统工作更加稳定。在功耗方面,MSP430单片机有着超低功耗的特点,大大的降低能源消耗,节约了开发成本。MSP430单片机上设有的看门狗、模拟比较器、各种定时器等多种片上外设模块,降低了系统的复杂性,为系统的单片解决方案提供了极大的方便。另外MSP430系列器件均为工业级的,运行环境温度为零下40摄氏度到85摄氏度,很好的满足了该系统对环境温度的要求 [2]。如图2 MSP430芯片引脚图所示,展示了MSP430芯片的引脚信息。
![](//html.hanspub.org/file/29-1541951x10_hanspub.png)
Figure 1. MSP430 development board
图1. MSP430主控板实物图
![](//html.hanspub.org/file/29-1541951x11_hanspub.png)
Figure 2. Pin diagram of MSP430 chip
图2. MSP430芯片引脚图
3.2. 硬件电路设计
图3为智能分类垃圾桶系统硬件框架设计图。
![](//html.hanspub.org/file/29-1541951x12_hanspub.png)
Figure 3. Design drawing of hardware framework of intelligent sorting garbage can system
图3. 智能分类垃圾桶系统硬件框架设计图
本系统由MSP430F5529LP主控板及太阳能板、GPS定位模块、四路舵机、语音识别模块等部分组成。
GPS定位模块使用野火秉火的GPS+北斗双定位模块ATGM332D,该模块定位精度达到2.5米,具有快速的搜星能力(≤32 S),非常适合高性能、低功耗的场景。我们通过UART串口即可连接微控制器,微控制器通过串口读取到GPS模块输出的NMWE信息,然后再由微控制器处理信息,通过Socket套接字上传到云端,最后通过APP将位置信息实时的提供给用户。
语音识别使用的是思修 SX-ASR-B,它具备高性能16位nDSP内核处理核心,工作频率为50 MHz,内设有32K SRAM。自带麦克风放大器的16位ADC,用于语音录制。带有16位高精度DAC及喇叭驱动电路,用于语音播放。通过SPI接口读取Flash中的语音数据。采用标准UART接口与主机进行通讯。工作电压3.3~5 V,工作电流小于30 mA (不算WAV语音解码时驱动喇叭的电流),休眠电流小于10 uA。模块采用非特定人语音识别技术,可对0.2秒至3.2秒的语音命令进行响应,响应时间约0.4秒1.2秒。非常适用于低功耗的场景,其板上结构如图4思修SX-ASR-B模块实物图所示。
太阳能充电电路主要采用6V/500 mA的太阳能板进行供电,使用4000 mA的3.7V聚合物锂电池进行储能和供电,充电芯片采用TI公司的BQ25606。同时,为了保护锂电池的安全,避免锂电池在充电、放点过程中由于电压过高或过低导致锂电池的寿命降低,我们在电池中加入了DW01锂电池保护芯片,形成保护电路。原理图如下图5:
![](//html.hanspub.org/file/29-1541951x13_hanspub.png)
Figure 4. Physical drawing of SX-ASR-B module
图4. 思修SX-ASR-B模块实物图
![](//html.hanspub.org/file/29-1541951x14_hanspub.png)
Figure 5. Schematic diagram of protection circuit
图5. 保护电路原理图
4. 控制系统设计
4.1. 主控板控制程序
本系统以MSP430F5529LP作为控制核心控制器,实现对各个硬件功能模块之间的统筹调度。
如图6主程序流程图所示,整个控制系统的主程序以死循环的形式体现,保证系统能够在通电的情况下持续运行。
本系统的代码实现主要依靠寄存器的操作以及少量的库函数操作。系统在进行语音交互的过程中,对实时性的要求是很高的,如果在代码实现的部分中使用的大量的库函数进行操作会造成大量的冗余代码,使得系统对用户语音指令响应的时间过长。虽然使用在程序中使用大量的寄存器操作会使得程序的可读性以及可维护性差,但寄存器操作带来的实时性变强正是本系统所需要的。
4.2. 中断服务程序
本系统的控制程序中使用了四个中断,分别是MSP430F5529LP的串口中断0和1,外部中断0和1,如图7中断服务程序流程图所示。
![](//html.hanspub.org/file/29-1541951x16_hanspub.png)
Figure 7. Interrupt service procedure flow chart
图7. 中断服务程序流程图
单片机中串口0主要用来与语音识别模块进行控制指令与返回值的交互,当单片机通过P3.3引脚(串口0的发送引脚)发送识别指令至语音识别模块时,语音识别模块开始识别用户的语音命令,在对音频经过采样,量化,编码后将识别结果通过P3.4引脚(串口0的接收引脚)返回至单片机内,此时单片机内触发串口中断0,然后对从串口接收的数据进行处理。
单片机中串口1主要是在单片机连接电脑时供调试使用,在电脑端可以通过串口调试助手连接单片机,并通过P4.4引脚(串口1的发送引脚)发送控制指令,此时触发单片机中的串口中断1,在对数据进行处理后通过P4.5引脚(串口1的接收引脚)返回处理后的结果,在串口调试助手中即可看见。
在MSP430F5529LP上,厂商定义了两个用户自定义按键KET1()和KEY2(),在本系统中,KEY1主要用来向语音识别模块发送开始识别指令,KEY2主要用来向语音识别模块发送退出识别指令,当KEY1按键按下时,触发外部中断0,向语音识别模块发送开始识别指令,当KEY2按键按下时,触发外部中断1,向语音识别模块发送退出识别指令。
4.3. 时钟配置
本系统在进行设计的过程中,考虑设置三种时钟频率,分别是32.768KHZ、1.1MHZ、16MHZ。
LFXT1是MSP430F5529LP提供的外部低频震荡源,频率为32.768KHZ,使用该震荡源的频率作为系统的主时钟以及子时钟,可以有效保证较低的功耗,但在使用串口的通信的过程中,数据传输的错误达到了大约44%。
在TI官网给出的数据手册中,MSP430F5529LP在开机上电后,默认的时钟频率为0.8 MHZ到1.5 MHZ,在系统稳定后,数控振荡器默认为2 MHZ,FLL默认2分频,主时钟和子时钟的频率都为1.1 MHZ,在此种情况下,如果只是对串口发送和接收的数据进行接收而不进行数据处理,可以保证在串口通信下数据能够进行可靠的传输,但是在本系统中,串口0的中断是在语音模块传输数据的时刻产生的,在接收串口传输数据的同时,还需要对数据进行处理,1.1 MHZ的主时钟频率就显得比较的慢。而我经过测试,主时钟为1.1 MHZ并加入了对串口传输数据进行处理的情况下,从串口0中接收的数据会有丢失,即单片机向语音识别模块发送3个字节的控制命令,语音识别模块会有一个3个字节的返回值,但通过串口只能接收到2个字节的数据,无法判断控制指令是否成功发送。
最后一个16 MHZ是本系统的主时钟所采用的时钟频率,该时钟频率通过锁相环将MSP430F5529LP单片机P5.2和P5.3引脚外接的4 MHZ外部高频震荡源倍频后得到,在本系统中,只有在进行串口通信时才需要较高的时钟频率,在这里使用16 MHZ的主时钟即可满足,并且经过测试,以16 MHZ的主时钟频率进行串口通信时,不会出现数据传输错误或者丢失。因此,在主系统时钟已经能够满足本系统的基本需求的情况下,系统的子时钟则是配置的1 MHZ,是将外部晶振经过锁相环分频后得到的,能够在一定程度上节省功耗。
MSP430F5529LP最高能够倍频到44 MHZ,但是在本系统中使用16 MHZ即可满足需求,继续升频只会带来更高的功耗,因此不对更高的时钟频率进行考虑和对比。
4.4. 语音识别程序
本系统采用的是离线语音识别模块,能够自动收集用户的语音信息,将处理后的结果与语音识别模块的片内ROM中存储的词条进行比对,比对的结果会通过串口反馈至单片机中。语音识别模块在发送的数据时会触发单片机的串口中断0,在中断处理程序中使用一个数组将相关的数据进行存储,以3个字节为一个单位。同样的,在程序中,使用了多个数组,对连续识别指令、退出识别指令、初始化指令等进行存储,在对语音识别模块发送控制命令时能够直接调用,控制指令如表1语音识别模块控制指令及返回值对应表所示。
![](Images/Table_Tmp.jpg)
Table 1. Corresponding table of control instructions and return values of speech recognition module
表1. 语音识别模块控制指令及返回值对应表
语音识别模块在向单片机发送处理结果时所触发的串口中断0具体代码如下所示:
while(!(UCA0IFG & UCTXIFG));
UCA1TXBUF = UCA0RXBUF;
receive_data[receive_data_id] = UCA0RXBUF;
receive_data_id++;
if(receive_data_id%3 == 0)
receive_data_id = 0;
4.5. 四路舵机控制程序
在本系统中,单片机能够直接控制4个垃圾桶桶盖的转动,即能够控制4个舵机工作。单片机中Timer0_A在比较和增减模式下具有PWM输出功能并配备了五个比较捕获器,因此,在本系统中,我使用了Timer0_A下的四个比较捕获器产生了四路PWM输出以控制舵机进行运转。
本系统中使用的舵机型号为SG90 (180度),对于该种舵机,一般需要一个20 ms的时基脉冲,该脉冲的高电平部分占用达到0.5 ms至2.5 ms时,可以控制舵机转动到固定角度,它们之间的对应关系如表2高电平占用时间、舵机转动角度与占空比之间的对应关系所示。
![](Images/Table_Tmp.jpg)
Table 2. The corresponding relationship between high level occupancy time, steering gear rotation Angle and duty ratio
表2. 高电平占用时间、舵机转动角度与占空比之间的对应关系
在时钟配置中,子系统时钟所设置的频率为1MHZ,在此处作为Timer0_A的时钟源,当CCR0(计数终值)置为20,000时,PWM的周期为20 ms。此时Timer0_A的比较捕获器CCR1置为19,000时,对应占空比为2.5%,舵机会转动45度。同理,Timer0_A其他三路的比较捕获器的值可以通过占空比计算得到,从而使得舵机转动固定角度,舵机控制的具体配置代码如下所示。
P1DIR |= (BIT2 + BIT3 + BIT4 + BIT5 + BIT0);
P1SEL |= (BIT2 + BIT3 + BIT4 + BIT5);
TA0CCR0 = PWMPeriod;
TA0CCTL2 = OUTMOD_7;
TA0CCTL1 = OUTMOD_7;
TA0CCTL3 = OUTMOD_7;
TA0CCTL4 = OUTMOD_7;
TA0CTL = TASSEL_2 + MC_1;
5. 结语
该系统致力于解决当下社会如何治理环境这一问题,它采用了硬件和软件相结合的方法,首先通过相关APP将目标垃圾桶的位置信息实时提供给用户,在用户到达垃圾桶后,用户通过说出垃圾的名称,回收对应垃圾的垃圾桶的桶盖便会自动打开,从而帮助用户正确的投放垃圾。在该系统带有的GPS导航定位模块、语言识别模块、太阳能充电模块等共同作用下组成了一个功能完善的强大系统,从源头上解决目前垃圾分类实施困难的问题。目前,系统基本框架已经搭建完成,通过模拟测试实验,项目符合我们的初期期望,并针对尚未解决的问题我们已经制定了可行的方案,后面我们将不断的完善系统功能,减小使用的复杂性,增强用户的体验感。
NOTES
*通讯作者。