基于Wemos的感应开盖垃圾桶
一、绪论
摘 要:本文设计了一种基于wemos系统的多功能垃圾桶控制系统。该系统主要由超声波测距电路、电机驱动模块和语音报警模块等功能模块组成,以超声波传感器、SG90舵机和单片机为核心,通过超声波传感器采集时间信息得出距离,再经过转换让单片机发出指令,如果超声波传感器检测到人与垃圾箱的距离小于设定距离,则垃圾箱自动开盖。本系统具有结构简单、性能稳定、操作方便、低成本、智能化等优点,为进一步隔离人与垃圾,为防止人感染细菌找到了一个可行的解决方法。
关键词:单片机,人体感应,舵机,智能垃圾桶;
1.研究背景
随着我国人口的不断增长和人民生活水平的提高,城市生活中的垃圾也随之增长,这对城市的发展和人们的生活环境造成了很大的影响。虽然垃圾卫生填埋、垃圾发电、垃圾制沼气等技术为垃圾处理开辟了新途径,但在垃圾无害化处理之前,首要解决的问题是垃圾的分类收集和回收再利用。目前存放垃圾的垃圾桶口往往参杂着一些杂物,若雨天没有关盖,很容易污染周边环境。此外,工作人员往往需要逐个检查并清理垃圾桶,有时也为防止垃圾溢出。
为解决上述问题我们设计了一款具有人体感应识别以及自动开合盖功能的垃圾桶。垃圾桶可通过对人体的识别,实现垃圾盖的自动开启和关闭,可以有效地抑制异味的散发以及病菌的传播。该垃圾桶的盖子自动打开后,人们放入垃圾,当人离开时,垃圾桶的盖子自动关闭,避免人们与垃圾桶盖,桶口直接接触,同时提供了方便,体现了人性化的设计。
2.研究意义
目前随着人们环保意识的普遍提高,垃圾桶也成为了我们生活制造中不可或缺的东西,同时人们对垃圾桶的要求也越来越高,因此人们便想到设计一种智能垃圾桶,方便我们的生活。
所谓的智能开盖垃圾桶就是通过感应装置,在人们去倒垃圾接近垃圾桶的时候,垃圾桶会自动打开,人们倒完垃圾离开之后他就会自动关闭,人们无需接触垃圾桶的任何部位即可投进垃圾,而且无需外接电源,使用普通电池,耗电低,使用寿命长;智能垃圾桶的密封性能好,减少了生活中各种病菌交叉感染的机率,无垃圾异味溢出,确保四周空气清新。对生活品质的追求,对健康生活方式的追求,对环保创意家居的追求……更时尚、更方便、更卫生、更快捷,从根本解决清洁需求。这即是对环境的保护也是对我们自己的保护。环保是一个永恒的话题,需要我们做的地方还有很多,通过生活中的这些小细节、小转变,能把节能环保理念深入人心,整个社会周而复始、生生不息的发展,这也许就是智能垃圾桶的意义。
二、系统总体设计方案
1.设计思路
本设计可以实现当有人靠近扔垃圾时,垃圾桶的盖子会自动打开,当人离开时,盖子又会自动缓慢关闭的功能。
电路总体上分为单片机、超声波传感器、舵机驱动电路和电源电路组成。以Wemos单片机作为核心控制,通过距离检测,实现驱动电机的控制,从而达到垃圾桶的智能开盖和关盖。
本设计目的是便于垃圾桶智能控制,使用户投放垃圾时更为方便,整个电路可分为:人体感应模块(接受到人来信号),主控模块(由Wemos D1芯片和电路板线路组成接受人体感应发出的信号,并发出相应的命令),舵机驱动模块(通过向舵机发送不同宽度的脉冲信号从而达到控制开盖的效果)。
2.硬件平台功能介绍
2.1、WeMosD1wifi开发板
此开发板 板载无线网卡,支持AP(路由),sta(上网设备)模式。
特性
- 基于ESP-8266EX
- Arduino兼容,使用rduino IDE来编程
- 11 x I/O 引脚
- 1 x ADC 引脚(输入范围0-3.3V)(光照采集,模拟量->数字量)
- 支持OTA无线上传
- 板载5V 1A开关电源(高输入电压24V)
- 有两种供电方式
需要注意的一点是:WeMosD1上数字引脚的一侧引脚数量远大于11个,这是因为该板上D3与D15、D4与D14、D5与D13、D6与D12、D7与D11、D9与板载LED它们两两之间是互通的。上面引脚用于控制,下面引脚用于模块供电。
2.2、有源蜂鸣器模块(低电平触发)
模块说明: - 模块采用s8550三极管驱动
- 工作电压为3.3-5v
- 设有固定螺栓孔,方便安装
- 当I/O口输入低电平时,蜂鸣器发声
接口说明: - VCC外接3.3V-5V电压(可以直接与5V单片机和3.3V单片机相连)
- GND外接GND
- I/O外接单片机IO口
模块功能: - 有源蜂鸣器内部内部带震荡,所以只要一通电就会叫
- 程序控制方便,单片机一个高低电平就可以让其发出声音,而无源蜂鸣器却做不到。
2.3、SG90舵机
模块说明:
- 型号:SG90 重量:13克 角度:90~180度通用
- 红色电压,棕色地线,橙色信号线
- 尺寸:21.5mmX11.8mmX22.7mm
- 重量:9克
- 无负载速度:0.12秒/60度(4.8V)
- 堵转扭矩: 1.2-1.4公斤/厘米(4.8V)
- 使用温度:-30~+60摄氏度
- 死区设定:7微秒
- 工作电压:4.8V-6V
SG90舵机接线图
2.4、HC-SR04超声波模块
超声波是振动频率高于20kHz的机械波。它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播等特点。
超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。电路板上有4个引脚:VCC(正极)、Trig(触发)、Echo(回应)、GND(接地)
模块参数:
- 产品名称:HC-SR04超声波模块
- 使用电压:DC5V
- 静态电流:小于2mA
- 电平输出:低0V
- 感应角度:不大于15度
- 探测距离:2CM-450CM
- 高精度:可达3MM
工作原理: - 采用(IO触发测距,给至少10us的高电平信号)
- 模块自动发送8个40khz的方波,自动检测是否有信号返回
- 有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离(高电平时间*声速(340m/s)12)
3.软件开发环境
ArduiNoIDE
- 集成很多开发库如串口,网络,sg90等
- 各种硬件开发接口,迅捷开发
- 自带串口调试工具
开发环境支持wemos
配置:菜单栏-工具-选择WeMos D1
检查端口:菜单栏-工具-端口
最终检查:菜单栏-工具-如图
界面详情:
上电后不断执行loop函数中的代码,我们核心控制代码写入loop
setup函数只调用一次,一般用于硬件相关的初始化,比如IO口,串口,wifi等
void setup() {
}
void loop() {
}
三.设计思路实现步骤
1.Wemos的IO口研究驱动蜂鸣器
目的:
环境配置成支持wemos的,用蜂鸣器调试是否能正常编译
硬件设备:有源蜂鸣器模块,Wemos D1
接口情况:
- VCC-Wemos3.3V
- GND-WemosGND
- I/O-WemosD5
接线如图:
让蜂鸣器响:
1.D5配置成输出端口
2.D5输出低电平
蜂鸣器不响:
1.D5配置成输出端口
2.D5输出高电平
结果:环境和硬件正常
2.Wemos串口通信
目的:
调试单片机与电脑之间能否正常通信
硬件设备:Wemos D1
相关函数:
*Serial.begin()
描述:开启串⼝,通常置于setup函数中
原型:
Serial.begin(speed);
Serial.begin(speed,config);
参数:
speed:波特率,通常为9600,115200等
config:设置数据位、校验位和停⽌位。默认SERIAL_8N1表⽰8个数据位,无校验位,1个停⽌位。
返回值:⽆
*Serial.println()
描述:串⼝输出数据并换⾏
原型:
Serial.println(val);
Serial.println(val,format);
参数:
val:打印的值,任意数据类型
format:输出数据格式
返回值:返回写⼊的字节数
*Serial.available()
描述:判断串⼝缓冲区的状态,返回串⼝缓冲区读取的字节数
原型:Serial.available()
参数:⽆
返回值:可读取的字节数
*Serial.read()
描述:读取串⼝数据,⼀次读⼀个字符,读完后删除已读数据
原型:Serial.read()
参数:⽆
返回值:返回串⼝缓存区第⼀个可读字节,当没有可读数据时返回-1,整数类型
结果如图:
获取到串口输入不为7
获取到串口输入为7
结果:单片机与电脑之间能正常通信
3.通过串口控制蜂鸣器响与不响
目的:
单片机与电脑之间正常通信是否可发送接收命令
硬件设备:有源蜂鸣器模块,Wemos D1
结果如图:
串口接收7 蜂鸣器响
结果:单片机与电脑之间正常通信且可发送接收命令
4.Wemos串口控制SG90电机调试开关盖效果
目的:
单片机通过串口控制电机,进行扭转角度调试
硬件设备:
SG90电机,Wemos D1
函数说明:
接口情况:
红色电压–3.3V,棕色地线–GND,橙色信号线–D5
结果得出:
90度开盖,180度关盖,最为合适
5.组装
如图:
6.调试超声波测距
目的:
调试超声波模块,得出物体离垃圾桶的距离,并通过串口在电脑显示
硬件设备:
HC-SR04超声波模块,Wemos D1
实现原理:
超声波发送一个波,遇到障碍物反弹,根据波在空气中运行的时间,从而得出距离。超声波左边T可以发送,超声波右边R用于接收。
工作:首先给Trig(触发)发送一个10微秒的TTL(高电平),就可以发波了,波为8个40KHz的脉冲,Echo(回应)为高电平,看高电平持续的时间算出距离。
- 给触发脚一个启动信号,本次项目是高电平
- 测量反馈脚高电平的持续时间。
接口情况:
VCC(正极)–5V
Trig(触发)–D8
Echo(回应)–D2
GND(接地)–GND
计算距离:
声音在干燥、摄氏20度的空气中的传播速度大约为343米/秒,合34,300厘米/秒,即为:0.0343厘米/微秒,再换一个角度,即:29.15微秒/厘米。这就意味着,每29.15微秒表示1CM的距离。但是实际上整个测距过程是测的发出声波到收到回波的时间,声音走过的是2倍的距离。所以实际距离就是1厘米,对应58.3微秒。,程序里的第一个distance实际上是时间us。换成距离cm,要除以58.3。所以程序中要用pulseln(EcoPin, HIGH) / 58.3获取测得的距离。
"pulseIn"函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或LOW。如果是HIGH,函数将先等引脚变为高电平,然后开始计时,一直到变为低电平为止。返回脉冲持续的时间长短, 单位为ms。如果超时还没有读到的话, 将返回0.
结果如图:
四、项目综合及效果验证
实现功能:
超声波检测距离,当物体靠近,距离小于10 cm时,则发送信号给wemos,从而使电机运转,实现垃圾桶开关盖,停留2.5秒后,若无物体靠近,则缓慢关盖。
硬件设备:HC-SR04超声波模块,SG90电机,Wemos D1
如图:
物体靠近垃圾桶开盖
物体远离垃圾桶关盖
结果:达到功能需求
五、总结
本次课题通过多次实验实践,将智能垃圾箱各个模块调试完善,分析传统垃圾箱和现有智能垃圾箱的发展,结合当今科技跨越式发展,微型计算机技术、各种传感技术在日常生活生产中的广泛应用,为了迎合社会全面智能化,信息化趋势,学习、研究出了可移动智能垃圾箱。
之后可通过将各种传感器或语音等功能应用在垃圾箱上,并让垃圾箱变的更加智能,打破了人们对传统垃圾箱的理解,使人们在生活中随处可见的垃圾箱变得更加人性化。垃圾箱上的显示和语音提示可以增添人们对垃圾箱和扔垃圾的兴趣,提高人民对环境保护意识,增强生态危机感,为人类高效、可持续稳定发展做出一定贡献。
代码
#define Echo D2
#define Trig D8
#include <Servo.h>
#define DuoPIN D5
Servo myDuoJi;
long getTime(){
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
return pulseIn(Echo,HIGH); //超声波在空气中传播的时间
}
void iniyChaoShengBo(){
pinMode(Echo,INPUT);
pinMode(Trig,OUTPUT);
}
void setup() {
iniyChaoShengBo();
myDuoJi.attach(DuoPIN);
Serial.begin(115200);
}
void loop() {
long dis;
dis=getTime()/58;
Serial.print(dis);
Serial.println("cm");
if(dis < 10){
myDuoJi.write(0);
delay(2000);
}
else{
myDuoJi.write(80);
}
delay(300);
}