一种新型智能垃圾桶的设计
扫描二维码
随时随地手机看文章
0 引 言
随着物联网技术的迅速发展,各行各业呈现出一种智能化的趋势,智能家居、智慧城市、智能物流的产生极大地改变了人们的生活 [1],为人们带来了便利。各种物联网硬件的成本随着技术的进步逐渐降低,这一趋势势必会降低智能产品的价格,在未来的几年或者几十年的时间,智能设备会飞速普及。而智能家居将会出现在寻常百姓家,所以说智能家居的前景将会十分火爆 [2]。本文将物联网技术运用到传统的垃圾桶上,力求开发出一款操作简便、功能完善的新型智能垃圾桶。
1 系统总体设计
本文设计的垃圾桶主要由 Arduino 单片机、电机驱动模块、语音识别模块、超声波测距模块、人体红外模块以及光敏传感器组成。其主要功能 :以智能车机器人为载体实现系统的移动功能、非特定人声语音识别,并根据语音指令做出相应动作 ;检测用户是否投放垃圾进行自动开关盖、满箱检测,并进行分时报警。系统架构如图 1 所示。
2 系统硬件设计
2.1 电机驱动模快
采用 L298N 电机驱动模块驱动两个直流电机,该模块上具有 2 个使能引脚以及 4 个输入引脚,其中 1 个使能引脚配合它相邻的 2 个输入引脚,可以对一个直流电机进行控制 [3]。简单来说,可以把该模块看作 4 个单刀双掷开关,通过单片机引脚控制开关进行组合,从而控制电机的不同运动方式。使用单片机上 4 个带有 PWM 功能的引脚对电机驱动,其中2 个控制左电机,另外 2 个控制右电机,既能实现控制电机前后转动,又能利用 PWM 脉冲宽度调制技术实现电机调速,进而控制系统的运动速度。
2.2 语音识别模块
使用 LD3320 语音识别模块,其具备非特定人声语音识别功能。所谓识别非特定人声,是指对任意音色和音调的声音它都能检测并且识别出来,该芯片利用 DSP 算法实现这一功能 [4]。通过上位机软件对需要识别的词条进行设置,一共可以添加 50 条关键词,并且设置每条关键词被识别出后模块返回的数据,比如添加一条前进指令,格式为“00,qianjin,001,$”。为了防止误识别,本系统使用“关键词唤醒”工作模式。唤醒词应该设置为日常生活中人们不常用的词语,当语音识别模块识别到唤醒词后再进入识别模式,对预设的关键词进行识别。
2.3 超声波测距模块
本节选用 HC-SR04 超声波传感器。该传感器有 4 个引脚,一对是电源引脚,另一对是控制超声波发射和接收的引脚。超声波测距模块最大测量距离为 7 m,工作时需要提供一个 5 V 电压供电,模块的发射引脚和接收引脚与单片机引脚相连,模块工作时,当单片机发送一个 10 μs 以上的高电平给模块发送端引脚。然后接收端检测是否是高电平,当读取到高电平时打开定时器,直到高电平结束,再关闭定时器。这段时间就是模块发射超声波到被测物体的时间加上超声波遇到物体被反射后返回的时间。利用发送和接收的时间差以及声波在空气中的传播速度,即利用公式 :测量距离 = (高电平时间 × 声速)/2,很容易测得被测量点到传感器的距离 [5]。
2.4 人体红外模块
本系统采用 HC-SR501 人体红外传感器。人体红外模块可以检测物体发出的红外线强度,根据动物和物体发出红外线强弱进行区分 [6]。该模块需要 5 V 电压供电,具备两种工作模式 :一种是检测到人后不再进行检测,会一直持续高电平几秒后再进行监测 ;另一种是检测到人后触发高电平,这时还会进行检测。工作模式可以通过传感器下方的跳线帽进行选择。传感器检测到人后高电平的延时时间是可控的,调节右侧电位器即可。该传感器的测量距离可以通过调节左侧的电位器进行微调,也可以根据需要的测量的范围进行设置。
2.5 光敏传感器
光敏传感器上的光敏元件收集光信号并且将光信号转换成电信号,光敏元件的敏感波长在可见光波长附近 [7]。光敏电阻是光敏传感器的一种,其价格低廉,工作效果较高,在多种物联网系统的开发中,该类传感器多被用来检测外界环境的光线强度变化,以实现系统在不同环境下切换不同的功能。比如常见的可夜视摄像头监控系统,在摄像头前方安装一个光敏电阻,对当前环境的光线强度进行感知,当光线亮度下降到设定的阈值时,摄像头上的红外灯自动打开,启动夜视功能。
3 系统软件设计
系统软件部分使用 C 语言编写,目前 Arduino 单片机的开源代码非常多,并且封装了很多函数库,所以可以直接调用库函数进行编程,从很大程度上简化了代码的编写。软件部分的核心是获取语音识别模块,通过串口发送给单片机的参数,解析该参数对应的动作,如“前进”“后退”“打开盖子” 等。为避免语音识别模块的误识别导致系统进行错误的行为,需要把语音识别模块设置一个唤醒词。本系统选用了现实生活中人们不常用的词语“若琪”作为唤醒词 [8],当语音识别模块识别到唤醒词后才进入识别状态,减少了误操作。系统的核心工作流程如图 2 所示。
当系统通过语音模块识别到的指令,运行相应的运动函数移动到使用者附近时,垃圾桶盖前方的人体红外传感器识别到人的存在,同时用户需要发出“打开盖子”的语音指令,当同时满足这两种条件时垃圾桶打开盖子。这样设计是为了避免系统的错误行为,打开垃圾桶盖只需要通过 Arduino 自带的 PWM 引脚控制舵机的旋转角度 [9],比如在未开盖时舵机的角度为 0°,打开盖子时舵机旋转角度为 90°,当开盖5 s 后,默认用户已经扔完了垃圾,再控制舵机角度为 0°,关闭盖子即可。
满箱检测功能是通过读取垃圾桶盖内壁安装的超声波传感器所测得距离实现的。该距离即代表垃圾桶当前所剩空间。Arduino 函数库同样提供了超声波传感器测距函数,把超声波传感器定义的引脚作为参数传给该函数,就可以得到距离。在程序中对该距离进行判断,系统把距离为 4 cm 作为报警阈值,当测得距离小于 4 cm 时蜂鸣器发声从而提示用户更换垃圾袋。同时配合光敏电阻输出的电平判断当前环境为黑夜还是白天,如果是白天则进行报警,黑夜则关闭报警功能。超声波测距工作流程如图 3 所示。
4 系统测试与实物展示
语音控制功能测试 :使用手机播放唤醒词“若琪”将系统唤醒,然后保持声音大小不变播放“前进”“后退”“左转” “右转”共四个语音命令,并且在每个距离上循环播放 200 次,通过语音识别模块配套的软件对识别结果进行统计,经过反复实验,系统在 2 ~ 3 m 之间的正确识别率在 85% 以上 [10],把语音识别模块与单片机连接。重复上述测试过程,观察系统的运动功能,发现系统可以根据语音指令实现相应的运动,说明本功能实现良好。
自动开关盖功能测试 :实验者发出语音识别模块唤醒词“若琪”,并且发出“打开盖子”指令,同时把手放在人体红外传感器前方 5 ~ 8 cm 处,盖子打开并且当人扔完垃圾几秒种后,桶盖自动关闭,证明本功能正常。
满箱检测与报警功能测试 :把 Arduino 单片机与电脑连接,通过串口调试助手实时显示超声波传感器所测的距离。首先控制光敏电阻检测到的环境为白天,当串口显示的距离值为 4 cm 时,蜂鸣器发声 ;用手遮挡光敏电阻,测得距离小于 4 cm,蜂鸣器未响,说明程序及硬件无误,功能可以正常使用。
垃圾桶实物如图 4 所示。
5 结 语
本文设计的智能垃圾桶实现了语音控制运动功能、语音控制开盖功能、满箱检测功能、分时报警功能。与目前已存在的智能垃圾桶相比,本文提出的智能垃圾桶具有功能更加齐全、性能更加稳定的优点,但还存在很多不足之处,比如未实现垃圾分类功能和自动巡航功能。在后期的优化升级中会逐步加入这些功能,让用户切实感受到物联网技术为生活带来的便捷。