基于WemosD1的智能垃圾桶

1.项目成果展示

2.项目要求

(1).会简单C语言,  了解servo库,  了解SG90舵机 ,知道超声波模块检测距离方法 

(2).自己做一个垃圾桶或者买一个 小型垃圾桶

(3).了解WemosD1芯片 

3.开发环境

arduion-1.6.5

4.SG90舵机

(1).SG90舵机简介

型号SG90          重量13克               角度  90-180通用
三线对应端口红色 :正极         棕色:GND      橙色:信号线
无负载速度0.12秒 /60度(4.8V)
堵转扭矩1.2~1.4公斤/厘米(4.8V)
使用温度-30~+60摄氏度
死区设定7微秒
工作电压4.8V~6V(3.3V也能用)

(2).servo 函数的用法

attach连接舵机(自带库仅9/10脚有效)
write角度控制
writeMircroseconds()更精确的角度控制(微秒级)
read()读上一次舵机转动角度
attach()检查舵机是否连接在控制板上
detach()断开舵机连接,使接口(9/10)脚可做PWM输出

(3).舵机核心代码(仅供参考)

#define PIN_SERVO D5
Servo myservo;
myservo.attach(PIN_SERVO);
myservo.write(30);

5.超声波模块

(1).模块简介

两个圆圈作用一个用于发射,一个用于接收
4个引脚VCC(正极)  Trig(触发)    Echo(响应)  GND(接地)
工作电压电流5V、15mA
感应距离2~400cm
感测角度不大于15度
测试面积不小于50平方厘米

(2).超声波时序图(自己画的有点丑,还少画了一个脉冲)

 (3).响应测距Demo代码


#define Echo D2 //echo(回应)
#define Trig D8 //Trig(触发)
long getTime(){
  digitalWrite(Trig,HIGH);
  delayMicroseconds(10);//发送一个10微秒(us)的脉冲
  digitalWrite(Trig,LOW);
  return pulseIn(Echo,HIGH);
  }
void inintChaoShengBo(){
      pinMode(Echo,INPUT);
      pinMode(Trig,OUTPUT);
  }
void setup() {
    inintChaoShengBo();//超声波模块初始化(引脚初始化)
    Serial.begin(115200);
}
void loop() {
      //获取距离
      long dis;
      dis=getTime()/58;//为什么要除以58?
      Serial.print(dis);//这个是不换行
      Serial.println("cm");//这个输出是换行
      delay(500);
}

6.为什么要除以58?

声音在空气中的传播速度为343m/s,换算成34300cm/m,换算成微秒等于,0.0343cm/us;我们再换一个角度,使其除以1,等于29.15us/cm。

这就意味着每291.5微秒表示10厘米的距离。也就是说每1厘米就是29,15微秒,然后根据超声波发射与返回的原理,也就是发出到接受声波,声音经过的是2倍的距离。

所以实际距离就是1厘米,对应58.3微秒。

但在玩单片机的过程中一般直接除以58,当然为了更加精确,可以除以58.3

7.项目总结

(1).项目完整代码

#include <Servo.h>
#define sg90_PIN D6//定义舵机名
#define Echo D2 //echo(回应)
#define Trig D8 //Trig(触发)
#define BEEP D5
Servo myDuoJi;//定义一个类,可以看做一个结构体
long getTime(){
  digitalWrite(Trig,HIGH);
  delayMicroseconds(10);//发送一个10微秒(us)的脉冲
  digitalWrite(Trig,LOW);
  return pulseIn(Echo,HIGH);
  }
void inintChaoShengBo(){
      pinMode(Echo,INPUT);
      pinMode(Trig,OUTPUT);
  }
void setup() {
  // put your setup code here, to run once:
    inintChaoShengBo();//超声波模块初始化(引脚初始化)
    myDuoJi.attach(sg90_PIN);//完成一个舵机连接
    pinMode(BEEP,OUTPUT);
    digitalWrite(BEEP,HIGH);
    Serial.begin(115200);
}
void loop() {
  // put your main code here, to run repeatedly:
      //获取距离
      long dis;
      dis=getTime()/58;//为什么要除以58
      Serial.print(dis);//这个是不换行
      Serial.println("cm");//这个输出是换行
       if(dis<10){
        myDuoJi.write(0);//控制舵机0度,开盖
        digitalWrite(BEEP,LOW);
        }
       else{
        myDuoJi.write(180);//舵机旋转180度,闭合
        digitalWrite(BEEP,HIGH);
        }
         delay(500);
}

(2)该项目发展

其实还可以加几个模块,比如ESP8266,语音模块,可以写个手机APP控制,后面有时间更新语音控制及手机APP控制。

 

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Wemos D1是一款基于ESP8266芯片的开发板,可用于物联网项目,而阿里云则是中国领先的云计算平台之一。Wemos D1与阿里云的结合可以实现物联网设备与云端的连接与交互。 Wemos D1开发板搭载了ESP8266芯片,具备Wi-Fi功能,同时还包含多个数字和模拟的I/O引脚,用于连接其他传感器和执行器。借助Wemos D1的硬件平台和丰富的软件库,我们可以轻松地开发物联网设备,如智能家居、智能农业等。 而阿里云则为这些物联网设备提供了强大的云服务支持。我们可以通过Wemos D1与阿里云建立起稳定的Wi-Fi连接,并通过阿里云的平台将设备数据上传到云端。同时,我们还可以通过阿里云提供的API和工具,实现设备状态监测、数据存储、远程控制等功能。 Wemos D1与阿里云的结合可以为物联网应用带来多种好处。首先,我们可以使用阿里云的丰富资源和服务,快速开发出具有稳定性和安全性的物联网应用。其次,我们可以通过阿里云的大数据分析和机器学习能力,对设备数据进行深入挖掘和分析,从而实现数据驱动的智能决策和优化。最后,阿里云的全球部署和高可用性架构,可以让我们的物联网应用在全球范围内实现云端服务的高可用和低延迟。 综上所述,Wemos D1和阿里云的结合可以为物联网应用提供强大的硬件平台和云服务支持,帮助我们开发出更加智能和可靠的物联网解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值