SmartConfig với ESP8266
SmartConfig là gì ? Làm sao để sử dụng SmartConfig với ESP8266 ?
Hẳn là các bạn có nghe về cấu hình tự động rồi chứ ? Bạn nghĩ thế nào nếu chỉ với một chiếc điện thoại smartphone là có thể làm cho ESP8266 có thể kết nối vào wifi được ? Mình cùng thử cách làm thôi
Smartconfig ?
Smartconfig là một khái niệm được nhắc đến khi người dùng muốn cấu hình thông tin cho thiết bị dùng WiFi (ở đây là ESP8266) có khả năng kết nối nhanh chóng đến Internet nhất thông qua các thao tác trên chính thiết bị (điện thoại) của họ.
Chúng ta cùng xem qua một hình minh họa để hiểu thêm
Để hiểu một cách đơn giản thì Smart config nghĩa là chúng ta gửi thông tin mạng wifi (bao gồm tên wifi và password wifi) cho ESP thông qua smartphone thay cho cách thông thường là phải khai báo thông tin này trong chương trình và nạp firmware xuống.
Vậy ưu điểm của SmartConfig là gì ?
- Dễ dàng cấu hình wifi cho ESP8266 thông qua smartphone.
- Không cần phải nạp lại code để cấu hình
- Có thể dùng Smartconfig để cấu hình nhiều thiết bị một lúc
Chuẩn bị
Phần cứng
Node MCU hoặc ESP8266 phiển bản bất kỳ + USB2UART modul (mình dùng NodeMCU)
Smartphone 😀 (mình dùng Android phone)
Phần mềm
Android: tại ESP-Touch Android hoặc tải trực tiếp từ Playstore ESP8266 SmartConfig , 2 phiên bản giống nhau về cách smartconfig nên các bạn yên tâm sử dụng
iOS: bạn có thể tải trên Appstore.
Cách SmartConfig cho ESP8266 ?
Trước hết cần có chương trình để nạp xuống ESP8266 trước, mình giải thích trong code cho các bạn tiện theo dõi.
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
WiFiUDP Udp;
void setup() {
int cnt = 0;
//Khởi tạo baud 115200
Serial.begin(115200);
//Mode wifi là station
WiFi.mode(WIFI_STA);
//Chờ kết nối
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if(cnt++ >= 10){
WiFi.beginSmartConfig();
while(1){
delay(1000);
//Kiểm tra kết nối thành công in thông báo
if(WiFi.smartConfigDone()){
Serial.println("SmartConfig Success");
break;
}
}
}
}
Serial.println("");
Serial.println("");
WiFi.printDiag(Serial);
// Khởi tạo server
Udp.begin(49999);
Serial.println("Server started");
// In địa chỉ IP
Serial.println(WiFi.localIP());
}
void loop() {
// Nhận gói tin gửi từ ESPTouch
Udp.parsePacket();
//In IP của ESP8266
while(Udp.available()){
Serial.println(Udp.remoteIP());
Udp.flush();
delay(5);
}
}
Tiếp theo chúng ta thực hiện theo các bước sau
- Nạp chương trình trên cho ESP để kích hoạt chức năng Smart Config.
- Kết nối smartphone với mạng wifi hiện có.
- Mở ESP-TOUCH App đã cài đặt trên smartphone.
- Kiểm tra SSID (tương ứng với tên Wifi) và mật khẩu (ở đây là mật khẩu wifi của bạn) để kết nối tới thiết bị.
- Thực hiện ấn nút trong thời gian ngắn trên NodeMCU sau đó thả ra sẽ có thông báo.
Các bạn có thể theo dõi hình bên dưới để biết cách thao tác
Về cơ bản, các ứng dụng SmartConfig sẽ gửi các gói UDP theo chu kì lặp lại, ESP8266 sẽ giám sát mạng và tìm thấy các gói được gửi lặp đi lặp lại và lấy thông tin từ đó.
Tạm kết
Coi như chúng ta đã có thể cấu hình nhanh chóng thông tin wifi cho ESP8266 mà không cần phải tác động thay đổi vào code firmware gì nhiều, việc này rất thuận lợi trong trường hợp bạn mang món đồ có dùng ESP8266 tới nhà bạn gái mà không kết nối được wifi, giờ không lẽ bảo bạn gái đi cài Arduino vào để anh lập trình điều chỉnh tên wifi, password, quá vất vả phải không ? Giờ thì bạn có thể ứng dụng nó vào các bài hướng dẫn khác của mình rồi.
Nếu các bạn muốn tìm hiểu thêm về code android ios chương trình smartconfig bạn có thể tham khảo ở đây