你好,HLK的工程师。本人现在在开发的一个小项目需要用贵公司的6002模组。现在遇到的问题有以下两个。
1.我使用的面包板和杜邦线比你们模块的8个针要宽,导致我没有办法直接按照你们的规格书的方法直接连线,于是我又买了你们的雷达测试地板,如图1标红的部分
,我想知道,你们的这个地板的一圈接口也是可以的连接模块的吗?(这一圈接口可以看作原本模块的外延接口吗?)如果可以,那为什么我按照你们的方式连接了esp32。如图二
GUI的测试软件确实可以识别到com口,但是却不能检测到任何数据。
2.是算法方面,我看了你们的通信协议。我是想要6002检测到的数据(比如检测到的心率和呼吸频率)传送给esp32,让esp做下一步分析,我的代码如下:#include <TinyFrame.h>
// 定义TinyFrame对象
TinyFrame tf;
// 定义版本信息
uint8_t s_version_major = 1;
uint8_t s_version_minor = 5;
uint8_t s_version_patch = 10;
// 定义接收缓冲区
TinyFrameRx s_revTestStr;
// 定义版本状态结构体
typedef struct {
uint16_t project;
uint8_t version_major;
uint8_t version_minor;
uint8_t version_patch;
} verStatusTypedef;
verStatusTypedef s_verStatus;
// 定义UART对象
HardwareSerial SerialPort(1); // 使用UART1
// 初始化函数
void setup() {
// 初始化串口
Serial.begin(115200);
SerialPort.begin(115200, SERIAL_8N1, 16, 17); // RX=16, TX=17
// 初始化TinyFrame
tf = TinyFrame(&SerialPort);
// 初始化版本状态
s_verStatus.project = 0xFFFF; // PRJ_HUMAN_DETECTION_ID
s_verStatus.version_major = s_version_major;
s_verStatus.version_minor = s_version_minor;
s_verStatus.version_patch = s_version_patch;
}
// 主循环
void loop() {
rxAndParseData();
}
// 接收和解析数据函数
void rxAndParseData() {
s_revTestStr = tf.rx();
if (s_revTestStr.receiveType == 0xFFFF) {
// 发送版本信息
tf.tx(0xFFFF, (uint8_t *)(&s_verStatus), sizeof(s_verStatus));
}
}请问有什么要修改地方吗。
你好,模块是完全没问题的。手动解析指的是依据你们的通信协议,一帧一帧的对应数据吗
是的,就是根据上报的数据,可以先按照通信协议的数据内容,找到对应的数据信息帧,像0A13 0A16 是用来绘图的,所以大部分都是这两种数据,像0A14,0A15就是直接上报的呼吸心率结果,但这两种数据判断条件苛刻一些,所以上报慢,手动解析了可以得到正确结果之后,然后根据每种数据帧的上报规律(字节数)去做对应的接收逻辑处理。