Arduino---ESP8266 WIFI模塊


一:Arduino安裝ESP8266

https://www.arduino.cn/thread-76029-1-1.html(內容截圖如下:最簡單方法)

選用NodeMCU 1.0即可

二:簡單測試

void setup() {
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN,OUTPUT);  //測試燈
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED_BUILTIN,LOW);
  delay(1000);
  digitalWrite(LED_BUILTIN,HIGH);
  delay(1000);
}
LED_BUILTIN中builtin是內建意思,為內建LED燈,可直接用於測試

三:引腳對應

引腳編號 對應數字
D0 16
D1 5
D2 4
D3 0
D4 2
D5 14
D6 12
D7 13
D8 15
D9 3
D10 1

四:簡單使用案例:無線控制LED開關

#include <ESP8266WiFi.h>  //引入模塊

#ifndef STASSID
#define STASSID "Tenda_064E38" 
#define STAPSK  "YM123456789"
#endif

const char* ssid = STASSID;
const char* password = STAPSK;

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80); //開啟板子的80端口

void setup() {
  //https://blog.csdn.net/rong81590509/article/details/77010216 //在波特率為9600~38400之間,波特率的增長倍數與傳輸速率的增長倍數基本相同,但是在波特率大於192000以上時,傳輸速率基本沒有任何提高。 //從115200開始實際與理論相差較大 11.25kb/s //不要9600,因為9600下速率太慢0.9kb/s
 Serial.begin(115200); //開啟電腦的序列埠,設置為115200 // 測試D4接口
  pinMode(2, OUTPUT);
  digitalWrite(2, 0); //設置為低電壓

  //告訴電腦連接到那個wifi了
  Serial.println();
  Serial.println();
  Serial.print(F("Connecting to "));  
  Serial.println(ssid); 

  //開始連接
 WiFi.mode(WIFI_STA);  //WIFI模塊的STA模式和AP模式有什么區別:AP是接入點,可以讓用戶接入。STA--Station無線終端,不接受無線接入,可以連接到無線AP,無線網卡工作在STA下
  WiFi.begin(ssid, password); //開啟WIFI //若是沒有連接上:則一直打印....
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(F("."));
  }

  //打印連線成功
  Serial.println();
  Serial.println(F("WiFi connected"));

  //開啟伺服器
  server.begin();
  Serial.println(F("Server started"));

  //告訴電腦自己的IP
  Serial.println(WiFi.localIP());
}

void loop() {
  //每次循環進入:都需要確認本板子是否有效(是否連上AP),成功則返回客戶端連接自己的句柄
 WiFiClient client = server.available(); if (!client) {
    return;
  }

  //成功就打印成功
  Serial.println(F("new client"));
  //若是客戶端一直連接沒有信息傳入,則等待
  
  //設置客戶端連接超時時間。若在指定時間連接不上的為超時
  client.setTimeout(5000); // default is 1000
  //看客戶端是否發送信息,不然一直等待 while(!client.available()) { delay(1); }   //讀取第一行\r為換行符--->為請求
 String req = client.readStringUntil('\r');
  Serial.println(F("request: "));
  Serial.println(req);
  //client.flush(); //刷新流

  // Match the request
  int val;
  if (req.indexOf(F("/gpio/0")) != -1) {  //若是匹配到/gpio/0
    val = 0;  //關閉
  } else if (req.indexOf(F("/gpio/1")) != -1) { //若是匹配到/gpio/1
    val = 1;  //打開
  } else {
    Serial.println(F("invalid request"));
    val = digitalRead(2); //若是無用,則讀取當前狀態不變
  }

  //修改狀態
  digitalWrite(2, val);

  //向客戶端句柄寫入數據
  client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now "));
  client.print((val) ? F("high") : F("low"));
  client.print(F("<br><br>Click <a href='http://"));
  client.print(WiFi.localIP());
  client.print(F("/gpio/1'>here</a> to switch LED GPIO on, or <a href='http://"));
  client.print(WiFi.localIP());
  client.print(F("/gpio/0'>here</a> to switch LED GPIO off.</html>"));

  //客戶端斷開連接(對象釋放了)
  Serial.println(F("Disconnecting from client"));
}
本程序為單進程,不支持同步處理連接,易出現客戶端死等。待改進

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM