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