【雷达灯控】安信可 Rd-03E + BW16

[复制链接]
查看838 | 回复12 | 2024-3-19 12:10:55 | 显示全部楼层 |阅读模式

本帖最后由 noonezero 于 2024-3-22 07:56 编辑

本帖最后由 noonezero 于 2024-3-22 07:49 编辑

本帖最后由 noonezero 于 2024-3-21 21:49 编辑

说明

原来是想用我之前小安派做的智能家居控制器加功能的

不加LVGL正常接收

加了LVGL后,烧录进去就直接无法运行了

暂时还在排查和哪里的代码冲突了

原本的想法也就先暂时搁置了

这次先使用BW16点个灯吧,后续弄好了我在发个帖子

开发板介绍

本次使用的是安信可的双模模组(既可以连接2.4G 也可以 5G)

具体可以看官方资料瑞昱BW系列模组专题 | 安信可科技 (ai-thinker.com)

具体使用可以见我后续帖子,不忙了会陆续更新的

get-start-2

RD03E BW16
VCC 5V
GND GND
OT1 PB2
RX PB1

实物

微信图片_20240321214734.jpg

代码

bool zhen_one = false;       // 判断帧数据第一位 AA
bool zhen_two = false;       // 判断帧数据第二位 AA
int index_num = -1;
char msgarr[3] = {0};            // 接收的数据


void setup() {
  Serial.begin(115200);       // 用于主机通信
  Serial1.begin(256000);    // RD03E通信
  pinMode(PA12, OUTPUT);    // BW16的RGB灯初始化
  pinMode(PA13, OUTPUT);
  pinMode(PA14, OUTPUT);
  while (!Serial);
  while (!Serial1);
  Serial.println("lail,laodi----");
}

void loop() {
  while (Serial1.available() > 0) {
    char msg = Serial1.read();
    // Serial.print(msg, HEX);
    // Serial.print(" ");
    // 开始判断
    if ((int)msg == 0xAA && zhen_one == false){  // 先判断是不是 AA 然后再判断是不是第一字节数据
      zhen_one = true;
      continue; // 防止触发下一个判断
    }

    if((int)msg == 0xAA && zhen_one == true){
      if (zhen_two == false){  // 先判断是不是 AA 然后再判断是不是第二字节数据
        zhen_two = true;
        continue; // 防止触发下一个判断
      }
    }
    if (zhen_one == true && zhen_two == true){
      index_num += 1;
      msgarr[index_num] = msg;
      if(index_num == 2){
        // Serial.print(msgarr[0], HEX);   // 运动微动
        // Serial.print(" ");
        // Serial.print(msgarr[1], HEX);   // 距离低8位
        // Serial.print(" ");
        // Serial.print(msgarr[2], HEX);   // 高8位
        // Serial.println();
        zhen_one = false;
        zhen_two = false;
        index_num = -1;
        if((int)msgarr[0] > 0){
          if((int)msgarr[0] == 1){
            Serial.print("Y: ");
          }
          else{
            Serial.print("W: ");
          }
          int distance = ((int)msgarr[2] << 8) | (int)msgarr[1];
          Serial.println(distance);
          if(distance <= 40){ // 红灯
            digitalWrite(PA12, HIGH);
            digitalWrite(PA13, LOW);
            digitalWrite(PA14, LOW);
          }
          else if(distance > 40 && distance <= 80){ // 蓝灯
            digitalWrite(PA12, LOW);
            digitalWrite(PA13, HIGH);
            digitalWrite(PA14, LOW);
          }
          else if(distance > 80){   // 绿灯
            digitalWrite(PA12, LOW);
            digitalWrite(PA13, LOW);
            digitalWrite(PA14, HIGH);
          }
        }
        else{
          digitalWrite(PA12, HIGH);    // 无目标信息。白光
          digitalWrite(PA13, HIGH);
          digitalWrite(PA14, HIGH);
        }
      }
    }
  }
}

串口输出

image.png

代码详解

在Setup函数中,初始化了串口和RGB引脚 OUTPUT 模式

在loop函数中,判断串口是否有数据,有,读取,先判断连续两个 0XAA,证明是帧头,

接下来开始读取1位目标状态,1运动 2微动

读取2位距离信息,转成16位数据

然后根据距离信息显示不同颜色的灯

显示效果

小于40cm

红灯.jpg

40 - 80蓝灯

蓝灯.jpg

> 80 绿灯

绿灯.jpg

无人状态

无人状态是全亮,白灯。但是不好拍照,就没拍了

本帖被以下淘专辑推荐:

  • · BW16|主题: 3, 订阅: 0
回复

使用道具 举报

bzhou830 | 2024-3-19 12:20:25 | 显示全部楼层
少司命是什么
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

爱笑 | 2024-3-19 13:39:04 | 显示全部楼层
帖子是还没编辑完吗?
用心做好保姆工作
回复 支持 反对

使用道具 举报

lvxinjia123 | 2024-3-19 19:44:43 | 显示全部楼层
这么短
回复

使用道具 举报

lazy | 2024-3-19 20:25:21 | 显示全部楼层
回复

使用道具 举报

WT_0213 | 2024-3-19 20:42:36 | 显示全部楼层
我都喜欢
回复

使用道具 举报

李白百 | 2024-3-19 20:46:43 | 显示全部楼层
回复

使用道具 举报

noonezero | 2024-3-19 21:45:06 | 显示全部楼层
爱笑 发表于 2024-3-19 13:39
帖子是还没编辑完吗?

还没最近忙,会把这个帖子更新完的
回复 支持 反对

使用道具 举报

noonezero | 2024-3-19 21:47:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

干簧管 | 2024-3-20 09:45:05 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则