本文將介紹如何使用一個ESP8266開發(fā)板制作光強(qiáng)度檢測器,并將檢測結(jié)果在本地網(wǎng)頁顯示。
前言
你是否碰到過這樣的問題,當(dāng)你外出時突然忘記了家里的燈是否還開著,忘了關(guān)家里的燈怎么辦呢?這個項目將允許你通過一個每秒更新的簡單網(wǎng)頁,查看房間的燈是否亮著。
電路連接
首先,連接一些外部元件到ESP8266開發(fā)板。將LDR光敏電阻通過一個10k的下拉電阻連接到3.3v。LDR光敏電阻將根據(jù)它接收到的光強(qiáng)度來改變電阻值,然后再用跳線連接10k電阻到ESP8266的ADC引腳。
電路原理圖如下:
程序設(shè)計思路
首先加載Hello World服務(wù)器的示例文件,為了讓它聲明light值并自動刷新,文中更改了handleRoot回調(diào)函數(shù)來提供定制的html代碼。由于沒有使用SD卡,所以無法使用javascript自動刷新這些值。慶幸的是,HTML本身提供了一種按設(shè)置的間隔時間刷新頁面的方法。只需要在《p》標(biāo)簽后面添加《meta http-equiv=“refresh” content=“1”》。記住需要在代碼中包含你的WiFi證書。
然后,通過瀏覽器訪問ESP8266的IP地址就可以查看頁面,在示例中IP地址是192.168.0.41,在瀏覽器設(shè)置中允許網(wǎng)站自動刷新,如果希望在不網(wǎng)絡(luò)上(例如在使用4G網(wǎng)絡(luò)的手機(jī)上)查看網(wǎng)頁,需要將對應(yīng)端口轉(zhuǎn)發(fā)到ESP8266的IP地址。例如,輸入的不是192.168.0.41,端口轉(zhuǎn)發(fā)的類型是“MY_IP:THE_PORT_I_CHOSE_TO_FORWARD”,MY_IP是你的外網(wǎng)IP地址,THE_PORT_I_CHOSE_TO_FORWARD路由器設(shè)置中設(shè)置的端口。通過端口轉(zhuǎn)發(fā),現(xiàn)在就算你不在家也可以檢查家里的燈是開著還是關(guān)著了!
完整代碼
#include
#include
#include
#include
const char* ssid = "SSID";
const char* password = "PSSWD";
ESP8266WebServer server(80);
void handleRoot() {
String msg = "
msg += "
";msg += "
The light level is: ";
msg += String(analogRead(A0))+"
";msg += "";
msg += "";
server.send(200, "text/html", msg);
}
void handleNotFound(){
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET)?"GET":"POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i=0; i
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
}
void setup(void){
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (MDNS.begin("esp8266")) {
Serial.println("MDNS responder started");
}
server.on("/", handleRoot);
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
-
檢測器
+關(guān)注
關(guān)注
1文章
870瀏覽量
47792 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5124瀏覽量
98276 -
ESP8266
+關(guān)注
關(guān)注
50文章
962瀏覽量
45356
發(fā)布評論請先 登錄
相關(guān)推薦
評論