ตั้งค่า ESP32 เพื่อ upload แบบ OTA

    โปรเจ็ค ota การทำงานจะเป็นการใช้ HTTP get ไปยัง url เพื่อ download ไฟล์ .bin เข้ามา program ลงบอร์ด  การใช้งานเป็นดังนี้

1. เลือกโปรเจ็คที่เราต้องการโปรแกรมแบบ ota เช่น ota_blink โดยโปรเจ็คนี้มีการทำงานของโค้ดเป็นการสั่งให้ไฟกระพริบตามความถี่ที่เรากำหนดในโค้ด  เมื่อกระพริบจนถึงเวลาที่กำหนดในโค้ดแล้วจะทำการ download โค้ดใหม่เข้ามาโปรแกรม 

2. เข้ามายังไดเรกทอรี่โปรเจ็คที่เราต้องการโปรแกรม ใช้คำสั่ง make เพื่อสร้างไฟล์ .bin จากนั้นเข้าไปในไดเรกทอรี่ build แล้วใช้คำสั่ง python -m SimpleHTTPServer 8070 เพื่อรัน server ที่ localhost:8070

3. เข้ามายังไดเรกทอรี่ของโปรเจ็ค ota แล้วใช้คำสั่ง make menuconfig แล้วตั้งค่า ดังนี้
  ( ชื่อ Wifi )                                                  WiFi SSID                                       
  ( รหัส Wifi )                                               WiFi Password                                   
  ( ip ของ server ที่เราจะดาวน์โหลดโค้ด ) HTTP Server IP                                 
  ( port default คือ 8070 )                              HTTP Server Port                                       
  ( ชื่อไฟล์ .bin ที่เราต้องการโปรแกรม )   HTTP GET Filename 

ให้ตั้งค่า Partition Table (Factory app, two OTA definitions) เพื่อใช้งานโปรแกรมแบบ ota แล้วตั้งค่า flash size ที่เท่ากับขนาด flash size ของบอร์ดด้วย

Build in Partition Talble

- Single factory app, no OTA
# Espressif ESP32 Partition Table
# Name,   Type, SubType, Offset,  Size
nvs,      data, nvs,     0x9000,  0x6000
phy_init, data, phy,     0xf000,  0x1000
factory,  app,  factory, 0x10000, 1M
เป็นการโปรแกรมแบบทั่วไปใช้สาย serial ตัวโปรแกรมจะอยู่ใน factory app แล้วทำการรันหลังจากโปรแกรม

- Factory app, two OTA definitions
# Espressif ESP32 Partition Table
# Name,   Type, SubType, Offset,  Size
nvs,      data, nvs,     0x9000,  0x4000
otadata,  data, ota,     0xd000,  0x2000
phy_init, data, phy,     0xf000,  0x1000
factory,  0,    0,       0x10000, 1M
ota_0,    0,    ota_0,   ,        1M
ota_1,    0,    ota_1,   ,        1M
  โปรแกรมแบบ ota จะมีการแบ่ง partition ota_0 กับ ota_1 เริ่มต้นโปรแกรมผ่านสาย Serial จากนั้นเมื่อโปรแกรม ota ทำงานจะทำการดาวน์โหลดโค้ดแล้วนำมาใส่ใน ota_0 แล้วรันโปรแกรมใน ota_0 ด้วย  ต่อมาเมื่อดาวน์โหลดโปรแกรมใหม่เข้ามาโค้ดจะถูกนำไปใส่ใน ota_1 และโปรแกรมก็เปลี่ยนไปรันที่ ota_1 ทำงานสลับ partition เมื่อมีการดาวน์โหลดโปรแกรมใหม่เข้ามา
factory app จะไม่รันเมื่อมีโปรแกรมใน ota_0, ota_1
ota จะไม่ update factory app

- Custom partition table CSV
ใช้ไฟล์ csv ในการกำหนด partition

phy_init is for storing PHY initialisation data
nvs (2) is for the Non-Volatile Storage (NVS) API. ใช้เก็บข้อมูล WiFi หรือเป็น Storage data ได้แนะนำว่าต้องการอย่างน้อย 0x3000 bytes

4. เมื่อตั้งค่าใน menuconfig เสร็จแล้วให้ใช้คำสั่ง make erase_flash flash เพื่อทำการ clear flash ก่อนแล้วค่อยทำการ flash โปรแกรมเข้าไป  เมื่อ flash เสร็จแล้วใช้คำสั่ง flash monitor ได้เพื่อดูพอร์ต Serail ของโปรแกรม

1 ความคิดเห็น :

Write ความคิดเห็น