通過網絡服務實現NodeMCU開發板基本控制,利用NodeMCU建立網絡服務。通過瀏覽器可以訪問NodeMCU所建立的網頁。通過該網頁,可實現對NodeMCU的LED燈控制。
程序來源太極創客:
#include <ESP8266WiFi.h>
//此處設置您的wifi接入信息
#ifndef STASSID
#define STASSID "tsy_B5AC58" //wifi名稱
#define STAPSK "12345678" //要連接的wifi密碼
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
//創建TCP server對象,並將端口指定爲80
WiFiServer server(80);
void setup() {
//打開串口
Serial.begin(115200);
//初始化板載LED
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, 0);
//連接WiFi
Serial.println();
Serial.println();
Serial.print(F("Connecting to "));
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(F("."));
}
Serial.println();
Serial.println(F("WiFi connected"));
//啓動TCP server服務器
server.begin();
Serial.println(F("Server started"));
//打印IP地址
Serial.println(WiFi.localIP());
}
void loop() {
//檢查客戶端是否已連接
WiFiClient client = server.available();
if (!client) {
return;
}
Serial.println(F("new client"));
client.setTimeout(5000); //默認爲 1000
//讀取客戶端發起的TCP請求
String req = client.readStringUntil('\r');
Serial.println(F("request: "));
Serial.println(req);
//解析請求裏是否含有以下指定內容
int val;
//檢查發起的請求內容是否包含"/gpio/0"
if (req.indexOf(F("/gpio/0")) != -1) {
val = 0;
//檢查發起的請求內容是否包含"/gpio/1"
} else if (req.indexOf(F("/gpio/1")) != -1) {
val = 1;
} else {
Serial.println(F("invalid request"));
val = digitalRead(LED_BUILTIN);
}
//根據要求設置板載LED狀態
digitalWrite(LED_BUILTIN, val);
//讀取剩餘的內容,用於清除緩存
while (client.available()) {
client.read();
}
//將響應體發送到客戶端 注:若要使用中文則必須在其中添加<meta charset=\"utf-8\">聲明編碼
client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n<meta charset=\"utf-8\">NodeMCU板載LED燈的狀態 : "));
client.print((val) ? F("關") : F("開"));
client.print(F("<br><br> <a href='http://"));
client.print(WiFi.localIP());
client.print(F("/gpio/1'> 點擊關燈 </a> , 或 <a href='http://"));
client.print(WiFi.localIP());
client.print(F("/gpio/0'> 點擊開燈 </a> </html>"));
//通過瀏覽器點擊按鈕之後,TCP連接將會被重置,並且瀏覽器會發起新的TCP請求到我們的8266服務器,從而去控制LED燈
Serial.println(F("Disconnecting from client"));
}
通過瀏覽器點擊按鈕之後,TCP連接將會被重置,並且瀏覽器會發起新的TCP請求到我們的8266服務器,從而去控制LED燈。
瀏覽器輸入上述IP地址:
點擊按鈕就可以控制LED燈的打開,關閉了。