You are currently viewing ESP8266入門指南-建立Wi-Fi連線

ESP8266入門指南-建立Wi-Fi連線

ESP8266有三種不同執行模式:Wi-Fi station(STA)、Wi-Fi access point(AP)以及STA、AP兩種模式並行。我們將從瞭解Wi-Fi station的配置開始。

STA模式

連接到一個特定的網路
#include <ESP8266WiFi.h>    // 匯入Wi-Fi程式庫
const char* ssid     = "SSID";         // 填入你連線區網Wi-Fi的SSID(name)
const char* password = "PASSWORD";     // Wi-Fi的密碼
void setup() {
  Serial.begin(115200);         // 啟動序列通信將訊息發送到計算機
  delay(10);
  Serial.println('n');
  WiFi.begin(ssid, password);             // Connect to the network
  Serial.print("Connecting to ");
  Serial.print(ssid); Serial.println(" ...");
  int i = 0;
  while (WiFi.status() != WL_CONNECTED) { // 等待Wi-Fi連線
    delay(1000);
    Serial.print(++i); Serial.print(' ');
  }
  Serial.println('n');
  Serial.println("Connection established!");  
  Serial.print("IP address:t");
  Serial.println(WiFi.localIP());         // ESP8266連線到計算機的IP
}
void loop() { }

要連接到無線訪問點的代碼相對簡單:只要輸入您要連接網絡的SSID和密碼,然後啟用WiFi.begin功能。接著等待連接完成,ESP8266就會連接到您的區域網路。

 下圖可以向您證明:打開序列埠監控視窗(CTRL + SHIFT + M)並上傳程式碼。您應該會看到以下內容:

現在轉到電腦並打開一個terminal:在Windows上,搜索“命令提示符”。可以使用快捷方式:在Windows上,點擊  + R,輸入“ cmd”. 接下來,輸入 ping ,然後是您在”序列埠”監控視窗中收到的IP地址,按下Enter。輸出應如下所示:

ping命令向ESP8266的IP地址發送小數據包。ESP收到此類數據包後,會將其發送回發送方。Ping是TCP / IP堆疊第二層(Internet層)的一部分。它同時依賴於數據鏈路層(Wi-Fi)和Internet協定*。您可以看到在上面的範例中,我們向ESP發送了4個數據包,並且還收到了4個響應(迴聲)數據包。這告訴我們數據鏈路,Wi-Fi連接和Internet協定運行正常。 現在我們知道ESP可以與網絡上的其他設備成功通信,並且如果您的本地網絡在線(如果它通過網路設備連接到Internet),則ESP也可以與網絡上的任何設備通信! Ping是檢查ESP(或任何設備)是否仍連接到網絡以及它是否仍能正常工作的好工具。一個缺點是IP地址會隨著時間變化,這點我們將在其他章節來解決…(*)我在這裡簡化一些事情。實際上,像Internet協議一樣,ping是Internet控制消息協議(ICMP)的一部分,它也是第二層的一部分。不必太擔心,只要記住,如果您可以將ping數據包發送到設備,那麼您也可以發送IP數據包。帶天線的設備可用於許多不同目的:

  • 接入點:其他Wi-Fi設備可以連接到它,成為本地網絡的一部分。
  • 路由器:它將IP數據包路由到正確的子網,以便它們到達目的地。例如,如果計算機通過以太網子網發送了一條用於ESP的消息,則路由器會將數據包發送到Wi-Fi子網,因為它知道ESP所在的位置。
  • Modem(數據機):如果路由器無法在本地網絡上找到收件人,則數據包將被傳遞到集成調解器,然後將通過DSL線路發送到Internet服務提供商,該Internet通往大量其他路由器將嘗試將數據包發送到正確的目的地。

但實際上,您不必太擔心它,因為這一切都為您完成了,不到一秒的時間甚至您都沒有註意到它! 

自動連接到最強大的網絡

上面的圖示應該足以滿足您的特定應用程序,但是如果您需要能夠連接到多個Wi-Fi網絡,例如家庭Wi-Fi和辦公室Wi-Fi,則無法使用。為了解決這個問題,我們將使用Wi-Fi-Multi庫:您可以添加任意數量的網絡,它會自動連接到信號最強的網絡。 

#include <ESP8266WiFi.h> // 匯入Wi-Fi庫
#include <ESP8266WiFiMulti.h> // 匯入Wi-Fi-Multi庫
ESP8266WiFiMulti wifiMulti; // 建立一個ESP8266WiFiMulti類別的實體變數叫'wifiMulti' void setup() { Serial.begin(115200); // 啟動序列通信將訊息發送到計算機 delay(10); Serial.println('n'); wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1"); // 加入多組Wi-Fi連線的ssid及password wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); Serial.println("Connecting ..."); int i = 0; while (wifiMulti.run() != WL_CONNECTED) { // 等待Wi-Fi連線:掃描Wi-Fi網絡,並連接到上面幾組最強的網絡 delay(1000); Serial.print('.'); } Serial.println('n'); Serial.print("Connected to "); Serial.println(WiFi.SSID()); // 告訴我們是哪一組ssid連線到 Serial.print("IP address:t"); Serial.println(WiFi.localIP()); // 送出ESP8266連線到IP多少 } void loop() { }

AP(接入點)模式

要將ESP8266配置為AP,以允許其他設備(如智能手機或筆記型電腦)與其連接,可以使用softAP功能:

#include <ESP8266WiFi.h>         // 匯入Wi-Fi庫
const char *ssid = "ESP8266_AP"; // 建一個將要創立的Wi-Fi網路的名稱
const char *password = "password";   // 創立該Wi-Fi網路連線的密碼
void setup() {
  Serial.begin(115200);
  delay(10);
  Serial.println('n');
  WiFi.softAP(ssid, password);             // 啟動AP
  Serial.print("Access Point "");
  Serial.print(ssid);
  Serial.println("" started");
  Serial.print("IP address:t");
  Serial.println(WiFi.softAPIP());         // 送出ESP8266 AP的IP到計算機
}
void loop() { }

要查看其是否有效,請在計算機上打開Wi-Fi設置,尋找一個名為“ ESP8266_AP”的網絡,輸入密碼“ password”,然後進行連接。然後打開一個terminal,並ping到192.168.4.1(這是全部ESP AP的預設IP地址)。您會看到ESP回應您的ping。 但是,如果您嘗試訪問在線網站,則會收到超時或DNS錯誤。這是因為ESP本身未連接到Internet。由ESP和計算機組成的子網未連接到任何其他網絡,因此該網絡上的數據包無法將其連接到Internet。 另一方面,如果將另一個STA連接到ESP AP,則可以從一個STA點ping另一個STA點,而不會出現問題,因為它們位於同一網絡上。

發佈留言