发帖
1 0 0

小安派·BW21-CBV-KIt OTA平台搭建及初体验

LV36
论坛元老

10

主题

204

回帖

6239

积分

论坛元老

积分
6239
小安派·BW21-CBV-KIt 48 1 前天 22:15
本帖最后由 LV36 于 2025-3-23 22:17 编辑

目标:搭建小安派·BW21-CBV-KIt OTA平台并以NTPClient为例进行在线OTA升级

参考文档:
【教程】小安派BW21-CBV-Kit——OTA
ameba-OTA-UI
与参考文档重复的图不在列出。

以64 位 Windows 10 22H2平台通过VMware-workstation安装ubuntu-22.04.5为例

一、搭建小安派·BW21-CBV-KIt OTA平台
(1)安装VMware-workstation
下载链接:https://softwareupdate.vmware.com/cds/vmw-desktop/ws/17.6.3/24583834/windows/core/VMware-workstation-17.6.3-24583834.exe.tar
复制粘贴至浏览器网址栏回车即可下载,或点击本帖超链接下载。
17.6.3为版本号,可替换。下载解压后得到exe文件,双击以默认设置安装即可。


(2)安装ubuntu-22.04.5
国内镜像:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04.5/ubuntu-22.04.5-desktop-amd64.iso
安装可参照教程:https://blog.csdn.net/qq_62888264/article/details/145102532,或观看帖子附加视频。总体来看,只需选择ISO镜像和虚拟机文件所在文件夹,在虚拟机开启后设置用户名、密码等外,其他按需设置获默认即可。全程联网安装,安装后vm-tool可用,支持主机与虚拟机直接复制粘贴。
本虚拟机用户名、密码均为ubuntu。


(3)搭建ameba-OTA-UI平台
1)设置运行环境
打开ubuntu-22.04.5虚拟机,进入桌面后,单击右键,点击Open in Terminal打开命令行终端,输入
  1. sudo apt install git curl
复制代码

并回车,输入密码ubuntu,以管理员模式安装git和curl命令。安装完成后执行
  1. git clone https://github.com/Ameba-AIoT/ameba-OTA-UI.git
复制代码
拉取ameba-OTA-UI文件夹。切记不使用sudo或在其他其他文件夹中git,以免因文件及文件夹权限问题导致安装异常。
2025-03-23_211242.png
完成后,执行
  1. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
复制代码
如失败,可执行
  1. sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
复制代码
完成后,执行
  1. export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
  2. [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
复制代码
完成后,执行
  1. nvm install v18.20.3
  2. npm install npm@10.8.1 -g
复制代码
安装Node.js ,完成后可通过执行
  1. node -v
  2. npm -v
复制代码
判断是否安装成功及版本号是否正确。
2025-03-23_211135.png

2)安装依赖
继续执行
  1. cd ameba-OTA-UI/
  2. npm i
复制代码
等待安装结束。
2025-03-23_211011.png

3)运行Node.js
执行
  1. npm run build
  2. npm start
复制代码
等待出现访问链接。
2025-03-23_210912.png

可直接下载虚拟机,使用VMware-workstation打开,选择“我已复制该虚拟机”。进入桌面后,双击进入ameba-OTA-UI文件夹,单击右键,点击Open in Terminal,执行
  1. npm start
复制代码
即可启动服务。

查询IP:单击右键,点击Open in Terminal,执行
  1. ifconfig
复制代码

ens33第2行inet即为本机IP,如10.110.28.211、192.168.3.248

在浏览器地址栏输入IP:3000回车即可访问服务页面。
2025-03-23_211453.png
2025-03-23_211604.png

二、上传OTA程序
使用数据线连接PC和BW21-CBV-Kit(安装好天线模块),选择“文件”->“示例”->“AmebaOTA”->“OTA”,注意在新打开的代码页面中配置“工具”->“NN模型加载”->“SD卡”、“工具”->“OTA模式”->“启用”(重要:每次新打开页面均需重新设置!!!漏操作会导致失败)
修改AP修改名称和密码,和电脑处于同一个局域网,并设置HTTP服务器修改端口号和IP地址,即ifconfig命令获取的IP,端口3000
示例

#include "OTA.h"
#include "WiFi.h"



char ssid[] = "01";    // your network SSID (name)
char pass[] = "12345678";         // your network password
int status = WL_IDLE_STATUS;


int port = 3000;                  // your server port number
char* server = "192.168.3.248";    // your server ip address


OTA ota;


void setup()
{
    Serial.begin(115200);


    // Connection to internet
    while (status != WL_CONNECTED) {
        Serial.print("Attempting to connect to WPA SSID: ");
        Serial.println(ssid);
        status = WiFi.begin(ssid, pass);
        delay(2000);
    }


    // Set up the threads
    ota.start_OTA_threads(port, server);
}


void loop()
{
    // Empty or add non-blocking code here
}





关键代码

#include "OTA.h"
char ssid[] = "01";
char pass[] = "12345678";
int port = 3000;
char* server = "192.168.3.249";
    ota.start_OTA_threads(port, server);

按住下载按钮,然后按下并松开复位按钮,最后松开下载按钮,进入烧录模式。点击 "项目"->"上传",程序自动编译并上传,上传后点击复位按钮重启开发板。
"项目"->"串行监视器"中可查看开发板IP等信息。
2025-03-23_211732.png

转到BW21-CBV-Kit OTA Web UI http://IP:3000/可查看连接的设备。
2025-03-23_211817.png

三、OTA升级
NTPClient为例。
“文件”->“示例”->“NTPClient”->“基础”
修改代码

/*


Example guide: https://www.amebaiot.com/en/amebapro2-arduino-ntpclient/
*/
#include <OTA.h>
#include <NTPClient.h>
#include <WiFi.h>
#include <WiFiUdp.h>


char ssid[] = "01";
char pass[] = "12345678";


WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP);


OTA ota;


int port = 3000;
char* server = "10.110.28.211";


void setup()
{
    Serial.begin(115200);


    WiFi.begin(ssid, pass);


    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }


    timeClient.begin();


    ota.start_OTA_threads(port, server);
}


void loop()
{
    timeClient.update();


    Serial.println(timeClient.getFormattedTime());


    delay(1000);
}


新增加的代码均为上例的关键代码。


配置“工具”->“NN模型加载”->“SD卡”、“工具”->“OTA模式”->“启用”,点击 "项目"->"编译"。编译完成后,在C:\Users\AppData\Local\Arduino15\packages\realtek\tools\ameba_pro2_tools\X.X.X中查找ota.bin文件。注意Users为当前用户名,如Administrator,需按需替换,教程中为ameba_pro_tools文件夹,实际2.3.4版本为ameba_pro2_tools文件夹,目前对应X.X.X为1.4.1


ota.bin文件托入网页左侧区域,点击Upload,右侧Start OTA变为可用,勾选需要升级的设备,点击Start OTA即可,OTA State由OTA_STATE_IDLE变为,可在"项目"->"串行监视器"中查看具体信息,网页无法返回是否OTA失败(第一次失败是因为以为各页面“工具”->“NN模型加载”->“SD卡”、“工具”->“OTA模式”->“启用”配置通用,实际每个页面都需要重新配置)的提示,有待进一步完善和改进,目前只能通过"串行监视器"确定是否OTA成功。
2025-03-23_211920.png 2025-03-23_212019.png 2025-03-23_212359.png

成功后
"串行监视器"中还会以秒为间隔输出当前时间。


以上为PC和开发板处于同一网段(192.168.3.X)时的OTA测试,OTA正常,速度也比较快。
将PC与路由器调整为同级(10.110.28.X),开发板连接路由器(192.168.3.X),即局域网不同网段。修改相应程序代码
char* server = "10.110.28.211";

并重新进入烧录模式,TTL上传烧录程序,仍可正确识别开发板,只是显示IP为路由器IP。手头只有一个,不知道2个及以上开发板时如何显示和区分。
2025-03-23_212455.png
如PC改为公网IP,估计显示网页显示开发板出口公网IP地址,不知道2个及以上开发板时如何显示和区分。

总结:小安派·BW21-CBV-KIt OTA平台搭建还是比较容易的,虚拟机文件体积15G左右,还是比较大的,配置所需时间不到半小时。OTA下发刷机用时也比较短,比较方面。需注意,操作过程中,每个新弹出的界面均需配置“工具”->“NN模型加载”->“SD卡”、“工具”->“OTA模式”->“启用”,TTL烧录前需按住下载按钮,然后按下并松开复位按钮,最后松开下载按钮,进入烧录模式。所需关键代码为
#include "OTA.h"
char ssid[] = "01";
char pass[] = "12345678";
int port = 3000;
char* server = "192.168.3.249";
    ota.start_OTA_threads(port, server);


搭建视频:
小安派·BW21-CBV-KIt OTA平台搭建
小安派·BW21-CBV-KIt 局域网相同网段在线OTA--以NTPClient为例
小安派·BW21-CBV-KIt 局域网跨网段在线OTA--以NTPClient为例


虚拟机:通过网盘分享的文件:Ubuntu22.04-ameba-OTA-UI
链接: https://pan.baidu.com/s/1CMhP2wHPDXdZcJmB4ET7Eg?pwd=wp6m 提取码: wp6m






──── 0人觉得很赞 ────
2025-03-23_211343.png

使用道具 举报

不错不错!
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28167 个
  • 话题数: 39937 篇