基于Wemos D1开发板的智能垃圾桶
师承上官可编程陈立臣
前言
本文介绍了基于Wemos D1开发板的智能垃圾桶小项目,通过超声波测量距离结合舵机,实现到达特定距离使垃圾桶开盖的目的,后期增加了蜂鸣器芯片,在开盖的同时发出声音。
一、软件、硬件说明
软件平台为Arduino,
硬件包括Wemos D1开发板、HC-SR04超声波测距模块、SG90舵机、蜂鸣器(低电平触发)
1、Arduino
集成很多开发库如串口,网络,SG90等各种硬件开发接口
2、Wemos D1开发板
基于ESP-8266EX,使用Arduino编程,具有WiFi模块
3、HC-SR04超声波测距模块
具有4个引脚:VCC(正极)接5V、Trig(触发)、Echo(回应)、GND(接地);
具有两个超声波元器件分别用于发射和接收;
测量距离为2~400cm
4、SG90舵机
具有三条线:红色(正极)接3.3V、橙色(信号线)、棕色(接地)
5、蜂鸣器(低电平触发)
具有3个引脚:VCC(正极)接3.3V、I/O(信号)、GND(接地);
二、具体代码
1.Arduino基本函数
setup函数只调用一次,一般用于硬件相关的初始化,比如IO口,串口,wifi等
loop函数中的代码上电后被不断执行,存放核心控制代码
void setup() {
}
void loop() {
}
2.蜂鸣器
2.1 调用函数
pinMode(引脚, INPUT/OUTPUT); //设置引脚为输入/输出引脚
digitalWrite(引脚, LOW/HIGH);//设置引脚的输出电压为低电平或高电平
delay(1000); //将程序暂停一段时间(以毫秒为单位)
2.2 实例
#define BEEP D5 //定义引脚D5为BEEP(便于后期引脚更换时代码的修改)
void setup() {
pinMode(BEEP, OUTPUT); //设置引脚为输出引脚
}
void loop() {
digitalWrite(BEEP, HIGH); //输出高电平,蜂鸣器不响
delay(1000); //程序暂停一秒
digitalWrite(BEEP, LOW); //输出低电平,蜂鸣器响
delay(1000); //程序暂停一秒(延时期间,蜂鸣器控制引脚仍属于低电平)
}
3.Wemos串口通信
3.1 调用函数
Serial.begin(speed);//开启串口,speed为波特率(一般为9600/115200)
Serial.print(); //串口输出数据不换行
Serial.println(); //串口输出数据并换行
Serial.available(); //判断串口缓冲区是否有数据
Serial.read(); //读取串口缓冲区数据,一次读取一个字符
3.2 实例
void setup() {
Serial.begin(115200); //开启串口,波特率设置为115200
}
void loop() {
int cmd;
if(Serial.available()>0){
//判断串口缓冲区是否有数据
cmd=Serial.read(); //读取串口缓冲区数据
if(cmd == 5){
//读取数据为5时,串口输出"input 5"并换行
Serial.println("input 5");
}else{
//读取数据为其他时,串口输出"input other"并换行
Serial.println