RD-03E开箱使用(灯控实验)

[复制链接]
查看642 | 回复14 | 2024-3-28 22:59:47 | 显示全部楼层 |阅读模式
本帖最后由 Fishghost 于 2024-3-29 17:09 编辑

    首先,很荣幸能够参加活动并获选赠送一块RD-03E雷达模块。安信可的产品一直有在使用,尤其是ESP8266系列和ESP32系列,几乎所有的项目都是使用这两款产品作为主控实现功能。作为物联网工程专业对嵌入式很感兴趣的我来说,安信可的产品真的很贴合我的兴趣爱好和项目需要,更何况还是国产的!

    说回RD-03E这款产品,在此之前我几乎没用过雷达类的产品,对于测距的需求一般都是使用简单的超声波传感器或红外传感器去实现,但是这两者虽然使用简单且结果较为精确,但是也有一定的弊端,就是无法获取被测目标的方位,且对于多个目标不能同时检测,而雷达类的产品则能够弥补这一弊端。RD-03E的参数不再赘述,由于时间的关系,加之最近一段时间事情有点多,所以对于该模块并没有详细的使用,这里主要使用该模块先进行一个简单的灯控实验。
    实验开发环境为:ESP32(主控)+VSCode(编辑器)+PlatformIO(插件)+RD-03E模块+LED灯(红、黄、绿)
    查询模块手册得知串口参数和数据格式:
4228910b014d7e76809aa4b89f6b683.png


    使用ESP32的第三个硬串口Serial2与RD-03E进行通信,32号引脚接红灯,33号引脚接黄灯,25号引脚接绿灯。

    通过串口工具查询模块输出信息:

微信图片_20240329170548.png

    这里发现好像是5个字节,应该是因为出厂时是手势识别固件,但是发现第二个字节好像是距离,所以直接读取使用了,代码如下:

  1. #include <Arduino.h>  
  2.   
  3. #define SERIAL_BAUD_RATE 256000  
  4. #define FRAME_HEADER 0xAA  
  5. #define FRAME_TAILER 0x55  
  6. #define redLED 32
  7. #define greenLED 33
  8. #define yellowLED 25
  9.   
  10. void setup() {  
  11.   Serial.begin(115200); // 用于调试输出  
  12.   
  13.   // 设置Serial2的接收缓冲区大小  
  14.   Serial2.setRxBufferSize(256);  
  15.   
  16.   // 初始化Serial2  
  17.   Serial2.begin(SERIAL_BAUD_RATE, SERIAL_8N1);

  18.   pinMode(redLED, OUTPUT);
  19.   pinMode(greenLED, OUTPUT);
  20.   pinMode(yellowLED, OUTPUT);

  21. }  
  22.   
  23. void loop() {  
  24.   if (Serial2.available() >= 7) { // 确保至少有6个字节的数据可读  
  25.     uint8_t buffer[5] = {0};  
  26.     int numRead = Serial2.readBytes(buffer, 5);  
  27.     // for(int i = 0; i < numRead; i++) {
  28.     //   Serial.print(buffer[i], HEX);
  29.     //   Serial.print(" ");
  30.     // }
  31.     // Serial.println();
  32.     if (numRead == 5 && buffer[0] == FRAME_HEADER && buffer[4] == FRAME_TAILER) {  
  33.       // uint8_t targetState = buffer[2];  
  34.       // uint16_t distance = buffer[1] | (buffer[4] << 8); // 小端格式组合为16位整数  
  35.       uint16_t distance = buffer[1];
  36.       // 打印目标状态和距离信息  
  37.       // Serial.print("Target State: ");  
  38.       // switch (targetState) {  
  39.       //   case 0x00:  
  40.       //     Serial.println("No Target");  
  41.       //     break;  
  42.       //   case 0x01:  
  43.       //     Serial.println("Moving Target");  
  44.       //     break;  
  45.       //   case 0x02:  
  46.       //     Serial.println("Micro-moving Target");  
  47.       //     break;  
  48.       //   default:  
  49.       //     Serial.println("Unknown State");  
  50.       // }  
  51.       digitalWrite(redLED, LOW);
  52.       digitalWrite(greenLED, LOW);
  53.       digitalWrite(yellowLED, LOW);
  54.       
  55.       if(distance < 50){
  56.         digitalWrite(redLED, HIGH);
  57.       }else if(distance < 100){
  58.         digitalWrite(yellowLED, HIGH);
  59.       }else{
  60.         
  61.         digitalWrite(greenLED, HIGH);
  62.       }
  63.   
  64.       Serial.print("Distance: ");  
  65.       Serial.println(distance);  
  66.     }  
  67.   }  
  68. }
复制代码
   代码很简单,就是读取第二个字节并进行判断,进而控制LED灯,等后续刷入精准测距固件再进行实验。

    实验结果:

微信图片_20240329170644.png

    实际效果:

下载(1).png
243ae0c38c578f74efe5c8b0e146b48e[00h00m00s-00h00m06s].gif




回复

使用道具 举报

Fishghost | 2024-3-28 23:10:31 | 显示全部楼层
大家能看到内容吗?还是一片空白
回复 支持 反对

使用道具 举报

Fishghost | 2024-3-28 23:12:55 | 显示全部楼层
回复 支持 反对

使用道具 举报

bzhou830 | 2024-3-29 08:16:22 | 显示全部楼层
Fishghost 发表于 2024-3-28 23:10
大家能看到内容吗?还是一片空白

还是空白的
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

爱笑 | 2024-3-29 08:42:34 | 显示全部楼层
你要复制到帖子里的话,需要从纯文本里面复制才行。还有就是图片需要本地上传,粘贴的不行。https://bbs.ai-thinker.com/forum ... amp;_dsign=64a277b8
用心做好保姆工作
回复 支持 反对

使用道具 举报

lazy | 2024-3-29 09:11:22 | 显示全部楼层
重新编辑一下可能就好了。或者看下编辑器右上角有没有恢复什么的。
回复 支持 反对

使用道具 举报

iiv | 2024-3-29 12:48:47 | 显示全部楼层
啥也看不到。。
回复 支持 反对

使用道具 举报

1055173307 | 2024-3-29 16:38:06 | 显示全部楼层
回复

使用道具 举报

李白百 | 2024-3-29 20:14:34 | 显示全部楼层

回复

使用道具 举报

干簧管 | 2024-3-29 21:46:16 | 显示全部楼层
👍
回复

使用道具 举报

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

本版积分规则