6. WiFi_BBM 工程说明
6.1. 工程简介
WiFi_BBM 实现了婴儿监视器应用,提供稳定的无线视频传输、双向语音对讲、多设备绑定等功能。该工程适用于家庭育儿监控、远程看护等场景。
主要功能包括:
多设备绑定配对
支持发送端(TX)与接收端(RX)的一对多绑定。
支持发送端(TX)与手机APP进行连接。
RX 设备可远程控制 TX 设备的图传、录像、回放等功能。
实时无线图传
分辨率支持 1280X720,帧率可达 25fps。
稳定的视频流传输,画面流畅。
RX 设备支持一对多连接,可自由切换不同 TX 设备的视频画面。
可进行显示模式切换: - 全屏显示:独立查看 TX 设备的实时视频。 - 多设备分屏显示(画中画):同时查看多个 TX 设备的视频画面。
双向语音对讲
低延迟语音通信,实现远程互动。
SD 卡录像
RX 设备可远程控制 TX 设备进行录像。
RX 设备可在本地保存接收到的实时视频流。
SD 卡文件预览与视频回放
RX 设备可本地预览和回放存储的录像文件。
RX 设备可远程访问 TX 设备的录像,并进行回放。
6.2. 示例工程
具体的示例工程代码详见 apps/wifi_bbm
。
6.3. 操作说明
6.3.1. 发送端(TX)与接收端(RX)连接操作说明
代码烧入
在编译固件前,需要修改
wifi_bbm/include/app_config.h
文件中的CONFIG_BBM_RX
/CONFIG_BBM_TX
宏定义,以分别编译 RX(接收端)和 TX(发送端)固件。编译完成后,将对应固件烧录至相应设备。
设备启动
固件烧入设备后,RX 设备的默认开机启动的 UI 页面默认是实时流页面,以便设备配对后每次开机能快速显示视频图像。然而,首次开机时由于没有设备配对,屏幕将显示黑屏。此时,需要通过按键或触摸操作 UI 返回 `Home` 页面。
📌 ** Home 界面:**
配对流程
在 Home 页面选择 配对 选项,进入配对页面。
配对页面可选择配对通道 0-5,每个 RX 设备最多支持连接 6 个 TX 设备。
选择配对通道后,按照 UI 提示进行操作,进入配对模式。
RX 进入配对模式后,按住 TX 设备的 K5 按键 进行配对。
配对成功后,RX 设备 UI 会提示 配对成功,此时可操作返回至实时流界面,即可查看 TX 设备的摄像头图像。
📌 ** 配对界面:**
6.3.2. 发送端(TX)与手机APP连接操作说明
模式切换
TX设备有两种连接模式:
1.TX设备与RX设备连接
2.TX设备与手机APP连接
这两种模式只能 二选一 。若需要与手机APP连接,请按下TX设备的 K4按键,将WiFi模式切换为 AP模式。再次按下可切换回 Raw模式。
设备连接
在AP模式下,手机连接到TX设备的WiFi后,打开 DVRunning2 APP 即可查看实时流画面。
6.4. 代码流程讲解
6.4.1. 初始化流程讲解
设备启动时,会先执行 wifi_bbm/wifi/wifi_app_task.c
文件中的 wifi_raw_init
函数。该函数主要完成以下初始化工作:
配置基本的网络参数
IP
地址、MAC
地址、WIFI_RAW
配置参数等。根据宏定义初始化不同的服务: - RX 设备:初始化
ctp_client
服务。 - TX 设备:初始化ctp_server
服务、初始化http
服务等。
设备间通过 CTP 命令 进行通信控制。 初始化完成后,设备会执行对应的应用程序(app):
RX 设备 对应的 app:
baby_monitor.c
TX 设备 对应的 app:
bbm_video_rec.c
6.4.2. 配对流程讲解
6.4.2.1. 开机初始化
设备首次烧入代码后,RX 设备的 MAC 地址 由随机数生成,并写入 Flash 保存,后续启动时都会使用该 MAC 地址。
RX 设备的 IP 地址固定为
192.168.1.1
。TX 设备的 MAC 地址和 IP 地址 由 RX 设备 在配对时分配,配对成功后会写入 Flash 保存,后续启动时都会使用该地址。
Note
重新烧入代码可能会导致 Flash 擦除,需要重新配对。
6.4.2.2. 配对流程
RX 设备 进入配对模式时,会执行
bbm_pair.c
文件中的bbm_pairing_task
。TX 设备 进入配对模式时,会执行
wifi_app_task.c
文件中的multicast_recv_task
。
配对过程由 RX 设备主动发送组播包 开始:
组播包的内容由
protocols/pairing_data_model.h
文件中的宏定义确认,采用 JSON 格式。RX 设备发送配对请求包,包内包含: - RX 设备的 MAC 地址/IP 地址 - 要求 TX 设备设置的 MAC 地址/IP 地址
TX 设备收到配对请求包 后,解析并配置网络,然后回发 配对响应包,内容包括: - TX 设备成功设置的 MAC 地址/IP 地址
RX 设备收到配对响应包后进行校验,确认是否与请求包匹配: - 校验成功,RX 设备回发 ACK 包。 - TX 设备收到 ACK 包后,将 MAC 地址和 IP 地址写入 Flash,后续开机时读取使用。
至此,配对流程结束。
Note
本配对方案仅供参考,用户可根据需求自定义通信协议进行配对。
6.4.3. 通讯流程讲解
配对成功后,设备间即可进行正常通讯。
6.4.3.1. 心跳机制
TX 设备 在初始化时会创建
bbm_tx_online_task
线程,定期发送设备在线包(心跳包)。RX 设备 在初始化时会创建
bbm_rx_online_task
线程,用于接收 TX 设备的心跳包。RX 设备接收到 TX 设备的心跳包后,会 注册 CTP 客户端,并与 TX 设备的 CTP 服务器建立连接 ,双方通过 CTP 命令 进行通信和控制。
6.4.3.2. CTP 命令交互
RX 设备 通过
ctp_cli_send
接口发送 CTP 命令。发送命令可参考
bbm_ctp_****.c
等文件。TX 设备 接收到 CTP 命令后,会执行
bbm_ctp_cmd.c
文件中对应命令的回调函数。需要自定义命令时,可在
bbm_ctp_cmd.c
中定义。
6.4.3.3. 回调处理
TX 设备执行完命令后,会回发一个 CTP 包,包内容一般包含TX设备执行操作的返回结果。(TX 设备也可主动发送 CTP 包)。
RX 设备接收到 CTP 包后,会在已注册的 CTP 客户端回调函数 里,根据包类型执行相应操作: - 具体实现见
bbm_ctp_client.c
文件中的bbm_ctp_recv_callback
函数。
6.4.4. 通讯流程示例
以下以 实时流开启流程 为例进行讲解。
6.4.4.1. 实时流启动接口
实时流的启动接口位于 bbm_ctp_rt_stream.c
文件中的 bbm_ctp_rt_start
函数。
构建 CTP 命令: 1. 生成
topic
和content
内容,格式为 JSON。 2.topic
内容为OPEN_RT_STREAM
(即开启实时流命令)。 3.content
内容包含:分辨率
帧率
码流
摄像头 ID 等参数。
📌 RX设备开启实时流函数:
6.4.4.2. TX 设备的处理流程
RX 设备发送 CTP 命令后,TX 设备接收并解析: 1. 解析
OPEN_RT_STREAM
命令,找到对应的回调函数。 2. 该命令在bbm_ctp_cmd.c
文件中对应的回调函数是cmd_put_open_rt_stream
。
📌 TX设备注册的CTP命令表:
调用视频流开启函数: 1. 解析
content
参数,并调用start_app
。 2.start_app
调用bbm_video_rec.c
文件中的video_start
函数,根据解析的信息 开启相应的视频流。 3.最后根据start_app
返回值回发一个 CTP 包给RX设备,RX设备收到后执行相应回调函数。
📌 TX设备开启实时流命令回调:
— 该流程示例展示了 RX 设备如何通过 CTP 命令远程控制 TX 设备开启实时流
6.4.5. WIFI模式切换流程讲解
在 wifi_app_task.c
文件中,提供了以下四个函数:
wifi_raw_init()
/wifi_raw_exit()
用于初始化和退出 wifi_raw 模式。wifi_init()
/wifi_exit()
用于初始化和退出 wifi_ap 模式。
在调用初始化函数(init)进入下一个模式之前,必须先调用当前模式的退出函数(exit)以退出当前模式。
模式切换的代码实现可参考 bbm_video_rec.c
文件中的 switch_wifi_mode()
函数。
📌 TX设备模式切换:
6.5. WIFI_RAW 参数调整讲解
RX设备与TX设备连接时,采用 WIFI 裸包 的形式进行通讯,即不走标准 WiFi 协议。 用户可以根据实际情况调整 WiFi 参数和外接 PA(功率放大器)来优化传输距离。
6.5.1. PA 开启流程
WIFI 驱动层开启 PA 在
wifi_conf.c
文件中,将WIFI_PA_ENABLE
常量设置为1
。启用 PA 增益参数 在
app_config.h
中,定义BBM_WIFI_PA_ENABLE
宏,以区分是否使用 PA 的增益参数。修改 PA 引脚映射 根据实际情况,在板级文件
board_develop.c
中调整 PA 的 引脚映射。
📌 板级初始化函数:
6.5.2. WiFi RAW 参数初始化
wifi_raw_init
(位于wifi_app_task.c
文件): - 负责 WiFi RAW 的通用配置初始化。 - 主要包括:软件/硬件包过滤
包头信息
WiFi 模拟增益
……
📌 WIFI RAW参数配置:
wifi_raw_ethernetif.c
文件: - 进行wifi_raw netif
的初始化。 - 主要配置项:传输速率
通讯信道
重传次数
……
📌 netif初始化配置:
6.5.3. 可调参数
用户可根据实际情况调整以下参数:
WiFi 传输速率、重传次数、通讯信道
位置:
wifi_raw_ethernetif.c
文件,见上图。
数字增益/模拟增益 - 数字增益:
board_develop.c
文件中的wifi_calibration_param
表📌 PA参数表:
模拟增益调整:
wifi_app_task.c
中的wifi_set_pwr
函数📌 模拟增益:
考虑到当两台带PA设备距离过近时,过高的模拟增益可能导致 AGC 的过载,进而引起近距离通讯卡顿,因此建议根据接收到的 RSSI(接收信号强度)动态调整模拟增益,以确保通信稳定性。
📌 根据RSSI值调整模拟增益:
Note
SDK中的默认WIFI参数仅供参考,不一定最优,用户可根据实际情况进行调整。 其他参数用户可根据需要自行调整。