物联网-wemos D1 Mini (esp8266)实验四 -- 实验二中的丢失寻找器改进为手机控制水泵

 材料:

             D1 Mini              1只                             11.5元

             2N2222 TO-92  1只                              2.89元/包(50只/包)

             静音潜水微型水泵 3v-5v  100-200mA  1.7元

              按压式接线端子 1只                             8.8元/包(100只/包)

              杜邦线若干

合计: 约13.5元

接线图

操作: 

1 连接硬件电路

2 烧写代码

3 手机连接D1 Mini的WiFi (本例中WiFi名为“AA”,无密码,你可以根据自己的喜好在下图位置进行更改)

完整源代码 

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

//HTML主页mainPage
static const char mainPage[] PROGMEM = u8R"(
  <!DOCTYPE html>
  <html>
  <head>
      <title>ESP8266</title>
      <meta name='viewport' content='width=device-width, initial-scale=1.0'>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <a href='call?buzzer=ON'>打开水泵</a> 
    <br><br>
    <a href='call?buzzer=OFF'>关闭水泵</a> 
    <p>水泵控制测试测试</p>
  </body>
  </html>
)";
//错误路径HTML
static const char errorPage[] PROGMEM= u8R"(
)";
//设置路径HTML  
static const char settingPage[] PROGMEM= u8R"(
)";


String buzzerState = u8"OFF";//蜂鸣器状态 
ESP8266WebServer _esp8266WebServer(80);//定义esp82666WebServer实例

void handleRoot() {//网页根目录处理函数
  _esp8266WebServer.send(200, "text/html", mainPage);//"text/html":以html的格式输出
}

void handleNotFound() {//网络路径不存在处理函数
  _esp8266WebServer.send(404, "text/html", errorPage);//"text/plain":原样无格式输出
}

void handleSetting() {//网页设置处理函数
  _esp8266WebServer.send(200, "text/html", settingPage);
}

void buzzerStateHandel() {
  if (_esp8266WebServer.hasArg(u8"buzzer")) {
    buzzerState = _esp8266WebServer.arg(u8"buzzer");
    if (buzzerState == u8"ON") {
      pinMode(D1, OUTPUT);
      digitalWrite(D1, HIGH);
    } else if (buzzerState == u8"OFF") {
      pinMode(D1, OUTPUT);
      digitalWrite(D1, LOW);
    }
    _esp8266WebServer.send(200, u8"text/plain", String(u8"OK"));
  }
}


// setup() 启动时执行一次
void setup() {

  //服务器设置
  while (!WiFi.softAP(u8"AA", u8"", 1,false));//ap账号(AA)、密码(无)设置。
  _esp8266WebServer.on("/call", buzzerStateHandel);//含有buzzer这个变量的处理函数
  _esp8266WebServer.on("/", handleRoot);
  _esp8266WebServer.onNotFound(handleNotFound);
  _esp8266WebServer.on("/setting", handleSetting);
  _esp8266WebServer.begin();

  //蜂鸣器设置为off状态
  pinMode(D1, OUTPUT);
  digitalWrite(D1, LOW);

}

// loop() 循环执行
void loop() {
  _esp8266WebServer.handleClient();

}

 

猜你喜欢

转载自blog.csdn.net/happyjoey217/article/details/82909833