如何使用ESP8266开发板制作光强度检测器

描述

  本文将介绍如何使用一个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 = "ESP8266 Light Levels ";

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();

}

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分