这是我参与8月更文挑战的第30天,活动详情查看:8月更文挑战
项目需求
室内环境(温度、湿度、污染物等)是人类生存的自然环境的重要组成部分,也是人类生存、发展的基本物质基础。随着科学技术、生产条件、生活水平的改善和提高,建筑结构的封闭化室内办公人员的增加,室内空气品质的研究吸引了越来越多人的关注。人的一生有三分之二的时间在室内度过的。
而生活中的控制远远不能满足我们的日常需求,尤其是对于像咖啡厅这样大型的室内环境,手动控制更是远远不能满足。而这时网页控制就凸显出来其重要地位。
前期准备
-
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> <br>");
client.print("<a href=\"/L\">关闭 LED</a> <br>");
client.print("<a href=\"/O\">打开红外警告</a> <br>");
client.print("<a href=\"/P\">关闭红外警告</a> <br>");
client.print("<a href=\"/R\">打开风扇</a> <br>");
client.print("<a href=\"/S\">关闭风扇</a> <br>");
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.");
}
}
实现场景