您的位置:首页 > 教育 > 培训 > 北京王府井大楼_安居客房产官方网站_营销策划思路及方案_最新舆情信息网

北京王府井大楼_安居客房产官方网站_营销策划思路及方案_最新舆情信息网

2025/2/24 9:33:40 来源:https://blog.csdn.net/bit_mike/article/details/143193725  浏览:    关键词:北京王府井大楼_安居客房产官方网站_营销策划思路及方案_最新舆情信息网
北京王府井大楼_安居客房产官方网站_营销策划思路及方案_最新舆情信息网

目录

引言

功能简介

程序分析

操作步骤

简单测试

结语


引言

WS63E星闪模块有个特色功能就是雷达运动感知,检测物体是否有运动,作用距离不超过6米。hi3863芯片本身不带雷达功能,是模块提供的相关功能。海思还有个WS63星闪模块,没有雷达感知能力。

功能简介

从开发板的图片上可以看到,右下角有个安装雷达天线的地方,使用使用1代IPEX接口。润和的套件里面没有带天线,从我的测试看没有天线,其实雷达功能是不正常的。所以下单了一根天线,今天只是简单分析一下程序,等天线到了之后再详细测试。

海思没有公布雷达运动感知的工作原理,但是这个雷达运动感知功能必须和WiFi 一起工作,如果不启动WiFi,雷达功能就无法启动。WiFi可以工作在STA或AP模式,WiFi不一定要连接上,只要启动即可。我猜测它的雷达功能是利用了WiFi信号的强度进行测试的,我们课题组以前做过利用WiFi信号强度进行室内定位的工作,估计原理差不多。

程序分析

WS63E的代码仓库中包括两组雷达相关的例子:一组是海思官方提供的,测量后根据距离点亮主板上的LED灯;另一组是润和提供的,需要配合交通灯扩展板,检测物体在6M以内是否有运动。如果有则亮绿灯,如果检测物体在0M-1M以内,则亮红灯,如果检测物体在1M-2M以内,则亮绿灯。两组程序的原理是完全一样的。

下面以润和的vendor/HiHope_NearLink_DK_WS63E_V03/demo/radar_led/radar_sta_sample/radar_sta_sample.c为例介绍一下其工作原理。

这段程序是一个嵌入式C语言程序,用于初始化和控制一个雷达系统。它包含了网络接口、WiFi热点配置、雷达服务、GPIO控制等功能。以下是对程序的分析:

  1. 包含头文件:程序包含了多个头文件,这些头文件提供了网络接口、WiFi热点配置、基础类型定义、UART通信、操作系统抽象层、雷达服务、GPIO控制等功能的支持。

  2. 宏定义:定义了一些常量,如WiFi接口名称最大长度、最大SSID长度、扫描AP限制、MAC地址长度、WiFi初始化等待时间、STA启动延迟等。

  3. 雷达状态和参数:定义了雷达的状态码、默认循环次数、周期、调试类型和波形等。

  4. LED引脚配置:定义了红色、绿色和黄色LED的引脚编号。

  5. 任务优先级和堆栈大小:定义了雷达任务的优先级和堆栈大小。

  6. 枚举类型:定义了一个枚举类型radar_led_gear_t,用于控制LED的档位。

  7. 结构体:定义了一个结构体radar_driver_para_t,用于存储雷达驱动参数。

  8. 弱引用函数radar_set_driver_para_weakref函数被声明为弱引用,这意味着如果其他地方没有定义这个函数,链接器将不会报错。

  9. GPIO设置函数gpio_set_value函数用于设置GPIO引脚的模式和方向。

  10. LED初始化和控制函数radar_led_init函数初始化所有GPIO并设置类型,radar_switch_*_on_off函数用于控制LED的开关。

  11. 雷达控制LED函数radar_ctrl_led函数根据雷达结果控制LED的状态。

  12. 雷达启动STA函数radar_start_sta函数用于启动STA(Station)模式的WiFi接口。

  13. 打印雷达结果函数radar_printf_res函数打印雷达结果并控制LED。

  14. 雷达参数初始化函数radar_init_para函数初始化雷达的调试参数、选择算法参数和算法参数。

  15. 雷达演示初始化函数radar_demo_init函数是雷达演示的初始化函数,它初始化LED、启动STA、注册雷达结果回调函数、初始化雷达参数,并开始雷达探测。

  16. 雷达入口函数radar_entry函数创建了一个任务来运行radar_demo_init函数。

  17. 程序入口点app_run宏调用radar_entry函数作为程序的入口点。

整体来看,这个程序是一个雷达系统的初始化和控制程序,它通过GPIO控制LED,通过网络接口进行配置,并通过回调函数处理雷达结果。程序使用了操作系统抽象层(如osal_task)来创建和管理任务。

关键结构体定义:

typedef struct {uint8_t times; // 发射次数, 0-无限次uint8_t loop; // 单次雷达工作, TRx的波形数量uint8_t ant; // Rx天线数量uint8_t wave; // 波形选择, 0-320M/40M CTA, 1-160M/20M CWuint8_t dbg_type; // 维测方式. 0-不外发维测数据, 1-外发脉压后的数据, 2-外发相干累加后的数据uint16_t period; // 雷达工作间隔
} radar_driver_para_t;

 

typedef struct {uint8_t times;      /*!< @if Eng Number of subframe transmissions, default value 0, always sent, range 0~20@else   子帧发送次数, 默认值0, 一直发送, 范围0~20 @endif */uint8_t loop;       /*!< @if Eng Loop times of radar waveform in one subframe, default value 8@else   单个子帧雷达波形循环发送次数, 默认值为8 @endif */uint8_t ant;        /*!< @if Eng Selection of radar antenna, default value 0@else   接收通路选择, 默认值为0 @endif */uint8_t wave;       /*!< @if Eng Selection of radar wave, default value 2@else   雷达发射波形类型选择, 默认值为2 @endif */uint8_t dbg_type;   /*!< @if Eng Selection of debug information, default value 0, for details,see @ref radar_dbg_type_t@else   维测信息输出选择, 默认值为0, 只打印基础流程日志, 范围0~4,参考 @ref radar_dbg_type_t @endif */uint16_t period;    /*!< @if Eng Radar subframe interval, unit us, default value is 5000, range 3000~100000@else   雷达子帧间隔,单位us,默认值为5000, 范围3000~100000 @endif */
} radar_dbg_para_t;

如果想修改相关参数,建议看看src/include/middleware/services/radar/radar_service.h。 

操作步骤

1. 将vendor/HiHope_NearLink_DK_WS63E_V03/demo/radar_led复制到\src\application\samples\peripheral文件夹下。
2. 在src\application\samples\peripheral\CMakeLists.txt文件中新增编译案例,可以在“set(SOURCES "${SOURCES}" PARENT_SCOPE)”上面一行添加。

if(DEFINED CONFIG_SAMPLE_SUPPORT_RADAR_LED)add_subdirectory_if_exist(radar_led)
endif()

3. 在src\application\samples\peripheral\Kconfig文件中新增编译案例,可以在最后一行添加。

config SAMPLE_SUPPORT_RADAR_LEDboolprompt "support RADAR LED Sample."default ndepends on ENABLE_PERIPHERAL_SAMPLEhelpThis option means support RADAR LED Sample,if SAMPLE_SUPPORT_RADAR_LED
menu "RADAR LED Sample Configuration"
osource "application/samples/peripheral/radar_led/Kconfig"
endmenu
endif


3. 在配置中选择“Application/Enable the Sample of peripheral”,在弹出框中选择“support RADAR LED Sample → Support RADAR STA Sample”,点击Save,关闭弹窗。

4. 重新编译程序,然后烧写程序即可。 

简单测试

天线没有到货,而没有天线,雷达的功能基本不能用。所以以下的测试只是简单地看看流程。

从日志可以看到,系统启动后就程序启动雷达功能。

[RADAR_LOG] alg ctrl read from nv [0][2][0][0][1][1][8]
[RADAR_SAMPLE] radar_demo_init sta!
device_main_init: 0!
===hal_initialize_phy===225===
device_module_init:: succ!
cali_set_cali_mask:old[0x0] -> new[0x1fa2]fe_rf_initialize
cali_offline_cali_entry enter
cali_set_cali_done_flag:old[0x0] -> new[0x1]rf cali OK. time cost:22, ret:0
APP|Hello world!
xo update temp:3,diff:0,xo:0x3083c
STA try enable.
drv_soc_ioctl ioctl_cmd->cmd=7.
drv_soc_ioctl ioctl_cmd->cmd=9.
drv_soc_ioctl ioctl_cmd->cmd=17.
drv_soc_ioctl ioctl_cmd->cmd=13.
drv_soc_ioctl ioctl_cmd->cmd=35.
drv_soc_ioctl ioctl_cmd->cmd=2.
drv_soc_ioctl ioctl_cmd->cmd=2.
drv_soc_ioctl ioctl_cmd->cmd=2.
drv_soc_ioctl ioctl_cmd->cmd=2.
drv_soc_ioctl ioctl_cmd->cmd=2.
drv_soc_ioctl ioctl_cmd->cmd=2.
drv_soc_ioctl ioctl_cmd->cmd=41.
STA connect success.
[RADAR_LOG][set_para] 0,8,0,2,1,5000,2048,0x0034bb04
[RADAR_LOG] update alg param [0][2][0][0][1][1][8]
[RADAR_LOG] update alg param key_id [0x2118]
[RADAR_LOG] alg_para [32,27,1,2,0,1,0,60,0,2,0,2,40,13,26,30,8,70,2]
[RADAR_LOG] alg_para [32,27,1,2,0,1,0,60,0,2,0,2,40,13,26,30,8,70,2]
[RADAR_LOG] update [0x2118][0][32,27,1,2,0,1,0,60,0,2,0,2,30,13,26,50,15,70,2]
[RADAR_LOG] update alg param by wifi [0][2][0][0][1][1][8]
[RADAR_LOG] update alg param key_id [0x2118]
[RADAR_LOG] alg_para [32,27,1,2,0,1,0,60,0,2,0,2,40,13,26,30,8,70,2]
[RADAR_LOG] RADAR START SUCC!
[RADAR_LOG] OK! final lna:3, vga:30, peak:506, pwr:144315, ppa:4914
lb:000, ub:000, hm:0, gr:0, fm:000001
[RADAR_LOG] ch_num:13, iso:30
[RADAR_LOG] RADAR STOP! cur:0, last:1
[RADAR_LOG] RADAR RST!
[RADAR_LOG] update alg param by wifi [0][2][0][0][1][1][8]
[RADAR_LOG] update alg param key_id [0x2118]
[RADAR_LOG] alg_para [32,27,1,2,0,1,0,60,0,2,0,2,40,13,26,30,8,70,2]
[RADAR_LOG] RADAR START SUCC!
[RADAR_LOG] alg ctrl read from nv [0][2][0][0][1][1][8]
[RADAR_LOG] OK! final lna:2, vga:2, peak:456, pwr:117020, ppa:4914
lb:000, ub:000, hm:0, gr:0, fm:000001
[RADAR_LOG] ch_num:12, iso:29
[RADAR_LOG] RADAR STOP! cur:0, last:1
[RADAR_LOG] RADAR RST!
[RADAR_LOG] update alg param by wifi [0][2][0][0][1][1][8]
[RADAR_LOG] update alg param key_id [0x2118]
[RADAR_LOG] alg_para [32,27,1,2,0,1,0,60,0,2,0,2,40,13,26,30,8,70,2]
[RADAR_LOG] RADAR START SUCC!
[RADAR_LOG] alg ctrl read from nv [0][2][0][0][1][1][8]
[RADAR_LOG] OK! final lna:2, vga:2, peak:464, pwr:119357, ppa:4914
lb:000, ub:000, hm:0, gr:0, fm:000001
[RADAR_LOG] ch_num:11, iso:28
[RADAR_LOG] RADAR STOP! cur:0, last:1
[RADAR_LOG] RADAR RST!
[RADAR_LOG] update alg param by wifi [0][2][0][0][1][1][8]
[RADAR_LOG] update alg param key_id [0x2118]
[RADAR_LOG] alg_para [32,27,1,2,0,1,0,60,0,2,0,2,40,13,26,30,8,70,2]
[RADAR_LOG] RADAR START SUCC!
[RADAR_LOG] alg ctrl read from nv [0][2][0][0][1][1][8]
[RADAR_LOG] OK! final lna:3, vga:30, peak:501, pwr:129188, ppa:4914
xo update temp:4,diff:0,xo:0x3083c
lb:000, ub:000, hm:0, gr:0, fm:000001
[RADAR_LOG] ch_num:10, iso:30
[RADAR_LOG] RADAR STOP! cur:0, last:1
[RADAR_LOG] RADAR RST!
[RADAR_LOG] update alg param by wifi [0][2][0][0][1][1][8]
[RADAR_LOG] update alg param key_id [0x2118]
[RADAR_LOG] alg_para [32,27,1,2,0,1,0,60,0,2,0,2,40,13,26,30,8,70,2]
[RADAR_LOG] RADAR START SUCC!
[RADAR_LOG] alg ctrl read from nv [0][2][0][0][1][1][8]
[RADAR_LOG] OK! final lna:3, vga:30, peak:490, pwr:134015, ppa:4914
lb:000, ub:000, hm:0, gr:0, fm:000001
[RADAR_LOG] ch_num:9, iso:30
[RADAR_LOG] RADAR STOP! cur:0, last:1
[RADAR_LOG] RADAR RST!
[RADAR_LOG] update alg param by wifi [0][2][0][0][1][1][8]
[RADAR_LOG] update alg param key_id [0x2118]
[RADAR_LOG] alg_para [32,27,1,2,0,1,0,60,0,2,0,2,40,13,26,30,8,70,2]
[RADAR_LOG] RADAR START SUCC!
[RADAR_LOG] alg ctrl read from nv [0][2][0][0][1][1][8]
[RADAR_LOG] OK! final lna:3, vga:30, peak:475, pwr:125589, ppa:4913
lb:000, ub:000, hm:0, gr:0, fm:000001
[RADAR_LOG] ch_num:8, iso:30
[RADAR_LOG] RADAR STOP! cur:0, last:1
[RADAR_LOG] RADAR RST!
[RADAR_LOG] update alg param by wifi [0][2][0][0][1][1][8]
[RADAR_LOG] update alg param key_id [0x2118]
[RADAR_LOG] alg_para [32,27,1,2,0,1,0,60,0,2,0,2,40,13,26,30,8,70,2]
[RADAR_LOG] RADAR START SUCC!
[RADAR_LOG] alg ctrl read from nv [0][2][0][0][1][1][8]
[RADAR_LOG] OK! final lna:3, vga:30, peak:475, pwr:124232, ppa:4913
lb:000, ub:000, hm:0, gr:0, fm:000001
[RADAR_LOG] ch_num:7, iso:30
[RADAR_LOG] RADAR STOP! cur:0, last:1
[RADAR_LOG] RADAR RST!

这里的反复启动不知道是否和没有天线有关。从日志中可以看到一些和雷达相关的测量参数。

大多数情况下雷达测量得到不了结果,但是偶尔也能输出测量值。

lb:000, ub:000, hm:0, gr:0, fm:000069
lb:000, ub:000, hm:0, gr:0, fm:000070
lb:000, ub:000, hm:0, gr:0, fm:000071
lb:000, ub:000, hm:0, gr:0, fm:000072
lb:000, ub:000, hm:0, gr:0, fm:000073
[RADAR_SAMPLE] lb:200, hb:600, hm:1
R xxxx meters
lb:200, ub:600, hm:1, gr:6, fm:000074
[RADAR_SAMPLE] lb:0, hb:100, hm:1
R 1 meters
lb:000, ub:100, hm:1, gr:1, fm:000075
lb:000, ub:100, hm:1, gr:1, fm:000076

由于测量值不准,所以程序策略的结果有点离谱,造成灯的显示也很混乱。

结语

等天线到货后,再仔细测量一下。不过从论坛中网友反映的情况看,这个雷达功能存在两方面问题:一是测量精度报告,二是WiFi、蓝牙和雷达同时工作时,存在干扰问题。所以对这个功能不能期望太高。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com