ESP8266建立基本的网络服务器,在网页中显示Hello form ESP8266如果找不到显示404: Not Found
通过调用ESP8266WebServer库
esp8266_server.begin();//启动网络服务器
esp8266_server.on("/",handleRoot);
esp8266_server.onNotFound(handleNotFound);
#include
#include
#include
ESP8266WiFiMulti wifiMulti; //建立ESP8266WiFiMulti对象名称为wifiMulti
ESP8266WebServer esp8266_server(80);//建立ESP8266WebServer对象
void setup() {
Serial.begin(9600);//启动串口通讯
wifiMulti.addAP("TP-LINK_1F04", ""); //参数中输入想要连接的WIFI名称密码
Serial.print("Connecting to");
int i = 0;
while (wifiMulti.run() != WL_CONNECTED) {
delay(1000);
Serial.print(i++); Serial.print(' ');
}
Serial.println('\n');
Serial.print("Connected to ");
Serial.println(WiFi.SSID());
Serial.print("IP address:\t");//串口输出IP address:
Serial.println(WiFi.localIP());//串口输出IP地址
esp8266_server.begin();
esp8266_server.on("/",handleRoot);
esp8266_server.onNotFound(handleNotFound);
}
void loop()
{
esp8266_server.handleClient();
}
void handleRoot(){
esp8266_server.send(200,"text/plain","Hello from ESP8266");
}
void handleNotFound(){
esp8266_server.send(404,"text/plain","404:Not Found");
}
通过建立网络服务器实现对NodeMCU实现基本的控制
设置服务器根目录即'/'的函数'handleRoot'
该函数的作用是每当有客户端访问NodeMCU服务器根目录时,
NodeMCU都会向访问设备发送 HTTP 状态 200 (Ok) 这是send函数的第一个参数。
同时NodeMCU还会向浏览器发送HTML代码,以下示例中send函数中第三个参数,
也就是双引号中的内容就是NodeMCU发送的HTML代码。该代码可在网页中产生LED控制按钮。
当用户按下按钮时,浏览器将会向NodeMCU的/LED页面发送HTTP请求,请求方式为POST。
NodeMCU接收到此请求后将会执行handleLED函数内容
关键代码
void handleLED() {
digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));// 改变LED的点亮或者熄灭状态
esp8266_server.sendHeader("Location","/"); // 跳转回页面根目录
esp8266_server.send(303); // 发送Http相应代码303 跳转
}
#include
#include
#include
ESP8266WiFiMulti wifiMulti; //建立ESP8266WiFiMulti对象名称为wifiMulti
ESP8266WebServer esp8266_server(80);//建立ESP8266WebServer对象
void setup() {
Serial.begin(9600);//启动串口通讯
pinMode(LED_BUILTIN, OUTPUT); //设置内置LED引脚为输出模式以便控制LED
wifiMulti.addAP("TP-LINK_1F04", ""); //参数中输入想要连接的WIFI名称密码
Serial.print("Connecting to");
int i = 0;
while (wifiMulti.run() != WL_CONNECTED) {
delay(1000);
Serial.print(i++); Serial.print(' ');
}
Serial.println('\n');
Serial.print("Connected to ");
Serial.println(WiFi.SSID());
Serial.print("IP address:\t");//串口输出IP address:
Serial.println(WiFi.localIP());//串口输出IP地址
esp8266_server.begin(); // 启动网站服务
esp8266_server.on("/", HTTP_GET, handleRoot); // 设置服务器根目录即'/'的函数'handleRoot'
esp8266_server.on("/LED", HTTP_POST, handleLED); // 设置处理LED控制请求的函数'handleLED'
esp8266_server.onNotFound(handleNotFound); // 设置处理404情况的函数'handleNotFound'
Serial.println("HTTP esp8266_server started");// 告知用户ESP8266网络服务功能已经启动
}
void loop()
{
esp8266_server.handleClient();
}
void handleRoot(){
esp8266_server.send(200, "text/html", "");
}
void handleLED() {
digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));// 改变LED的点亮或者熄灭状态
esp8266_server.sendHeader("Location","/"); // 跳转回页面根目录
esp8266_server.send(303); // 发送Http相应代码303 跳转
}
void handleNotFound(){
esp8266_server.send(404,"text/plain","404:Not Found");
}
通过网络服务器将引脚状态显示在网页中
关键代码
void handleRoot() {
String displayPinState; // 存储按键状态的字符串变量
if (pinState == HIGH) { // 当按键引脚D3为高电平
displayPinState = "Button State: HIGH"; // 字符串赋值高电平信息
} else { // 当按键引脚D3为低电平
displayPinState = "Button State: LOW"; // 字符串赋值低电平信息
}
esp8266_server.send(200, "text/plain", displayPinState);
// 向浏览器发送按键状态信息
}
#include
#include
#include
#define buttonPin D3 //定义按键引脚D3
ESP8266WiFiMulti wifiMulti; //建立ESP8266WiFiMulti对象名称为wifiMulti
ESP8266WebServer esp8266_server(80);//建立ESP8266WebServer对象
bool pinState; //储存引脚状态变量
void setup() {
Serial.begin(9600);//启动串口通讯
pinMode(buttonPin, INPUT_PULLUP); // 将按键引脚设置为输入上拉模式
wifiMulti.addAP("TP-LINK_1F04", ""); //参数中输入想要连接的WIFI名称密码
Serial.print("Connecting to");
int i = 0;
while (wifiMulti.run() != WL_CONNECTED) {
delay(1000);
Serial.print(i++); Serial.print(' ');
}
Serial.println('\n');
Serial.print("Connected to ");
Serial.println(WiFi.SSID());
Serial.print("IP address:\t");//串口输出IP address:
Serial.println(WiFi.localIP());//串口输出IP地址
esp8266_server.begin(); // 启动网站服务
esp8266_server.on("/", handleRoot); // 设置服务器根目录即'/'的函数'handleRoot'
esp8266_server.onNotFound(handleNotFound); // 设置处理404情况的函数'handleNotFound'
Serial.println("HTTP esp8266_server started");// 告知用户ESP8266网络服务功能已经启动
}
void loop()
{
esp8266_server.handleClient();//处理服务器访问
pinState = digitalRead(buttonPin); //获取引脚状态
}
void handleRoot() {
String displayPinState; // 存储按键状态的字符串变量
if (pinState == HIGH) { // 当按键引脚D3为高电平
displayPinState = "Button State: HIGH"; // 字符串赋值高电平信息
} else { // 当按键引脚D3为低电平
displayPinState = "Button State: LOW"; // 字符串赋值低电平信息
}
esp8266_server.send(200, "text/plain", displayPinState);
// 向浏览器发送按键状态信息
}
void handleNotFound() {
esp8266_server.send(404, "text/plain", "404:Not Found");
}