Home Internet of Things - IoT ESP8266: Thư viện WiFi Manager – quản lý kết nối Wifi

ESP8266: Thư viện WiFi Manager – quản lý kết nối Wifi

by Khanh Tran

1. Mở đầu

Hôm nay, chúng ta sẽ đi đến một bài rất thú vị, đó là kết nối wifi cho EP8266 bằng điện thoại với thư viện WiFi Manager nhé. Nó sẽ rất tiện lợi khi sản phẩm của bạn đã hoàn thành, không thể nạp lại code và muốn kết nối với wifi khác. Rất hứng thú phải không, bắt đầu ngay nào!

2. WiFI Manager

Wifi Manager 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 với Captive Portal, ESP8266 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, đồng thời chuyển hướng mọi kết nối đến giao diện Web do ESP8266 tạo nên. Trên giao diện này, sẽ cung cấp các trường để 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.

3. Chuẩn bị

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

3.1 Cách cài đặt thư viện

a. Tải thư viện trên Github

Hình 1: Tải thư viện WiFi Manager từ github.

Chọn Sketch → Include Library → Add .ZIP Library

Hình 2: Cài đặt thư viện Wifi Manager.

Chọn thư viện vừa tải:

Hình 3: Cài đặt thư viện Wifi Manager.

b. Tải thư viện trực tiếp trên Libraly Manager

Chọn Sketch → Include Library →Manager Library

Hình 4: Cài đặt trực tiếp từ trình quản lý thư viện.

Gõ vào ô tìm kiếm wifi manager, sau đó kéo xuống, tới WiFi Manager by tzapu thì ra chọn Install

Hình 5: Cài đặt trực tiếp từ trình quản lý thư viện.

Như vậy là ta đã thêm thành công thư viện WiFi Manager.

4. Hoạt động cơ bản WiFi Manager

  • Khi ESP8266 khởi động, ESP8266 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 vào ESP8266 ở 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 không còn nữa, hay sai mật khẩu, hoặc chưa có thông tin của bất cứ Access Point nào trong ESP8266 ), lúc này ESP8266 sẽ vào chế độ AP với một DNS trỏ về chính nó (có thể thiết lập DNS trỏ về địa chỉ khác) 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 vừa mới tạo ra. Có thể thấy một giao diện (với tên AP của ESP8266 là mặc định và không cài đặt mật khẩu cho ESP8266 AP) tương tự như sau :
Hình 6: Giao diện Wifi Manager trên di động.
Hình 7: Giao diện Wifi Manager trên di động.

Sau khi vào được giao diện option của ESP8266 AP ở đị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 :

Hình 8: Giao diện Wifi Manager.
  • Chọn mạng wifi cần kết nối và nhập mật khẩu để vào wifi.
  • 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. Nếu chưa thành công thì chỉ cần kết nối lại ESP8266 AP và cấu hình lại.

5. Code tham khảo

#include <ESP8266WiFi.h>          //https://github.com/esp8266/Arduino

//các thư viện cần thiết
#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());
}

  // Cài đặt thông số ban đầu
void setup()
{
  Serial.begin(115200);

  //Khai báo wifiManager thuộc class WiFiManager, được quy định trong file WiFiManager.h
  WiFiManager wifiManager;
  //có thểreset các cài đặt cũ bằng cách gọi hàm:
  //wifiManager.resetSettings();

  //Cài đặt callback, khi kết nối với wifi cũ thất bại, thiết bị sẽ gọi hàm callback
  //và khởi động chế độ AP với SSID được cài tự động là "ESP+chipID"
  wifiManager.setAPCallback(configModeCallback);
  if (!wifiManager.autoConnect())
  {
    Serial.println("failed to connect and hit timeout");
  //Nếu kết nối thất bại, thử kết nối lại bằng cách reset thiết bị
    ESP.reset();
    delay(1000);
  }
  //Nếu kết nối wifi thành công, in thông báo ra màn hình
  Serial.println("connected...yeey :)");

}

void loop()
{
  // Chương trình chính
}

Tạm kết

Vậy là chúng ta đã có thể cấu hình tự động wifi cho ESP8266/NodeMCU với Wifi Manager 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 bloglaptrinh.infor.

You may also like

Leave a Comment