天天看點

WIFI智能配網 - SmartConfig

要開始IoT項目的第一步是什麼?當然不是硬體,而是硬體與硬體的連接配接!即使有各種各樣的通信協定沒有好的連接配接方式絕對不行。那外設上沒有的螢幕,沒有鍵盤怎末輸入密碼怎末選擇網絡?對,這就是WIFI子產品最重要解決的問題。

為了解決這個連接配接問題樂鑫在其SDK中加入了SmartConfig功能,所謂的smartconfig就是手機APP端發送包含WIFI 使用者名 WIFI密碼的 UDP 廣播包或者多點傳播包,智能終端的WIFI晶片可以接收到該UDP包,隻要知道UDP的組織形式,就可以通過接收到的UDP包解密 出WIFI 使用者名 密碼,然後智能硬體 配置受到的WIFI 使用者名 密碼到指定的WIFI AP 上。

如果将其原理用簡潔點的步驟來解說應該分為以下幾步:

  1. ESP8266 端調用

    WiFi.beginSmartConfig()

    等待手機端發出的使用者名與密碼。
  2. 手機端填寫目前網絡的密碼發送到UDP端口。
  3. ESP8266 自動收到連接配接資訊并調用

    WiFi.smartConfigDone()

    退出等待。

就這麼簡單!

ESP8266 的固件代碼

Arduino core for ESP8266 的代碼示例:

#include <ESP8266WiFi.h>;

void setup() {
  Serial.begin(115200);
  delay(10);

  // 必須采用 AP 與 Station 相容模式
  WiFi.mode(WIFI_AP_STA);
  delay(500);


 // 等待配網
  WiFi.beginSmartConfig();

 // 收到配網資訊後ESP8266将自動連接配接,WiFi.status 狀态就會傳回:已連接配接
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    // 完成連接配接,退出配網等待。
    Serial.println(WiFi.smartConfigDone());
  }

  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

int value = 0;

void loop() {
}
           

如果使用NodeMCU Lua 的話代碼會更簡單一些:

wifi.setmode(wifi.STATION)
wifi.startsmart(0,
                function(ssid, password)
                     print(string.format("Success. SSID:%s ; PASSWORD:%s", ssid, password))
                 end )
           

手機端

将以上的代碼寫入到ESP8266之後,就要在安卓或者iOS上安裝一個由樂鑫提供的ESP-Touch的App将目前WIFI中的使用者名和密碼告知ESP8266以完成SmartConfig連接配接。

相關資源

繼續閱讀