Lập trình ESP32 Smartconfig thiết lập wifi qua app

Lập trình ESP32 Smartconfig

Trong bài này chúng ta sẽ học cách sử dụng ESP32 Smartconfig để thiết lập wifi từ xa cho ESP32 qua app. Đây là một phần rất quan trọng trong các thiết bị IOT sử dụng wifi. Cùng tìm hiểu nhé

Bài 7 Networking trong serie Học ESP32 từ A tới Z

Tại sao chúng ta cần sử dụng smartconfig để thiết lập wifi

Trong các bài hướng dẫn trước chúng ta thường lập trình WiFi.begin(ssid, password) để cài đặt tên và password cho mạch.
Một khá bất tiện đó là, mỗi khi bạn sử dụng wifi khác, bạn phải sửa lại wifi trên code và nạp lại chương trình. Điều này thực sự là không thể khi làm các sản phẩm bán cho khách hàng.

Vì vậy người ta phải tiến hành 1 bước trước khi thiết bị hoạt động đó là thiết lập wifi cho sản phẩm đó, có 2 cách để làm điều này:

  • Dùng AP mode: Như bài ESP32 AP Mode, chung ta có thể phát ra wifi sau đó dùng web browser truy cập vào ip của ESP32 rồi gửi wifi và mật khẩu lên. Thế nhưng khá bất tiện khi người dùng phải thao tác nhiều bước, không thể tự động hóa khi dùng app.
  • Dùng Smartconfig: Cách này rất tiện dụng, có các gói SDK để các bạn có thể truyền wifi và pass từ app xuống ESP32 mà không cần phải thao tác gì khác.

Trong bài này, chúng ta sẽ học cách sử dụng smartconfig trên ESP32.

Smartconfig hoạt động như thế nào?

Smartconfig là gì?

Smartconfig là một kĩ thuật cấu hình wifi của thiết bị mà không cần nạp lại code, sử dụng kết nối giữa wifi của thiết bị với điện thoại để truyền thông tin ssid và pass. Kĩ thuật này được TI tạo ra và đang được áp dụng cho hầu hết tất cả các dòng chip có sử dụng wifi. Với ESP32, ESP8266 và các dòng khác của Espressif họ cũng sử dụng kĩ thuật này và đóng gói thành ESP Touch.

ESP SmartConFig Project Summary

Vậy ưu điểm của SmartConfig là gì ?

  • Dễ dàng cấu hình wifi cho ESP8266,ESP32 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

Smartconfig hoạt động như thế nào?

Có 2 đặc điểm của ESP để có thể sử dụng được kĩ thuật này.

  • ESP có khả năng lắng nghe tất cả các gói tin không dây WiFi xung quanh nó, bao gồm cả các gói tin đã được mã hóa.
  • Các gói tin gửi trong mạng WiFi được mã hóa và không thể đọc được nội dung, tuy nhiên độ dài gói tin là một hằng số.

Tiến trình Smartconfig như sau:

  • ESP ở chế độ lắng nghe gói tin UDP
  • Smartphone app gửi các gói tin UDP được mã hóa
  • ESP nhận bản tin, kiểm tra độ dài của mỗi dữ liệu từ đó suy ra từng kí tự, ghép nối chúng lại sẽ tạo ra 1 chuỗi SSID và PASS
  • ESP chuyển sang STA mode đăng nhập vào mạng wifi với thông tin như trên
  • App nhận được thông tin ESP đăng nhập vào, lưu địa chỉ IP của thiết bị đó lại để giao tiếp

Các tiến trình này là tự động khi các bạn sử dụng gói SDK của ESP. Để tìm hiểu kĩ hơn các bạn vào link bên dưới nhé

Link tham khảo: http://depletionregion.blogspot.com/2013/10/cc3000-smart-config-transmitting-ssid.html

Smartconfig SDK cho thiết bị và app

Espressif cung cấp gói SDK trong link sau: https://www.espressif.com/en/products/software/esp-touch/overview

Ở đây các bạn có thể download các gói thư viện cho Thiết bị và App dùng IOS hoặc Android

esp touch

Trên Arduino giao thức này được viết thành 1 hàm đó là smartconfig rồi nên các bạn không cần download gì cả.

Trong bài này, chúng ta ko viết app nên cũng sẽ dùng các app có sẵn trên CH Play và App Store:

– Trên Android ứng dụng tên là “IOT_Espressif” hoặc “ESP8266 SmartConfig” (vẫn có thể dùng cho ESP32):

https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch

esp8266 smartconfig 2

esptouch

https://play.google.com/store/apps/details?id=com.espressif.iot

– Trên IOS App tên là “Espressif Esptouch”:

https://itunes.apple.com/us/app/espressif-esptouch/id1071176700?mt=8 

esptouch 1

Lập trình Wifi Smartconfig trên ESP32

Một số hàm cần lưu ý khi sử dụng Smartconfig

  • WiFi.mode(WIFI_AP_STA): chuyển ESP32 sang Station mode (Để chạy SmartConfig cần chuyển ESP32 sang Station mode)
  • WiFi.beginSmartConfig(): start SmartConfig
  • WiFi.smartConfigDone(): kiểm tra smartconfig xong hay chưa

Full code

 

#include <Arduino.h>
#include "WiFi.h"
void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_AP_STA);
  /* start SmartConfig */
  WiFi.beginSmartConfig();

  /* Wait for SmartConfig packet from mobile */
  Serial.println("Waiting for SmartConfig.");
  while (!WiFi.smartConfigDone()) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("SmartConfig done.");

  /* Wait for WiFi to connect to AP */
  Serial.println("Waiting for WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi Connected.");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}
void loop() {
  
}

Kết quả

Sau khi nạp chương trình, ESP32 sẽ vào chế độ smart config. Trên app, nhập thông tin mạng và ấn Confirm. ESP32 sẽ nhận được Wifi và kết nối vào.

smartconfig

esp8266 smartconfig

Kết

ESP32 Smartconfig sử dụng cũng tương đối đơn giản, công việc của các bạn là thêm phần này vào app điều khiển cho ứng dụng của các bạn.

Cám ơn bạn đã đón đọc, cùng vào hội Anh Em Nghiện Lập Trình để cùng trao đổi nhé

5/5 - (2 bình chọn)

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *