本帖最后由 putin 于 2024-3-11 10:45 编辑
简介
第一次参加安信可模组活动没想到就中了,这次安信可赠送的是雷达模块RD-03E,刚好有一个老旧灯正好把他改成感应灯。在这里感谢安信可以及安信可技术交流群的大佬们!!
模块介绍
Rd-03E是由深圳市安信可科技有限公司开发的雷达模组,搭载矽典微的S3KM111L芯片。 S3KM111L 是一种基于 FMCW 雷达收发器技术的集成单片机毫米波传感器 SoC,它工作 在 24 GHz 的 K 波段,每个单频扫描的调制带宽高达 1 GHz该模组采用 FMCW 波形和 S3 系列芯片专有的先进信号处理技术,结合 MCU 专有的雷达信号处理和内置智能存在 感应算法,可实现精准的人体感应测距以及手势识别。开发人员可通过上位机工具实时 显示距离信息以及手势信息。 Rd-03E 模组可对运动、微动人体进行探测、识别,并上报实时距离,能够探测指定区域 内的目标与手势并实时上报结果,广泛应用于各种 AloT 场景。该模组具有实时性强,测 距精度高,测距范围大,算法参数灵活配置等特点。
资料获取
更多点击Rd-03 系列模组
串口工具连接RD-03E
串口工具按如图所示连接雷达模组(请注意RD–03E供电是5V跟RD-03不一样,刚拿到的时候看规格书看错了,一直用3.3V,结果雷达就是连不上)
使用安信可串口助手,并将波特率调为256000,切换至hex显示,勾选自动换行(这里我刷入的是测距的固件,大多数人这一次拿到的都是马桶盖的固件,想要更换的话可以在上面看教程,把固件给刷进去)
报头(1、2列) | 目标状态(3列) | 距离(4、5列) | 包尾(6、7列) | AA AA | 00(没人)或 01(有人大动)或 02 (有人微动) | 00 00 到 FF FF(还没见过第五列数据在动) | 55 55 | 其实安信这边还提供了两个不同的上位机,一个是马桶盖的,一个是测距的,不过这两个上位机。对于我来说好像就只有测试雷达功能正不正常的作用。这边就不在帖子里面写了。
程序撰写
这里mcu解析串口部分代码我采用的是B站江科大教学里面的串口收发hex的程序,或者在主函数里面进行了部分更改。
- #include "stm32f10x.h" // Device header
- #include "Delay.h"
- #include "OLED.h"
- #include "Serial.h"
- void Init_GPIO()
- {
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟
- //使用各个外设前必须开启时钟,否则对外设的操作无效
-
- /*GPIO初始化*/
- GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量
-
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO模式,赋值为推挽输出模式
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIO引脚,赋值为第0号引脚
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIO速度,赋值为50MHz
-
- GPIO_Init(GPIOA, &GPIO_InitStructure); //将赋值后的构体变量传递给GPIO_Init函数
- //GPIO_ResetBits(GPIOA, GPIO_Pin_0);
- }
- int main(void)
- {
- /*模块初始化*/
- OLED_Init(); //OLED初始化
- Serial_Init(); //串口初始化
- Init_GPIO();//GPIO初始化
- /*显示静态字符串*/
- OLED_ShowString(1, 1, "Distance");
- OLED_ShowString(3, 1, "RxPacket");
-
- /*设置发送数据包数组的初始值,用于测试*/
- // Serial_TxPacket[0] = 0x01;
- // Serial_TxPacket[1] = 0x02;
- // Serial_TxPacket[2] = 0x03;
- // Serial_TxPacket[3] = 0x04;
-
- while (1)
- {
- if (Serial_GetRxFlag() == 1) //如果接收到数据包
- {
- OLED_ShowHexNum(4, 1, Serial_RxPacket[0], 2); //显示接收的数据包
- OLED_ShowHexNum(4, 4, Serial_RxPacket[1], 2);
- OLED_ShowNum(2, 4, Serial_RxPacket[2], 2);
- OLED_ShowHexNum(4, 7, Serial_RxPacket[2], 2);
- OLED_ShowHexNum(4, 10, Serial_RxPacket[3], 2);
- if(Serial_RxPacket[2]<100&&Serial_RxPacket[2]>10&&Serial_RxPacket[1]>0)
- {
- GPIO_SetBits(GPIOA, GPIO_Pin_0); //将PA0引脚设置为高电平
- }
- else
- {
- GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)0);
-
- }
- }
- }
- }
复制代码 成果展示
遇见的问题
- 供电用错,用成3.3V,然而实际是五伏。
- 拿到手马桶盖的固件,用马桶盖的上位机,搞半天读不出来数据,最后换了两个串口。(在群里面问大佬,大佬也非常耐心的为我解答,在此特别感谢他们。👨❤️👨)
- 刷固件时,Keil弹窗st-link更新,刚开始看不懂,最后百度得以解决。
- 最后当我更新完固件,开心的往里面刷固件时发现忘记选芯片的flash出现报错。
- 在发帖前夕,把昨天晚上好不容易在下载口上面焊上排幕,结果不小心一巴掌盖上去把焊盘干脱了😭
串口下载程序(我的雷达有救了🌝🌝)
源码.zip
(309.92 KB, 下载次数: 13)
|