本项目的软件部分使用Arduino IDE进行开发,主要包括以下几个模块:
// WiFi连接初始化
void initWiFi() {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi ..");
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(1000);
}
Serial.println(WiFi.localIP());
}
// Web服务器初始化
void initWebServer() {
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/index.html", "text/html");
});
server.on("/data", HTTP_GET, [](AsyncWebServerRequest *request){
String json = getSensorData();
request->send(200, "application/json", json);
});
server.on("/control", HTTP_POST, [](AsyncWebServerRequest *request){
if(request->hasParam("relay1")){
String relay1 = request->getParam("relay1")->value();
digitalWrite(RELAY1_PIN, relay1.toInt());
}
request->send(200, "text/plain", "OK");
});
server.begin();
}
// 传感器数据采集
String getSensorData() {
sensors_event_t event;
dht.readTemperature();
dht.readHumidity();
JsonDocument doc;
doc["temperature"] = dht.readTemperature();
doc["humidity"] = dht.readHumidity();
doc["light"] = lightMeter.readLightLevel();
doc["motion"] = digitalRead(MOTION_PIN);
String json;
serializeJson(doc, json);
return json;
}
Web界面使用HTML、CSS和JavaScript开发,采用响应式设计,可以在电脑和手机上正常显示。界面主要包括以下几个部分: