Tự động kết nối cấu hình ESP8266 với WiFiManager

Trong bài hướng dẫn này,  mình sẽ dùng thư viện WiFiManager cho module ESP8266/ NodeMCU, ưu điểm của nó là cho phép bạn kết nới tới nhiều Access Point (AP) khác nhau mà không phải nạp lại code.

Wifi Manager là gì ?

WifiManager là một thư viện cấu hình ESP8266 kết nối vào mạng WiFi cục bộ sử dụng giao diện Web.
Bằng cách khởi động 1 mạng WiFi riêng ESP8266/NodeMCU sẽ cho phép các thiết bị khác như máy tính, điện thoại thông minh kết nối vào, sau đó chuyển hướng mọi kết nối đến giao diện Web do ESP8266/NodeMCU tạo ra. Trên giao diện này, sẽ cung cấp các thông tin để người dùng có thể dễ dàng quét mạng xung quanh, chọn mạng WiFi, nhập mật khẩu, lưu cấu hình.

Chuẩn bị

  • Phần cứng ESP8266/NodeMCU
  • Phần mềm thư viện WifiManager

Chương trình

Các bạn nạp chương trình này xuống ESP8266/NodeMCU sau đó tiếp tục vừa xem giải thích vừa làm

#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include "WiFiManager.h" //https://github.com/tzapu/WiFiManager
void configModeCallback (WiFiManager *myWiFiManager)
{
  Serial.println("Entered config mode");
  Serial.println(WiFi.softAPIP());
  Serial.println(myWiFiManager->getConfigPortalSSID());
}

void setup()
{
  Serial.begin(115200);
  //Khai bao wifiManager
  WiFiManager wifiManager;
  //Setup callback de khoi dong AP voi SSID "ESP+chipID"
  wifiManager.setAPCallback(configModeCallback);
  if (!wifiManager.autoConnect())
  {
    Serial.println("failed to connect and hit timeout");
    //Neu ket noi that bai thi reset
    ESP.reset();
    delay(1000);
  }
  // Thanh cong thi bao ra man hinh
  Serial.println("connected...");
}
void loop()
{

}

WifiManager hoạt động thế nào ?

  • Khi ESP8266/NodeMCU khởi động, mặc định sẽ vào chế độ STATION và sẽ tự động kết nối đến một Access Point với các thông tin kết nối đã được lưu ở lần kết nối thành công trước đó.
  • Nếu như kết nối không thành công (có thể là Access Point lần trước đã mất, hoặc sai mật khẩu, hoặc chưa có thông tin), lúc này ESP8266/NodeMCU sẽ vào chế độ AP với một DNS trỏ về chính nó và khởi động Web Server (với địa chỉ mặc định là 192.168.4.1)
  • Sử dụng các thiết bị có hổ trợ wifi, và có trình duyệt web (điện thoại thông minh, laptop, máy tính bảng…) để kết nối đến AP của ESP8266/NodeMCU vừa mới tạo ra. Thông thường là một mạng wifi mới với tên là ESP như hình sau:
  • Sau kết nối màn hình sẽ vào được giao diện option ở địa chỉ 192.168.4.1, chọn mục cấu hình cho wifi cho ESP8266 (như ví dụ trên là Configure WiFi hoặc Configure WiFi (No Scan)), có thể sẽ thấy giao diện tiếp theo tương tự như sau :
  • Chọn mạng wifi cần kết nối và nhập mật khẩu
  • Nếu ESP8266 kết nối thành công, ta sẽ không thấy tên của ESP8266 AP nữa.

Kết quả

Nếu kết nối thành công thì trên terminal sẽ có kết quả như sau, các bạn có thể check song song để xem mình đã cấu hình đúng hay chưa

Tạm kết

Vậy là chúng ta đã có thể cấu hình tự động wifi cho ESP8266/NodeMCU với WifiManager rồi, ngoài việc cấu hình như trên thì ta còn có thể dùng ConfigPortal để khởi động cấu hình khi cần (ví dụ nhấn nút để cấu hình), và nhiều ví dụ khác bạn có thể xem tại ..\Arduino\libraries\WiFiManager\examples