http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html
0 簡單的連接到WIFI
#include <ESP8266WiFi.h>
void setup()
{
Serial.begin(115200);
Serial.println();
WiFi.begin("network-name", "pass-to-network");
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected, IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {}
1AP+STA模式
ESP8266模塊可以作為一個工作站,所以我們可以將它連接到Wi-Fi網絡。它也可以作為軟接入點(soft-AP)運行,建立自己的Wi-Fi網絡。因此,我們可以將其他站連接到這樣的ESP模塊。ESP8266也可以在工作站和軟接入點模式下工作。

2 STA 模式
站級有幾個功能,以方便管理Wi-Fi連接。如果連接丟失,ESP8266將自動重新連接到上一次使用的接入點,一旦它再次可用。模塊重啟也會發生同樣的情況。

測試(1)添加幾個可供連接的WIFI,自動連接,切換
http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/station-examples.html
/*
* This sketch trys to Connect to the best AP based on a given list
*
*/
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
ESP8266WiFiMulti wifiMulti;
void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println();
delay(10);
wifiMulti.addAP("dongdong", "dongdong");
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 Wifi...");
if(wifiMulti.run() == WL_CONNECTED) {
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
}
void loop() {
if(wifiMulti.run() != WL_CONNECTED) {
Serial.println("WiFi not connected!");
delay(1000);
}
}
測試(二) STA文檔
WiFi.begin(ssid, password)
- 默認情況下,只要斷開連接,ESP將嘗試重新連接到Wi-Fi網絡。不需要單獨的代碼來處理這個問題。模擬斷開的一個好方法是重置接入點。ESP將報告斷開連接,然后嘗試自動重新連接。
WiFi.begin(ssid, password, channel, bssid, connect)
參數的含義如下:
- *
ssid- 一個包含我們想要連接的接入點的SSID的字符串,最多可以有32個字符 - *
password到接入點,一個字符串應該最少8個字符長,而不是更長超過64個字符 - *
channelAP的,如果我們喜歡使用特定信道來操作,否則這個參數也可以省略 - *
bssid- AP的MAC地址,這個參數也是可選*connect-一個boolean參數,如果設置為false,將指示模塊只保存其他參數,而不實際建立到接入點的連接
配置
禁用DHCP客戶端(動態主機配置協議),並將站點接口的IP配置設置為用戶定義的任意值。該接口將是一個靜態IP配置,而不是由DHCP提供的值。
WiFi.config(local_ip, gateway, subnet, dns1, dns2)
local_ip- 在此輸入你想分配ESP站接口的IP地址gateway- 應包含網關(路由器)的IP地址來訪問外部網絡subnet- 這是一個掩碼,用於定義本地網絡的IP地址范圍dns1,dns2- 定義維護域名目錄(如www.google.co.uk)的域名服務器(DNS)的IP地址的可選參數,並將它們轉換為IP地址
示例代碼:
#include <ESP8266WiFi.h>
const char* ssid = "dongdong";
const char* password = "dongdong";
String name="DD_Station_01";
IPAddress staticIP(192,168,1,22);
IPAddress gateway(192,168,1,9);
IPAddress subnet(255,255,255,0);
void setup(void)
{
Serial.begin(115200);
Serial.println();
Serial.printf("Connecting to %s\n", ssid);
WiFi.begin(ssid, password);
WiFi.config(staticIP, gateway, subnet);
// 修改主機名
WiFi.hostname(name);
Serial.printf("New hostname: %s\n", WiFi.hostname().c_str());
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected, IP address: ");
Serial.println(WiFi.localIP()); // 分配的動態地址&自己設置的靜態地址
Serial.printf("SSID: %s\n", WiFi.SSID().c_str());// 連接的WIFI名
}
void loop() {}
請注意,靜態IP配置的站點通常會更快地連接到網絡。在上面的例子用了500ms左右(一個點。顯示)。這是因為通過DHCP客戶端獲取IP配置需要時間,在這種情況下,跳過這一步。如果您將所有三個參數都作為0.0.0.0(local_ip,網關和子網)傳遞,它將重新啟用DHCP。您需要重新連接設備以獲取新的IP。
管理連接
重新連接
重新連接電台。這是通過從接入點斷開然后發起連接返回到相同的AP來完成的。
WiFi.reconnect()
注意:
- 1.電台應該已經連接到接入點。如果不是這樣,則函數將返回
false不執行任何操作。 - 2.如果
true返回,則意味着連接順序已經成功啟動。用戶仍然應該檢查連接狀態,等待WL_CONNECTED報告: -
WiFi.reconnect(); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
斷開
將當前配置的SSID和密碼設置為null值,並將電台與接入點斷開連接。
WiFi.disconnect(wifioff)
- 這
wifioff是一個可選boolean參數。如果設置為true,則電台模式將被關閉。
已連接
true如果電台連接到接入點,或者false沒有連接,則返回。
WiFi.isConnected()
setAutoConnect
這autoConnect是一個可選參數。如果設置為,false則自動連接功能將被禁用。如果省略或設置為true,則自動連接將被啟用。
WiFi.setAutoConnect(autoConnect)
setAutoReconnect
設置模塊是否嘗試重新連接到接入點,以防斷開連接。
WiFi.setAutoReconnect(autoReconnect)
- 如果參數
autoReconnect設置為true,則模塊將嘗試重新建立與AP的丟失連接。如果設置為,false那么模塊將保持斷開連接。
主機名
Serial.printf("Default hostname: %s\n", WiFi.hostname().c_str()); WiFi.hostname("Station_Tester_02"); Serial.printf("New hostname: %s\n", WiFi.hostname().c_str());
狀態
返回Wi-Fi連接的狀態。
WiFi.status()
SSID
返回Wi-Fi網絡的名稱,正式稱為服務集標識(SSID)。
Serial.printf("SSID: %s\n", WiFi.SSID().c_str());
軟接入點AP
1 智能連接
ESP首先以軟AP模式啟動,所以我們可以使用筆記本電腦或手機連接到它。然后我們能夠提供目標網絡的憑據。一旦完成ESP切換到站模式,並可以連接到目標Wi-Fi。
2 作為網路節點。
軟AP模式的另一個方便的應用是建立網狀網絡。ESP可以在軟AP和站模式下運行,因此它可以作為網狀網絡的節點。

http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/server-examples.html
#include <ESP8266WiFi.h>
void setup() {
Serial.begin ( 115200 );
Serial.println("");
// 設置內網
IPAddress softLocal(192,168,128,1); // 1 設置內網WIFI IP地址
IPAddress softGateway(192,168,128,1);
IPAddress softSubnet(255,255,255,0);
WiFi.softAPConfig(softLocal, softGateway, softSubnet);
//String apName = ("ESP8266_"+(String)ESP.getChipId()); // 2 設置WIFI名稱
String apName = "DD_ESP8266_AP_01";
const char *softAPName = apName.c_str();
WiFi.softAP(softAPName, "123456"); // 3創建wifi 名稱 +密碼 adminadmin
IPAddress myIP = WiFi.softAPIP(); // 4輸出創建的WIFI IP地址
Serial.print("AP IP address: ");
Serial.println(myIP);
Serial.print("softAPName: "); // 5輸出WIFI 名稱
Serial.println(apName);
}
void loop() { Serial.printf("Stations connected = %d\n", WiFi.softAPgetStationNum()); delay(3000); }
