WeMos下实现垃圾桶感应开盖、保持、合盖

   日期:2020-10-04     浏览:268    评论:0    
核心提示:提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、项目软硬件平台及开发环境二、代码实现1.相关函数2.代码整合总结前言这个项目是Wemos下的基础模块,利用超声波模块和舵机实现垃圾箱盖子的自动开合。一、项目软硬件平台及开发环境1.1、硬件平台特性1.基于ESP-8266EX2.Arduino兼容,使用rduino IDE来编程3.11 x I/O 引脚4.1 x ADC 引脚(输入范围0-3.3V)5.板载5V 1A开关电源(高输入电压24V)工作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、项目软硬件平台及开发环境
    • 1.硬件平台
    • 2.软件平台
    • 3.安装USB转串口驱动
    • 4.添加支持,使得WeMos可以在ArduiNo下连接
  • 二、驱动演示
    • 1.蜂鸣器
    • 2.Wemos串口通信
    • 3. SG90舵机
    • 4.超声波测距
    • 5.蜂鸣器
  • 三、代码实现
    • 1.相关函数
    • 2.代码整合
  • 总结

前言

通过WeMos D1开发板、SG90舵机、超声波模块、蜂鸣器,实现垃圾箱盖子的自动开合。

一、项目软硬件平台及开发环境

1.硬件平台


特性
1.基于ESP-8266EX
2.Arduino兼容,使用rduino IDE来编程
3.11 x I/O 引脚
4.1 x ADC 引脚(输入范围0-3.3V)
5.板载5V 1A开关电源(高输入电压24V)
工作中:
和stm32模块开发类似,集成度高
STM32方案也更经济便宜

2.软件平台

3.安装USB转串口驱动

4.添加支持,使得WeMos可以在ArduiNo下连接


4.1检查是否连接完成

二、驱动演示

1.蜂鸣器


//基础控制:蜂鸣器叫唤和不叫唤
void setup()
{
pinMode(D5, OUTPUT); //设置引脚为输出引脚
}

void loop()
{
digitalWrite(D5, HIGH); // 输出高电平,蜂鸣器闭嘴
delay(1000); //这一秒内都得闭嘴
digitalWrite

2.Wemos串口通信

串口有关的函数:

串口与wemos的简单通信:


串口控制蜂鸣器代码:
#define BEEP D5

void setup() {
Serial.begin(115200); //初始化串口,设置波特率为115200
pinMode(BEEP, OUTPUT); //设置引脚为输出引脚
digitalWrite(BEEP, HIGH); // 上电不让蜂鸣器响起
}

void loop()
{
int cmd;
if ( Serial.available() > 0 )
{ //检测串口是否有数据
cmd = Serial.read(); // 读取串口数据
Serial.println(cmd);
if (cmd == 1) { //如果读取的数据是1
digitalWrite(BEEP, LOW); // 蜂鸣器响起
}
else
{
digitalWrite(BEEP, HIGH); // 否则(读取数据非1)蜂鸣器不响
}
}
}

3. SG90舵机

3.1舵机参数及其调用函数


3.2舵机开盖测试
#include<Servo.h> //头文件为Servo

#define DUOPIN D5 //把引脚D5命名为DUOPIN

Servo SG90; //把Servo类函数命名为SG90,为C++代码。

void setup() {
SG90.attach(DUOPIN);//调用attach函数,连接舵机,即连接引脚DUOPIN
}

void loop() {
SG90.write(0);//控制舵机转到0°位置
delay(1000);//延时1秒
SG90.write(90);//控制舵机转到90°位置
delay(1000);
}

4.超声波测距

HC-SR04超声波识别模块介绍


超声波测距编程实现(距离小于10触发蜂鸣器发出声音):
#define Echo D2
#define Trig D8
#define BEEP D5

long getTime()
{
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);

return pulseIn(Echo,HIGH);
}

void initChaoShengBo()
{
pinMode(Echo,INPUT);
pinMode(Trig,OUTPUT);
}

void initBeep()
{
pinMode(BEEP,OUTPUT);
digitalWrite(BEEP,HIGH);
}

void setup()
{
initChaoShengBo();
initBeep();
Serial.begin(115200);
}

void loop()
{
//获取距离
long dis;
dis = getTime()/58;
Serial.print(dis);
Serial.println(“cm”);
if(dis < 10)
{
digitalWrite(BEEP,LOW);
}
else
{
digitalWrite(BEEP,HIGH);
}
delay(500);
}

5.蜂鸣器



void setup() {
pinMode(D5, OUTPUT); //配置D5为输出端口
}

void loop() {//上电后不断执行loop函数中的代码,应将核心控制代码写入loop
//HIGH,LOW经过了宏定义
digitalWrite(D5, HIGH); // 输出高电平,蜂鸣器闭嘴
delay(1000); //单位为ms,这一秒内都得闭嘴
digitalWrite(D5, LOW); //输出低电平,蜂鸣器吼起来
delay(1000); //吼一秒(延时期间,蜂鸣器控制引脚属于低电平)
}

5.1通过串口控制蜂鸣器的响与不响

void setup() {
Serial.begin(115200); //串口通信,首先设置波特率
pinMode(D5,OUTPUT); //将D5设置为输出状态
digitalWrite(D5,HIGH); //另D5输出高电平,一上电使得蜂鸣器不响
}

void loop() {

if(Serial.available()>0){ //如果串口来数据了

if(Serial.read()== 1){ //而且到来的数据是数字1
  
  Serial.println("DEE!!!"); 
  digitalWrite(D5,LOW); //D5输出低电平,让蜂鸣器响
  }
  
  else{
    Serial.println("HUSH~"); 
     digitalWrite(D5,HIGH);//D5输出低电平,让蜂鸣器不响
  }
}

}

三、代码实现

1.相关函数




2.代码整合

#include<Servo.h>
#define Trig D8
#define Echo D2
#define duoji D5
Servo myduoji;
long init_chaoshengbo()
{
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
}
long gettime()
{
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
return pulseIn(Echo, HIGH);
}
void setup()
{
init_chaoshengbo();
myduoji.attach(duoji);
pinMode(duoji, OUTPUT);
}
void loop()
{
long dis;
dis = gettime() / 58;
if (dis < 10)
{
myduoji.write(160);
}
else
{
myduoji.write(30);
}
}

总结

制作完成后可通过移动电源供电使用,当垃圾桶前部指定范围内出现物体时,桶盖自动打开,此时可以将物品放入桶内,延时一定时间后,桶盖自动关闭。若垃圾桶前部指定范围内始终有物体存在,桶盖将保持打开状态。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服