ESP8266(NodeMCU)通過網絡服務遠程點亮板載LED

  通過網絡服務實現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燈的打開,關閉了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章