基于 Arduino 的自动消毒智能垃圾桶设计
2021-06-08章志飞郭来功徐少伟
章志飞,郭来功,徐少伟
(安徽理工大学 电气与信息工程学院,安徽 淮南 232001)
2020年新型冠状病毒的出现对我国现有公共卫生安全工作的保障提出了巨大且严峻的挑战,迫切需要打造更高效、更安全的新型医疗废物存放环境,致力于抗击疫情的一线服务工作中.社区医院及卫生检疫机构的医疗废物存放和垃圾处理等暴露的安全隐患是亟待解决的重要问题之一[1].现存的智能垃圾桶更加倾向于无接触进行垃圾的处理,而针对后续垃圾桶内病菌的防控与环卫人员及时进行垃圾处理的问题仍有待解决[2-3].
为了有效防控桶内残留病菌的危害,本次设计以Arduino为主控核心,智能垃圾桶在感应到规定距离值内有物体靠近时,会自动开盖满足废弃物丢弃的条件,桶内底部压力传感器监测到垃圾时会实时显示重量,当医疗人员丢弃完垃圾后,进行自动闭盖,主控芯片会驱动水泵进行消毒液的喷洒.在实时监测桶内物品盈满程度的同时,通过桶内的重量及体积判断是否满足报警条件,从而提醒工作人员进行及时清理.与传统垃圾桶相比,该垃圾桶更高效地提升了智能化与人性化程度,对医院等特殊环境下医疗废品的收集、从业人员的身心健康具有重要的现实意义.
1 总体设计概述
本次设计的主体为Arduino UNO,它是整个系统的核心控制单片机系统总体设计如图1所示.通过各个模块之间的协调配合,主要实现了垃圾桶自动开闭盖、自动消毒及满溢报警等一系列功能.包含了超声波测距模块、压力感应模块、显示模块、水泵模块、舵机模块及蜂鸣器的警示[4].其中,超声波的距离感应模块用于提前感应是否有人向垃圾桶靠近,内部的压力传感器模块用于实时检测垃圾桶内的储存垃圾是否或已经超出系统预设的最大溢满程度.
图1 系统总体设计
2 硬件电路设计
2.1 显示模块
显示模块主要是使用一块LCD1602液晶字符显示屏幕,它可以同时显示32个字符,本次设计中主要利用液晶显示屏进行桶内重量的实时显示[5].Arduino通过 D2-D4数字输入引脚与 LCD1602 的 D12-D14 数据线相连.一般情况下使用10 k的电位器对比度进行调节.LCD1602的第3、5、16脚接开发板GND;LCD1602第2、15脚接开发板5V;LCD1602的第4、6、12、13、14分别连接开发板数字引脚12、11、-3、2、4;电位器两端引脚分别连接5V和GND.
2.2 超声波测距模块
本次设计采用的是超声波HC-SR04传感器.超声波传感器的技术规格如下:
探测距离:>30 cm;工作电压:5 V;工作电流:15 mA;工作频率:40 kHz.
超声波HC-SR04传感器的TRIG引脚发出至少10 μs的高电平信号.此时模块向外自动发送8个40 kHz的方波.若前方有障碍物,则会返回信号.通过IO口ECHO接收输入高电平,高电平持续时间则表示从发出到接收之间的时间.超声波测距装置公式为:
(1)
在本次垃圾桶的设计中,将距离值设置为30 cm,当超声波传感器监测到30 cm内时,模块会将接收的信号通过Arduino进而传递给舵机模块工作.
2.3 舵机模块
本次设计SG90舵机为主电机,接收机所接收的控制信号通过信号可调制芯片,从而得到直流偏置[2],同时它内部会产生一个固定周期的基准信号,将所接收的直流偏置电压与内部所持有电压进行比较,获得两者相差电压的输出.将电压所输出的差值输入到电机的驱动芯片,从而决定电机的转动方向.当两者电压差为0时,电机可通过级联减速齿轮使其停止,而电机的转动,则需要PWM信号的不断发送.
2.4 压力传感模块
本次设计采用的是HX711放大器传感器.其中模块HX711作为称重传感器,主要通过电压输出至主控芯片Arduino,通过主控芯片进行重量的计算[6]. HX711模块将称重传感器的输出放大,并将其低压发送至Arduino,芯片根据数据计算重量,其内部所带的时钟振荡器不需要任何外接器件,实际应用中十分高效.
2.5 水泵模块
本次设计采用Arduino直接驱动继电器,在接收到舵机关闭信号之后,延迟3 s输入命令,间接对水泵抽水进行控制.利用继电器对水泵进行控制的工作原理如图2所示.其中,NC:常闭端 ;NO:常开端 ;COM:公共端;VCC:电源正极5 V ;GND:电源负极; IN:信号输入端.NC口一般处于闭合状态.此时,若向继电器IN口输入低电平信号,负载一端接NO,形成闭合回路,负载开始工作.若对IN口进行高电平信号输入,此时负载的一端进行NC连接且此时负载无法工作.此继电器的IN信号引脚与Arduino 的D8引脚连接,当桶在关闭后会输入一个信号给继电器,及时通知继电器此时应该进行驱动反应,对刚放入桶内的物品实施消毒液喷洒,做到及时灭菌[7-9].
图2 水泵工作原理
2.6 蜂鸣器模块
本次设计采用有源蜂鸣器,把输入口放到了-10号口上;电压接到5 V上,GND接地.感知到压力传感器的重量达到一定值时,蜂鸣器会接收信号,从而进行报警.
3 软件设计
软件程序的编写采用C语言,工作流程如图3所示.大致为:当程序开始工作时,首先系统会自动进行定时器和各连接引脚的初始化工作[8].通过压力传感器会实时反馈及显示当下垃圾桶内所含物品重量,检测垃圾桶中重量是否满溢,此时若垃圾桶内并未达到满溢状态,系统将会自动默认可继续使用不作出反应;当检测到前方有障碍物时,桶盖则会自动打开,当投放完毕垃圾桶自动关闭时,桶内会自动喷洒消毒液进行灭菌,如果检测垃圾桶已经满溢,则会通过警示告诉工作人员处理垃圾.
图3 主程序流程图
3.1 超声波测距子程序设计
程序首先进行初始化,传感器的相应引脚输出为低电平信号.模块自动向前方发送 8 个 40 kHz的方波.此时当检测到返回信号,接收口ECHO所对应的IO口可将接收到的信号输入到主控芯片,此次设计的有效信号距离值为30 cm.若超声波测距传感器检测到30 cm内有障碍物,接收口ECHO会接收到信号进行自动开启桶盖,并当障碍物离开之后,维持3 s进行关闭.超声波测距子程序如图4所示.
3.2 水泵感应子程序设计
系统进行初始化后开始检测垃圾桶是否开启,若垃圾桶未开启,则水泵不工作[10].若垃圾桶开启,则在开启之后等待其闭盖,在闭盖之后,继电器驱动水泵进行3 s的喷洒作业,则可以达到相应的消毒作业,水泵模块子程序流程如图5所示.
图5 水泵子程序流程图
4 系统测试数据
本次实验测试的数据通过Arduino的串口监视器及串口绘图器可以实时监测数据,进行外部障碍物距离的监测及桶内重量变化的监测,图6是在垃圾桶有外部障碍物靠近情况下距离值变化的实时监测图.
从图6中可以观察到距离值是在15 cm左右逐渐减少到5 cm距离值附近波动,此时超声波引脚Trig向外发送脉冲信号,引脚ECHO进行信号的接收,监测到前方障碍物在向垃圾桶靠近距离值的实时变化.
图6 实时监测距离值变化图
为了保证实验的客观性,再次利用了Arduino串口绘图器进行桶内质量变化的监测.图7是在软件串口绘图器的实时监测情况下,压力传感器对桶内质量变化的显示图,可以清晰观察此时垃圾桶内重量情况.图中显示从无重量到压力传感器模块监测到实时重量的变化过程.
图7 监测重量值变化图
从图7中可观察到此重量从0 g变化到232 g左右,这一过程变化数据实时反馈.我们可以通过串口进行实时监视,此监视器方便高效.此次系统数据的采集均通过串口监视器以及串口绘图器完成,经过反复多次实验,此端口监测数据及时且高效,是值得信赖的数据采集串口.
5 结语
本次设计以Arduino为主控核心,采用LCD1602液晶显示实时重量、HC-SR04超声波模块进行测距、SG90舵机进行垃圾桶盖的开启、HT711压力传感器进行重量采集、水泵进行消毒液体喷洒以及蜂鸣器进行重量超额报警.此外硬件仿真采用了AltiumDesigner以及C语言程序设计.进行了实物制作,并且进行自动开盖、喷洒消毒液、报警、显示重量的实验,均有效完成.实验结果表明该智能垃圾桶应用性较强,具有良好的前景.