上一篇帖子介绍了如何初步的测试CEM5826-M11 雷达模块,今天写一篇帖子介绍如何使用常见的STM32单片机来完成对雷达数据的读取。
1、硬件连接
类似于上一篇介绍的如何通过电脑来读取雷达模块发送的信息,与单片机连接同样需要连接四根线,分别是5V→5V,GND→GND,RXD→PA2,TXD→PA3;可见,电源部分对应相接即可,信号线部分,雷达模块的发送连接单片机的接收,雷达模块的接收连接单片机的发送,由于主要使用的是雷达模块发出的信息,雷达模块的发送不接线也可以。
接线效果如图:

2、代码编写
接下来便是对代码的编写,通信方式是为串口通信,我使用的是单片机的串口2,也就是PA3引脚来接收雷达模块发出的数据,
雷达模块发送出的数据在单片机端接收到的为字符串的格式,所以还需要将字符串中的有用信息解析出来,这也是本帖主要要实现的功能。
首先要编写的是串口的初始化以及串口的接收函数,这里采用的是中断的方式来进行接收,初始化部分比较基础,就不在介绍,最重要的还是对数据的接收以及解析部分代码的编写。
串口中断接收代码如下:
大致思路如下:首先对接收到的数据进行判断,由于雷达模块发送的第一个字母为v,固可以通过v来作为接收的开始,此后依次接收雷达模块发送出的数据,当数据为‘\n‘时说明一帧有效数据以及接收完毕,此时对相关标志位进行置位并将接收到的数据拷贝到另一个数组中,将接收数组清空,进行下一次的接收。
接下来是对数据的解析,由于接收到的数据里有些数据是没有用的,我们需要的主要是雷达模块发送的两个数字。
相关代码如下:
代码主要是通过for循环来将接收到的数组内的数据赋值给一个新的数组,新的数组里只包含所需的数值数据。
3、实现效果
最终实现的效果如下:
4、最后总结
今天的测评就到这里,代码我放在下面,需要的小伙伴可以直接下载,明天我计划将字符串数据转换为可进行计算的数值数据,并通过OLED屏幕进行显示,利用开发板的LED作一个迷你版的感应灯。拜拜~
全部评论