项目需求

室内环境(温度、湿度、污染物等)是人类生存的自然环境的重要组成部分,也是人类生存、发展的基本物质基础。随着科学技术、生产条件、生活水平的改善和提高,建筑结构的封闭化室内办公人员的增加,室内空气品质的研究吸引了越来越多人的关注。人的一生有三分之二的时间在室内度过的。
而生活中的控制远远不能满足我们的日常需求,尤其是对于像咖啡厅这样大型的室内环境,手动控制更是远远不能满足。而这时网页控制就凸显出来其重要地位。

前期准备


  • Arduino IDE
  • ESP32开发板
  • 电机
  • LED灯
  • 激光

具体设计
设计步骤


  • 定义热点名和密码
  • 设置IP地址(也可以默认)
  • 设置模式
  • 串口初始化
  • GPIO初始化
    pinMode(LED,OUTPUT)
    digitalWrite(LED,LOW)
  • 打开WiFi
  • 连接热点
  • 打开服务器
  • 打印IP地址
  • 检查是否有客户端连接
  • 等待客户端发送数据
  • 读取请求
  • 根据请求执行相应命令

程序
#include <WiFi.h>
  • #include <WiFiClient.h>
  • #include <WiFiAP.h>
  • // 设置wifi与密码
  • const char *ssid = "bahuyang";
  • const char *password = "";
  • WiFiServer server(80);
  • void setup() {
  •   pinMode(LED_BUILTIN, OUTPUT);//将LED引脚设置为输出模式
  •   pinMode(D7, OUTPUT);
  •   pinMode(D6, OUTPUT);
  •   Serial.begin(115200);
  •   Serial.println();
  •   Serial.println("Configuring access point...");
  •   // 配置wifi以及获取IP地址.
  •   WiFi.softAP(ssid, password);
  •   IPAddress myIP = WiFi.softAPIP();
  •   Serial.print("AP IP address: ");
  •   Serial.println(myIP);
  •   server.begin();
  •   Serial.println("Server started");
  • }
  • void loop() {
  •   WiFiClient client = server.available();  
  •   if (client) {                           
  •     Serial.println("New Client.");         
  •     String currentLine = "";               
  •     while (client.connected()) {            
  •       if (client.available()) {            
  •         char c = client.read();            
  •         Serial.write(c);                    
  •         if (c == '\n') {                  
  •           if (currentLine.length() == 0) {
  •             client.println("HTTP/1.1 200 OK");
  •             client.println("Content-type:text/html;charset=utf-8");
  •             client.println();
  •    
  •             client.print("<a href="/H">打开 LED</a>
  • ");
  •             client.print("<a href="/L">关闭 LED</a>
  • ");
  •             client.print("<a href="/O">打开红外警告</a>
  • ");
  •             client.print("<a href="/P">关闭红外警告</a>
  • ");
  •             client.print("<a href="/R">打开风扇</a>
  • ");
  •             client.print("<a href="/S">关闭风扇</a>
  • ");            
  •             client.println();
  •             break;
  •           } else {   
  •             currentLine = "";
  •           }
  •         } else if (c != '\r') {  
  •           currentLine += c;     
  •         }
  •         // Check to see if the client request was "GET /H" or "GET /L":
  •         if (currentLine.endsWith("GET /H")) {
  •           digitalWrite(LED_BUILTIN, HIGH);     
  •          
  •         }
  •         if (currentLine.endsWith("GET /L")) {
  •           digitalWrite(LED_BUILTIN, LOW);   
  •         }
  •        if (currentLine.endsWith("GET /O")) {
  •           digitalWrite(D7, HIGH);
  •         }
  •         if (currentLine.endsWith("GET /P")) {
  •           digitalWrite(D7, LOW);   
  •         }
  •        if (currentLine.endsWith("GET /R")) {
  •           digitalWrite(D6, HIGH);
  •         }
  •         if (currentLine.endsWith("GET /S")) {
  •           digitalWrite(D6, LOW);   
  •         }        
  •       }
  •     }
  •     client.stop();
  •     Serial.println("Client Disconnected.");
  •   }
  • }
  • 复制代码

    实现场景

    95621ab1f62a4b39a504983f24ae0a2f.jpg
    watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LeL5omI5rSL,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center.jpg
    watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LeL5omI5rSL,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center.jpg
    watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LeL5omI5rSL,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center.jpg
    watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LeL5omI5rSL,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center.jpg
    watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LeL5omI5rSL,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center.jpg
    ac89faf817a14eb7b810557ee1950fa7.jpg
    36e70175c8cc494289eedc99fbc080a0.jpg