#include <ESP8266WiFi.h> // 本程序使用 ESP8266WiFi库
#include <ESP8266WiFiMulti.h> // ESP8266WiFiMulti库
#include <ESP8266WebServer.h> // ESP8266WebServer库
ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti'
ESP8266WebServer esp8266_server(80); // 建立ESP8266WebServer对象,对象名称为esp8266_server
// 括号中的数字是网路服务器响应http请求的端口号
// 网络服务器标准http端口号为80,因此这里使用80为端口号
void setup() {
Serial.begin(9600); // 启动串口通讯
pinMode(LED_BUILTIN, OUTPUT); //LED引脚设置成输出模式
digitalWrite(LED_BUILTIN, HIGH);
// 通过addAP函数存储 WiFi名,WiFi密码
wifiMulti.addAP("谢凡工作室", "123456xie");
Serial.print("\r\n Connecting ..."); // 通过串口监视器输出信息告知用户esp8266正在尝试连接WiFi
while (wifiMulti.run() != WL_CONNECTED) {
delay(1000);
Serial.print('.');
}
Serial.print("\r\n"); // WiFi连接成功后
Serial.print("Connection Successful\r\n"); // esp8266将通过串口监视器输出
Serial.print("WiFi: " + WiFi.SSID() + "\r\n"); // 连接的WiFI名称
Serial.print("IP address: "); // esp8266的IP地址
Serial.println(WiFi.localIP());
/*"启动网络服务功能"程序部分开始*/
esp8266_server.begin();
esp8266_server.on("/", handleRoot);
esp8266_server.on("/", HTTP_GET, handleRoot);//获取根目录得一些资源
esp8266_server.on("/led", HTTP_POST, handleLED);//发送led函数
esp8266_server.onNotFound(handleNotFound);
/*"启动网络服务功能"程序部分结束*/
Serial.println("网络服务器成功启动"); // ESP8266网络服务功能已经启动
}
void loop() {
esp8266_server.handleClient(); // 处理http服务器访问
}
/*处理网站根目录"/"的访问请求*/
void handleRoot() {
esp8266_server.send(200, "text/html", "<form action="/led" method="post"><input type="submit" value="点亮LED灯光"></form>");
}
void handleLED() {
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
esp8266_server.sendHeader("Location","/");//跳转首页去
esp8266_server.send(303);//发送303http跳转指令
}
/*设置处理404情况的函数*/
void handleNotFound() {
esp8266_server.send(404, "text/plain", "404: Not found");
}
|