Giới thiệu

Khi làm các ứng dụng IoT và bàn giao sản phẩm cho khách, bạn có thể gặp phải trường hợp code chạy chưa đúng yêu cầu hoặc khách muốn nâng cấp thêm 1 số tính năng. Vậy chẳng lẽ phải yêu cầu khách gửi lại sản phẩm để bạn nạp code lại ? Vì lí do đó, việc tích hợp chức năng OTA vào hệ thống của bạn là rất cần thiết.

OTA là gì

OTA (Over-the-air) là hình thức thiết bị tự nạp firmware cho chính nó qua môi trường mạng không dây như wifi … mà không cần phải kết nối với máy tính. Thiết bị cần có 1 không gian bộ nhớ trống để lưu firmware mới vào đó, sau đó kiểm tra tính toàn vẹn của fimrware, nếu chính xác mới tiền hành update vào phân vùng chính. Do vậy, để thực hiện OTA, bạn bắt buộc phải để dành 1 vùng bộ nhớ riêng cho nó tương ứng với kích thước code dự kiến mà bạn sẽ viết

Cấu hình phần vùng

Trong mục Flash Size. Bạn có thể chọn kích thước phần vùng OTA tùy theo size code của bạn

Lập trình tích hợp OTA vào hệ thống

Có 2 cách chính

  1. Tạo 1 webserver trên esp8266/esp32, firmware sẽ được gửi cho khách, khách truy cập vào địa chỉ ip của esp và upload fimrware lên
  2. Firmware sẽ được lưu trên máy chủ cloud. ESP sẽ tự truy cập vào máy chủ để tải firmware về. Với cách này mình đã có hướng dẫn tại đây: http://iot47.com/iot-bai-10-cap-nhat-chuong-trinh-cho-esp8266-tu-xa-qua-internet-fota/

Chuẩn bị

Các bạn chuẩn bị 1 esp8266 hoặc esp32, mở arduino ide và cài thư viện wifi ota tại đây: https://github.com/daonguyen207/IOT47_wifi_ota

https://app.box.com/s/d3w6migp7fz9r3lyrlfq1i86cf8d3l2h

Để thư viện này hoạt động, bạn cũng cần cài thêm ESPAsyncWebServer.h

#include <WiFi.h>#include <AsyncTCP.h>#include <ESPAsyncWebServer.h>#include “iot47_wifi_ota.h”const char* ssid = “***”;const char* password = “***”;AsyncWebServer server(80);void setup(){  Serial.begin(115200);  WiFi.begin(ssid, password);  while (WiFi.status() != WL_CONNECTED) {    delay(1000);    Serial.print(“.”);  }  Serial.println(WiFi.localIP());  iot47_wifi_ota_begin(&server);  server.begin();}void loop(){  iot47_wifi_ota_loop();}

Bây giờ chỉ cần truy cập vào địa chỉ ip của esp bằng trình duyệt web, ví dụ ip của mình là 192.168.1.6 thì mình sẽ gõ 192.168.1.6/update vào trình duyệt web

Lấy file bin

Bây giờ, mình sẽ lấy file bin từ arduino, đường dẫn tới file .bin này được hiển thị trong log khi ấn biên dịch

TRUNG TÂM SỬA CHỮA ĐIỆN TỬ QUẢNG BÌNH
MR. XÔ - 0901.679.359 - 80 Võ Thị Sáu, Phường Quảng Thuận, tx Ba Đồn, tỉnh Quảng Bình
Sửa điện tử tại Quảng Bình

Nếu bạn không tìm thấy, hãy bật show log trong phần config của ide

Bây giờ, chỉ việc tải firmware lên là sẽ hoàn tất quá trình OTA !

Trả lời

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 *

7 + 1 =