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

[复制链接]
查看782 | 回复13 | 2024-3-20 09:08:17 | 显示全部楼层 |阅读模式

感谢

首先,感谢安信可举办的活动,

感谢园长审核

作为一个中奖绝缘体,竟然中奖了

这本身就不可思议

我这激动的心,颤抖的手呀

其次,感谢期哥分享的串口下载教程,直接一步到位修改固件,省却了好多弯路

使用ch340给rd03_e雷达烧录固件[有手就行] - Rd-03系列 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)

再次感谢!!!

作品

这次我使用ESP32作为主控点灯,这是作品图

RX引脚连接RD03E OT1

23号引脚接1K电阻连LED

image.png

代码

原理,此次串口读取我采用另一种方法

RD03E数据帧一共七位,我直接读取14位,这样保证一定有一个完整的数据帧在里面

然后判断这14位中的起始帧,

根据起始帧读取RD03E的数据

组合距离信息

最后根据距离多少判断是否应该亮灯

#include <Arduino.h>

void setup() {
  // 初始化Serial,用于与主机通信,波特率为115200
  Serial.begin(115200);
  // 初始化Serial2,用于与另一个模块通信,波特率为256000
  Serial2.begin(256000);
  pinMode(23, OUTPUT);
  digitalWrite(23, HIGH);
  // 等待串口连接
  while (!Serial) {
    ;  // 等待串口初始化
  }
  // 等待串口连接
  while (!Serial2) {
    ;  // 等待串口初始化
  }
}

void loop() {
  if (Serial2.available()) {
    // 定义一个数组来存储从Serial2接收到的数据
    uint8_t receivedData[14];
    // 从Serial2读取数据
    int bytesRead = Serial2.readBytes(receivedData, 14);

    // 检查是否读取到足够的字节
    if (bytesRead == 14) {
      // 遍历把收到的数据发送主机,并测算距离,以16进制格式显示
      for (int i = 0; i < bytesRead; i++) {
        // Serial.print(receivedData[i], HEX);
        // // 如果不是最后一个字节,则添加一个空格作为分隔符
        // if (i < bytesRead - 1) {
        //   Serial.print(" ");
        // }

        if ((int)receivedData[i] == 0xAA && bytesRead >= i + 5) {
          if ((int)receivedData[i + 1] == 0xAA) {
            // 确定是测距固件
            Serial.print(receivedData[i], HEX);
            Serial.print(" ");
            Serial.print(receivedData[i + 1], HEX);
            Serial.print(" ");
            Serial.print(receivedData[i + 2], HEX);
            Serial.print(" ");
            Serial.print(receivedData[i + 3], HEX);
            Serial.print(" ");
            Serial.print(receivedData[i + 4], HEX);
            Serial.print(" ");
            int Ljuli = (int)receivedData[i + 3];
            int Hjuli = (int)receivedData[i + 4];
            int juli = (Hjuli << 8) | Ljuli;
            Serial.print(" :");
            Serial.print("距离为:");
            Serial.println(juli);  // 换行
            if (juli < 40) {
              digitalWrite(23, LOW);
            } else {
              digitalWrite(23, HIGH);
            }
            break;
          }
        }
      }
    }
  }
}

效果

串口输出

VeryCapture_20240319121426.jpg

在40cm内

image.png

超过40cm

大概到这个距离就不显示了 003.jpg

点灯结束

回复

使用道具 举报

干簧管 | 2024-3-20 09:14:34 | 显示全部楼层
👍
回复

使用道具 举报

WT_0213 | 2024-3-20 09:15:24 | 显示全部楼层
很赞
回复

使用道具 举报

bzhou830 | 2024-3-20 10:10:36 | 显示全部楼层
很赞
选择去发光,而不是被照亮
回复

使用道具 举报

1084504793 | 2024-3-20 10:42:54 | 显示全部楼层
回复

使用道具 举报

lazy | 2024-3-20 10:44:55 | 显示全部楼层
回复

使用道具 举报

爱笑 | 2024-3-20 13:46:53 | 显示全部楼层
不错不错!
用心做好保姆工作
回复

使用道具 举报

1055173307 | 2024-3-21 14:46:46 | 显示全部楼层
回复

使用道具 举报

timo | 2024-3-24 17:28:04 | 显示全部楼层
回复

使用道具 举报

sansui | 2024-3-24 20:48:35 | 显示全部楼层
赞一下
回复

使用道具 举报

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

本版积分规则