需求:可以通过实体开关驱动舵机开门,也可以通过网页驱动舵机开门,开门后播放欢迎语音。
视频演示:【esp8266驱动舵机开门语音播报】 esp8266驱动舵机开门语音播报_哔哩哔哩_bilibili
硬件:
ESP8266:ch340、WeMosD1(二选一);舵机:sg90、MG996R(二选一,一定要买180度的)、杜邦线若干、MP3模块:dfplayer mini mp3(可选);智能插座(可选);数据线(不是充电线,必须是数据线可以传输数据使用的);tf卡:32g以内;读卡器;
软件:
Arduino IDE
价格:
WeMosD1 : 11.5。
ch340 : 8.9。
12V DC电源 : 价格未知,我从路由器拆下来的,5V的typec或micro也可以,看你买的接口是什么样的,供电可能会不稳定。如果你买的是ch340这个电源可以忽略。
一双一次性筷子(这个看情况,有需要的可以点外卖多要一双)。
sg90 : 4块左右。
MG996R : 11.3。
杜邦线 : 母对母,母对公,公对公可以都来点,价格每种2-5块不等,如果有钳子可以只买母对母和公对公的。
dfplayer mini mp3 : 4-6块左右吧。
智能插座 : 价格各种各样都有,不用这个也可以用这个会更保险。
数据线 : 自备。
tf卡:自备。
读卡器:自备。
补充说明:
WeMosD1与ch340区别:WeMosD1有5v输出,ch340只有3.3v输出。3.3v可能无法驱动mg996r舵机(如果你会额外供电和共地的话,买哪个都无所谓。如果你不会又买了mg996r,那我建议买WeMosD1)。如果你只使用sg90舵机,那ch340足够了。
接线图:
按钮+配网+路由器局域网+MP3(代码):
https://www.123865.com/s/awacjv-Y1oBh?提取码:lu0R
引脚使用:
D0为RX,D1为TX,设置端口号为80,设置按钮开关D8,设置舵机使用D5。
代码:
#include <Servo.h>
#include <Arduino.h>
#include "ESP8266WiFi.h"
#include "ESP8266WebServer.h"
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
#include <WiFiManager.h>
WiFiManager wifiManager; // 初始化WiFiManager对象
Servo myservo;
SoftwareSerial mySerial(D0, D1); // RX, TX。与mp3有关
ESP8266WebServer server(80);//设置端口号
const int switchPin1 = D8; // 定义外置开关的一个引脚,可以通过外置开关控制舵机
bool switchState = false; // 用于存储开关状态
// HTML网页配置
void handleRoot() {
String html = "<!DOCTYPE html>\n"
"<html lang=\"en\">\n"
"<head>\n"
"<meta charset=\"UTF-8\">\n"
"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"
"<style>\n"
"body, html {\n"
" height: 100%;\n"
" margin: 0;\n"
" display: flex;\n"
" justify-content: center;\n"
" align-items: center;\n"