Arduino 采集雷达模块数据与串口绘图

[复制链接]
查看608 | 回复4 | 2024-12-9 19:03:59 | 显示全部楼层 |阅读模式

Arduino 采集雷达模块数据与串口绘图

当采用串口输出模式时,雷达检测到运动时,则输出 v=0.0km/h, str=1234 字样;

v 表示目标速度大小,str 表示信号强度;

当雷达检测不到目标时,串口停止输出。

UART_print.png

项目实现

Arduino 串口采集雷达模块数据,并通过串口打印至接收窗口,绘制 速度演化曲线信号强度演化曲线

原始代码

void setup() 
{
  Serial.begin (115200);
  while (Serial.read() >= 0){}//clear serialbuffer
}

String comdata = "";

void loop() {
  if (Serial.available() > 0) 
  {
    char data = Serial.read();
    comdata += data;
    if (data == '\n')
    {
       Serial.println (comdata);
       comdata = "";
    }
  }
}

串口打印

Arduino_Print.png

注意到串口打印出的字符串既包含文字也包含数字,若要实现串口绘图,则需将其中的数字部分提取出来。

代码升级

String comdata = "";
void setup() 
{
  Serial.begin (115200);
  while (Serial.read() >= 0){}//clear serialbuffer
}

void loop() {
  if (Serial.available() > 0) 
  {
    char data = Serial.read();
    comdata += data;
    if (data == '\n')
    {
      // 分割字符串
      int separatorIndex = comdata.indexOf(','); // 假设分隔符为逗号
      if (separatorIndex != -1) 
      {
        String part1 = comdata.substring(0, separatorIndex); // 第一个部分
        String part2 = comdata.substring(separatorIndex + 1); // 第二个部分
        // 打印分割后的数据
        Serial.println(part1);
        Serial.println(part2);
      }
      comdata = "";
    }
  }
}

效果

UART_update.png

数字提取

同理,对 part1part2 进行分离提取索引数字

String comdata = "";
void setup() 
{
  Serial.begin (115200);
  while (Serial.read() >= 0){}//clear serialbuffer
}

void loop() {
  if (Serial.available() > 0) 
  {
    char data = Serial.read();
    comdata += data;
    if (data == '\n')
    {// type of comdata: v=1.0 km/h, str=10151
      int separatorIndex = comdata.indexOf(','); // 假设分隔符为逗号
      if (separatorIndex != -1)
      {
        String part1 = comdata.substring(0, separatorIndex); // 第一个部分
        String part2 = comdata.substring(separatorIndex + 1); // 第二个部分
        // 打印分割后的数据
        //Serial.println(part1); // type of part1: v=1.0 km/h
        //Serial.println(part2); // type of part2:  str=10151
        /*------------ part1 : v=1.0 km/h ----------*/
        int part1separatorIndex = part1.indexOf('='); //index of '='
        if (part1separatorIndex != -1)
        {
          String vlc = part1.substring(part1separatorIndex + 1); // index of velocity, type of vlc is 1.0 km/h
          // vlc: 1.0 km/h
          int VLCseparatorIndex = vlc.indexOf(' '); // index of ' '
          String v = vlc.substring(0, VLCseparatorIndex);// v only include number
          float Vn = v.toFloat();
          Serial.print(Vn); // print velocity number
          Serial.print(',');
        }
        /*------------- part2 :  str=10151 ------------------*/
        int part2separatorIndex = part2.indexOf('='); //index of '='
        if (part2separatorIndex != -1)
        {
          String strng = part2.substring(part2separatorIndex + 1); // strng only include number
          int Sn = strng.toInt();
          Serial.print(Sn); // print strength number
        }
        Serial.println();
      }
      comdata = "";
    }
  }
}

流程图

UART_plot_flowchart.jpg

串口打印数字

UART_num.png

串口绘图

UART_plot.gif

UART_plot_board.gif

MCU开发者和爱好者
回复

使用道具 举报

大猫的鱼 | 2024-12-9 21:49:30 | 显示全部楼层
回复

使用道具 举报

爱笑 | 2024-12-10 08:31:39 | 显示全部楼层
多多分享~
用心做好保姆工作
回复

使用道具 举报

1055173307 | 2024-12-10 11:30:56 | 显示全部楼层
回复

使用道具 举报

qhsj | 2024-12-10 15:08:11 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则