基于Wemos的智能感应开盖垃圾桶

前言

记录嵌入式学习的第一个小项目吧,基于Wemos的智能感应开盖垃圾桶(上官可编程)。项目超声波传感器安置在垃圾桶上,用来检测前方人体的距离。当人体离垃圾桶的距离小于某个值时,舵机开始工作完成垃圾桶的开合。虽然很简单,但是我觉得还是很有必要做一些总结和思考的。

  • 注:项目基于Wemos开发板、Arduino IDE。

硬件部分

硬件介绍:

塑料垃圾桶、超声波传感器、Wemos开发板、舵机以及杜邦线若干当然还有个充电宝。项目整体图

在这里插入图片描述
硬件接线图:
在这里插入图片描述

软件部分

一、舵机控制

利用servo类函数
在这里插入图片描述
串口控制舵机测试:

#include <Servo.h>
#define Duo D5 //把引脚D5命名为DUO

Servo myDuoJi;//把Servo类函数命名为myDuoJi

void setup() {
  myDuoJi.attach(Duo); //调用attach函数,连接舵机,即连接引脚DUOPIN
  Serial.begin(115200);//设置波特率
}

void loop() {

      int cmd;
      if (Serial.available()>0)
      {
            cmd = Serial.read();
            Serial.println(cmd);
            if(cmd==53)
            { 
                  myDuoJi.write(45);//控制舵机转到45°位置
                  delay(1000);
                  myDuoJi.write(140);//控制舵机转到140°位置
                  delay(1000);
            }
     }

}

二、超声波控制

超声波测距原理:
Trig端给予高电位触发超声波的发射,Echo端对超声波的反射进行接收。通过发射和接收的时间差来计算前方物体的距离。
在这里插入图片描述

超声波测距测试:

#define Echo D2 //把引脚D2命名为Echo
#define Trig D8  //把引脚D8命名为Trig

long getTime()
{
  digitalWrite(Trig,HIGH);
  delayMicroseconds(10);
  digitalWrite(Trig,LOW);
  
  return pulseIn(Echo,HIGH); //pilseIn是已经封装好的函数返回信号发出与接受的时间
  }

void initChaoShengBo() //初始化超声波引脚
{
   pinMode(Echo,INPUT);
   pinMode(Trig,OUTPUT);
  }

void setup() {
  initChaoShengBo();
  Serial.begin(115200); //串口波特率设置
}

void loop() {
  long dis;
  dis=getTime()/58;
  Serial.print(dis);
  Serial.println("cm");
  delay(500);

}

在这里插入图片描述

三、项目整体代码

#include <Servo.h>
#define Duo D5
#define Echo D2
#define Trig D8
Servo 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(Duo);
  Serial.begin(115200);
}

void loop() {
      myDuoJi.write(45);
      long dis;
      dis=getTime()/58;
      Serial.print(dis);
      Serial.println("cm");
      delay(300);
      
      if(dis < 10)
            { 
                  myDuoJi.write(45);
                  delay(1000);
                  myDuoJi.write(140);
                  delay(1000);
            }
  }

思考

  1. 利用串口助手对单个传感器进行测试实验。
  2. 实际项目中需要注意代码的封装思想,模块化功能。

☀ 记录自己学习的同时,也希望能对大家有所帮助,欢迎留言交流!


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值