本文将介绍如何使用一个ESP8266开发板制作光强度检测器,并将检测结果在本地网页显示。
前言
你是否碰到过这样的问题,当你外出时突然忘记了家里的灯是否还开着,忘了关家里的灯怎么办呢?这个项目将允许你通过一个每秒更新的简单网页,查看房间的灯是否亮着。
威廉希尔官方网站 连接
首先,连接一些外部元件到ESP8266开发板。将LDR光敏电阻通过一个10k的下拉电阻连接到3.3v。LDR光敏电阻将根据它接收到的光强度来改变电阻值,然后再用跳线连接10k电阻到ESP8266的ADC引脚。
威廉希尔官方网站 原理图如下:
程序设计思路
首先加载Hello World服务器的示例文件,为了让它声明light值并自动刷新,文中更改了handleRoot回调函数来提供定制的html代码。由于没有使用SD卡,所以无法使用javascript自动刷新这些值。庆幸的是,HTML本身提供了一种按设置的间隔时间刷新页面的方法。只需要在《p》标签后面添加《meta http-equiv=“refresh” content=“1”》。记住需要在代码中包含你的WiFi证书。
然后,通过浏览器访问ESP8266的IP地址就可以查看页面,在示例中IP地址是192.168.0.41,在浏览器设置中允许网站自动刷新,如果希望在不网络上(例如在使用4G网络的手机上)查看网页,需要将对应端口转发到ESP8266的IP地址。例如,输入的不是192.168.0.41,端口转发的类型是“MY_IP:THE_PORT_I_CHOSE_TO_FORWARD”,MY_IP是你的外网IP地址,THE_PORT_I_CHOSE_TO_FORWARD路由器设置中设置的端口。通过端口转发,现在就算你不在家也可以检查家里的灯是开着还是关着了!
完整代码
#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();
}
全部0条评论
快来发表一下你的评论吧 !