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通讯软体