ESP8266 – WiFi Access Point
ESP8266 hoạt động ở chế độ Access Point
ESP8266 có khả năng cho phép các thiết bị khác (Station – STA) truy cập vào và hoạt động như là 1 Access Point, có thể tự thiết lập 1 mạng WiFi nội bộ, với khả năng khởi động DHCP Client và cung cấp được IP cho các Client kết nối tới. Do giới hạn về RAM, nên số lượng tối đa các STA có thể kết nối đến một ESP8266 hiện tại là 5.
Khởi tạo mạng
Đầu tiên bạn cần include <ESP8266WiFi.h>
, thư viện này chứa hàm softAP
dùng để cấu hình Access Point mềm (soft AP) để khởi tạo một mạng WiFi.
Một mạng WiFi đơn giản nhất chỉ cần cung cấp tên SSID và không mật khẩu WiFi.softAP(ssid)
. Phức tạp hơn, bạn cung cấp mật khẩu cho mạng WiFi WiFi.softAP(ssid, password)
, hoặc chi tiết WiFi.softAP(ssid, password, channel, hidden)
khi cung cấp chính xác kênh truyền (1..13), mặc định 1 và ẩn nó đi, không hiển thị ra khi hidden = true
Nhớ rằng ssid
sử dụng chuỗi ký tự không quá 63, và mật khẩu (có thể không cần) với tối thiểu 8 ký tự cho mạng WPA2-PSK
Hàm softAP
sẽ trả về true
nếu khởi tạo thành công mạng WiFi
Lưu ý rằng, mạng WiFi khởi tạo bởi hàm softAP sẽ sử dụng địa chỉ IP mặc định là 192.168.4.1 , và chạy 1 DHCP Server cung cấp dải IP cho client kết nối tới là 192.168.1.x . Bạn có thể thay đổi địa chỉ IP mặc định này bằng hàm softAPConfig . Ngoài ra, ESP8266 có thể chạy được song song 2 chế độ Station và Access Point, nhưng lưu ý, chỉ được 1 channel, và channel của softAP sử dụng bởi channel của Station.
|
WiFi.softAPConfig (local_ip, gateway, subnet)
dùng để cấu hình IP cho Access Point
192.168.4.22
IPAddress local_IP(192,168,4,22);
IPAddress gateway(192,168,4,9);
IPAddress subnet(255,255,255,0);
WiFi.softAPConfig(local_IP, gateway, subnet)
WiFi.softAPgetStationNum()
sẽ trả về số lượng client đang kết nối tới Access Point
Khởi tạo mạng WiFi sử dụng ESP8266
Với đoạn code này, bạn có thể tạo ra một mạng WiFi cục bộ có SSID là AP-XXXXXX
và có thể dùng máy tính để kết nối trực tiếp vào với password là password
#include <ESP8266WiFi.h>
const char *password = "password";
void setup() {
Serial.begin(115200);
Serial.print("Configuring access point...");
char ssid[64];
sprintf(ssid, "AP-%06X", ESP.getChipId());
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
}
void loop() {
Serial.printf("Stations connected = %d\n", WiFi.softAPgetStationNum());
delay(3000);
}
Nạp chương trình cho board NodeMCU và xem kết quả hiển trị trên màn hình Monitor. Lúc này, bạn có thể tìm thấy SSID do board NodeMCU phát ra bằng bất kỳ thiết bị có thể kết nối Internet nào.