Arduino IDE for ESP8266 (0) 官方API


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地址范圍
  • dns1dns2- 定義維護域名目錄(如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); }

  

 


免責聲明!

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



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