参考:基于Wemos D1的感应开盖垃圾桶(增加自己的代码实现部分)
作者:LEO-max
发布时间:2020-12-29 15:21:26
网址:https://blog.csdn.net/zouchengzhi1021/article/details/111880104?spm=1001.2014.3001.5502
目录
- 硬件平台介绍 WeMos D1
- 特性
- Arduino开发环境
- 超声波模块介绍
- 响应测距核心代码
- 自己实现感应开盖功能的代码
- 关于距离中除以58的说明
- SG90舵机
- 接线
- 成品如下
硬件平台介绍 WeMos D1
特性
- 基于ESP-8266EX
- Arduino兼容,使用arduino IDE来编程
- 11 * I/O 引脚
- 1 * ADC引脚(输入范围0-3.3V)
- 板载5V 1A开关电源(高输入电压24V)
- 和STM32模块开发类似,集成度高
- 更经济便宜
软件环境介绍
Arduino开发环境
优点:
- 集成很多开发库如串口,网络,sg90等各种硬件开发接口,迅捷开发
- 自带串口调试工具
- 程序编译速度慢
超声波模块介绍
超声波传感器模块上面通常有两个超声波元件器,一个用于发射,一个用于接受。电路板上有4个引脚:VCC(正极)、Trig(触发)、Echo(回应)、GND(接地)
主要参数:
- 工作电压与电流:5V、15mA
- 感测距离:2~400cm
- 感测角度:不大于15°
- 被测物体的面积不要小于50cm²并且尽量平整
- 具备温度补偿电路
在超声波模块的出发脚位输入10微秒以上的高电位,即可发射超声波。发射超声波之后,与接收到传回的超声波之前,“响应”脚位呈现高电位,因此,程序可从“响应”脚位的高电位脉冲持续时间,换算出被测物的距离。
超声波模块原理:
响应测距核心代码
const byte trigPin = 10;
const int echoPin = 9;
unsigned long d;
unsigned long ping(){digitalWrite(trigPIN, HIGH);delayMicroseconds(10); //发送一个10us脉冲digitalWrite(trigPin, LOW);return pulseIn(echoPin, HIGH); //波传过程echo高点品,计算高电平时间就获取波传输时间,单位是us}void setup(){pinMode(trigPin, OUTPUT)pinMode(echoPin, INPUT);Serial.begin(115200);
}void loop(){d = ping()/58;Serial.print(d);Serial.print("cm");Serial.printn();delay(1000);
}
自己实现感应开盖功能的代码
#include <Servo.h>#define DuoPIN D5
#define Echo D2
#define Trig D8Servo myDuoji;
long getTime(){digitalWrite(Trig, HIGH);delayMicroseconds(10);digitalWrite(Trig, LOW);return pulseIn(Echo, HIGH);}void initChaoShengBo()
{pinMode(Echo,INPUT);pinMode(Trig,OUTPUT);}void setup() {initChaoShengBo();myDuoji.attach(DuoPIN);}void loop() {// put your main code here, to run repeatedly:long dis;dis = (getTime())/58;if(dis < 10){myDuoji.write(90);delay(2000);}else{myDuoji.write(180); }}
关于距离中除以58的说明
声音在干燥、20℃的空气中的传播速度大约为343m/s,即34300cm/s,换算单位,34300 / 1,000,000cm/us。即为0.0343cm/us,再换一个角度,1/0.0343cm/us,即29.15us/cm,这就意味这,291.5us表示10cm的距离,1cm就是29.15us, 但是从发送到接受,声音走过2倍的距离。所以实际距离就是1cm对应58.3us。实际整个测距过程是测的发出声波到收到回波的时间,程序里的时间是us,换成距离cm,要除以58(58.3)
SG90舵机
型号:SG90 重量13克 角度90°~270°
红色线为电压 棕色线为地线 橙色线为信号线
尺寸:21.5mm11.8mm22.7mm
重量:9克
五负载速度:0.12s/60° (4.8V)
堵转扭矩:1.2-1.4公斤/厘米(4.8V)
使用温度:-30℃~60℃
死区设定:7us
工作电压:4.8V-6V
接线
超声波测距模块
1.VCC接Wemos板的5V口
2.Trig接Wemos板的D8
3.Echo接Wemos板的D2
4.Gnd接Wemos板的GND
- 1
- 2
- 3
- 4
SG90舵机
1.橙色线接Wemos板的D5
2.红色线接Wemos板的3.3V
3.灰色线接Wemos板的另一个GND
- 1
- 2
- 3