Ameba Arduino: [RTL8195AM] [RTL8710AF] Cloud OTA

材料準備
  • Ameba x 1
  • Apache Web Server
範例說明
這個範例裡說明了如何使用AMEBA從 Web Server上下載firmware完成遠端OTA的功能。此專案由Maker Rododo貢獻 http://www.rododo.farm/
  • 安裝Web Server
本範例需先安裝Web Server,在此先以Windwos系統安裝Apache Web Server為例,至Apache Lounge website下載httpd-2.4.29-Win64-VC15.zip https://www.apachelounge.com/download/ 1 下載完成並解壓縮後,將裡頭的Apache24目錄拷貝到C:\根目錄之下 接下來以系統管理員權限開啟CMD命令提示字元工具 輸入:
C:\Apache24\bin\httpd -k install
啟動Apache:
net start apache2.4
1 測試: 接著打開瀏覽器,於網址列輸入
http://127.0.0.1/
1 如果Apache Web Server有順利啟動,網頁上會顯示It works!
  • 製作OTA firmware
在這裡我們要先作一簡單的OTA firmware,用來驗證從Web Server下載後,是否有燒錄完成,並順利執行其功能。 在此我們打開Arduino IDE,並且新增草槁文件,如下圖,在此我們只需在loop()裡每隔1秒鐘就在console裡印出Hello From Ameba!! 1 接著執行編譯,進行編譯後我們需要找到用於OTA的 ota.bin,接著我們打開安裝Arduino Ameba SDK的資料夾,如果當初安裝Arduino IDE的路徑沒有特地改變,因是在:
C:\Users\yourname\AppData\Local\Arduino15\packages\realtek\tools\ameba_tools\1.1.0
應會找到ota.bin,把他備份下來,並且放置到Apache Web Server的htdocs目錄裡(C:\Apache24\htdocs)。
  • 製作checksum文件
此範例在從遠端OTA之前,會先藉由checksum來檢查ota.bin是否正確,在此可以使用Github上提供checksum tool: https://github.com/ambiot/amb1_arduino/raw/master/Arduino_package/ameba_tools_windows/tools/windows/checksum.exe 下載checksum.exe並拷貝至Apache Web Server的htdocs目錄裡(C:\Apache24\htdocs) 打開cmd命令提示字完,切換到C:\Apache24\htdocs目錄,輸入:
Checksum.exe ota.bin
1 其中203df9即是由checksum產生的檢查碼。將檢查碼轉成10進制後,開啟記事本在C:\Apache24\htdocs目錄裡新增check.txt,並存進此10進制數值,如下圖: 1
  • 範例操作
我們需要的library有: https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/AmebaCloudOTA.zip 安裝library的方式請參考Arduino官方網站的教學文章將zip檔的library加入Ameba: https://www.arduino.cc/en/Guide/Libraries#toc4 匯入成功後,我們打開範例 “File” -> “Examples” -> “AmebaCloudOTA” -> “ota_cloud”, 輸入欲連線的AP SSID及Password,另外還需輸入Web Server所在的IP Address及Port 1 編譯並上傳至Ameba之後按下Reset按鈕,就可以開始從Web Server下載OTA 接著我們打開終端機軟體 1 WiFi連線成功後,會先進行check.txt的檢查 1 開始download ota.bin 1 下載結束,進行checksum的檢驗,接著開始OTA程序,如有成功,則燒錄完成就會自動重新啟動,並印出” Hello from Ameba!!!” 1
程式碼說明
int checksum = OTA.gatherOTAinfo(REMOTE_ADDR,"/check.txt", REMOTE_PORT);
if( checksum != -1) Serial.println("info_ok");
在setup()裡,一開始藉由OTA.gatherOTAinfo來取得遠端server上check.txt裡頭的checksum資訊,此方法中需填入web server address及port
請先確認已安裝QQ通訊軟體