Phần 3: Thiết lập server OTA cho ESP32
1. Giới thiệu về OTA và lợi ích của nó, 2. Cài đặt server web đơn giản trên máy tính hoặc VPS, 3. Tạo thư mục chứa firmware trên server, 4. Tải firmware lên server, 5. Kiểm tra truy cập server từ ESP32.
Phần 3: Thiết lập server OTA cho ESP32
1. Giới thiệu về OTA và lợi ích của nó
OTA (Over-The-Air) là một kỹ thuật cho phép cập nhật phần mềm hoặc firmware cho thiết bị IoT mà không cần phải kết nối vật lý. Điều này đặc biệt hữu ích cho các thiết bị được lắp đặt ở những vị trí khó tiếp cận, như hộp điều khiển cửa cuốn hay trạm đo nhiệt độ ngoài trời. Với OTA, người dùng có thể:
- Cập nhật firmware từ xa: Tiết kiệm thời gian và công sức khi không cần mang thiết bị đến nơi sửa chữa.
- Sửa lỗi và nâng cấp tính năng: Dễ dàng cải thiện hiệu suất và tính năng của thiết bị mà không cần tháo rời.
- Giảm chi phí bảo trì: Giảm thiểu chi phí vận hành và nâng cao trải nghiệm người dùng.
Trong phần này, chúng ta sẽ tìm hiểu cách thiết lập một server OTA đơn giản để cập nhật firmware cho thiết bị ESP32 qua Internet.
2. Cài đặt server web đơn giản trên máy tính hoặc VPS
Để thiết lập server OTA, bạn có thể sử dụng một máy tính cá nhân hoặc một VPS (Virtual Private Server). Chúng ta sẽ sử dụng Python để tạo một server web đơn giản. Dưới đây là các bước thực hiện:
- Cài đặt Python nếu chưa có. Bạn có thể tải Python từ trang chính thức.
- Mở terminal hoặc command prompt.
- Đi đến thư mục mà bạn muốn tạo server. Ví dụ, nếu bạn muốn tạo server trong thư mục
ota_server, bạn có thể tạo thư mục này và di chuyển vào đó. - Chạy lệnh sau để khởi động server:
python -m http.server 8000
Server sẽ được khởi động trên cổng 8000. Bạn có thể truy cập server bằng cách vào trình duyệt và nhập http://localhost:8000.
3. Tạo thư mục chứa firmware trên server
Tiếp theo, bạn cần tạo một thư mục trên server để chứa firmware mà bạn sẽ tải lên. Giả sử bạn muốn tạo thư mục có tên firmware, hãy làm theo các bước sau:
- Tạo thư mục
firmwaretrong thư mục server của bạn: - Thư mục này sẽ được sử dụng để chứa tất cả các file firmware mà bạn muốn thiết bị ESP32 của mình tải về.
mkdir firmware
4. Tải firmware lên server
Bây giờ, bạn cần tải firmware mà bạn muốn cập nhật lên server. Giả sử bạn đã có file firmware có tên esp32-home-security_v1.2.0.bin. Hãy làm theo các bước dưới đây:
- Di chuyển file firmware vào thư mục
firmwaremà bạn đã tạo trước đó. - Bây giờ, bạn có thể kiểm tra bằng cách truy cập
http://localhost:8000/firmware/trên trình duyệt. Bạn sẽ thấy file firmware đã được tải lên.
mv esp32-home-security_v1.2.0.bin firmware/
5. Kiểm tra truy cập server từ ESP32
Cuối cùng, bạn cần kiểm tra xem thiết bị ESP32 có thể truy cập server và tải firmware hay không. Dưới đây là một đoạn mã mẫu để kiểm tra:
#include <WiFi.h>
#include <HTTPUpdate.h>
const char* ssid = "Tên_SSID";
const char* password = "Mật_khẩu_SSID";
const char* firmwareUrl = "http://<địa_chỉ_IP_của_bạn>:8000/firmware/esp32-home-security_v1.2.0.bin";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Đang kết nối đến WiFi...");
}
Serial.println("Kết nối thành công!");
t_httpUpdate_return ret = httpUpdate.update(firmwareUrl);
switch (ret) {
case HTTP_UPDATE_FAILED:
Serial.printf("Cập nhật thất bại! Mã lỗi: %d\n", httpUpdate.getLastError());
break;
case HTTP_UPDATE_OK:
Serial.println("Cập nhật thành công!");
break;
}
}
void loop() {
// Không làm gì trong vòng lặp
}
Thay thế Tên_SSID và Mật_khẩu_SSID bằng thông tin mạng WiFi của bạn. Đảm bảo rằng bạn đã thay thế <địa_chỉ_IP_của_bạn> bằng địa chỉ IP của máy tính hoặc VPS đang chạy server.
Lưu ý: Đảm bảo rằng firewall của bạn không chặn cổng 8000 và thiết bị ESP32 có thể truy cập mạng Internet.
Với những bước trên, bạn đã thiết lập thành công server OTA cho ESP32. Bạn có thể dễ dàng cập nhật firmware cho thiết bị của mình từ xa mà không cần phải tiếp cận vật lý. Trong phần tiếp theo, chúng ta sẽ tìm hiểu cách tích hợp OTA vào trong mã nguồn của thiết bị ESP32 để tự động kiểm tra và cập nhật firmware.
