Cập nhật firmware từ xa cho esp8266/esp32 (OTA) qua web server

esp ota webserver

Giới thiệu

Khi làm các ứng dụng IoT và bàn giao sản phẩm cho khách hàng, 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 hàng 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 hàng 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 hàng, khách hàng 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

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

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ờ, chúng ta 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

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 !

 

Từ tác giả:

Nếu có bất kì thắc mắc nào trong bài viết, vui lòng để lại comment dưới mỗi bài ! Mình sẽ không trả lời thắc mắc của các bạn ở facebook hay email !

Nếu trong phần code bạn nhìn thấy nhưng thứ kiểu như &amp; thì đó là lỗi hiển thị, cụ thể 3 kí tự < > & bị biến đổi thành như thế
&amp; là &
&lt;  là <
&gt; là >

Giới thiệu Đào Nguyện 80 bài viết
DIY,chế cháo, viết blog chia sẽ kiến thức về lập trình,điện tử - IoT. Rất mong được giao lưu, kết bạn với các bạn cùng đam mê. Địa chỉ Facebook: https://www.facebook.com/nguyendao207