涂鸦arduino中文社区活动
查看: 1206|回复: 19

[已解决] 关于串口通信协议的激光测距模块问题

[复制链接]

该用户从未签到

发表于 2021-1-10 19:39 | 显示全部楼层 |阅读模式
本帖最后由 OuO 于 2021-1-10 22:19 编辑

采用的是60m相位单点红外激光测距模组,模块与arduino mega采用串口相连接。模块为串口输出形式。
QQ截图20210110193232.png
通信协议如下所示: ~1Q16DMAZ%~M[Q8TM639{3O.png
当我采用USB-TTL在电脑上用串口助手进行测试时一切正常,返回数据是按照通信格式这样的。
QQ截图20210109170505.png
于是我将测距模块与单片机相连,串口的返回值就发生了异样。代码中检查帧头的判断条件是可以进入的,但不知为何返回的帧头值缺不同。
  1. unsigned char Re_buf[30],counter=0;
  2. unsigned char sign=0;

  3. void serialEvent() {
  4.   while (Serial.available()) {
  5.     Re_buf[counter]=(unsigned char)Serial.read();
  6.     if(counter==0 && Re_buf[0]!=0XAA) return;      // 检查帧头         
  7.     counter++;      
  8.     if(counter==13)                //接收到数据
  9.     {   
  10.        counter=0;                 //重新赋值,准备下一帧数据的接收
  11.        sign=1;
  12.     }      
  13.   }
  14. }

  15. void setup() {
  16.   Serial.begin(19200);
  17.   Serial.write(0XAA);
  18.   Serial.write(0X00);
  19.   Serial.write(0X00);
  20.   Serial.write(0X20);
  21.   Serial.write(0X00);
  22.   Serial.write(0X01);
  23.   Serial.write(0X00);
  24.   Serial.write(0X04);
  25.   Serial.write(0X25);
  26. }

  27. void loop()
  28. {
  29.   if(sign)
  30.     {  
  31.        sign=0;
  32.        if(Re_buf[0]==0XAA && Re_buf[1]==0X00 )      //检查帧头,
  33.        {
  34.         Serial.print(Re_buf[0]);
  35.         Serial.print(Re_buf[1]);
  36.         Serial.print(Re_buf[2]);
  37.         Serial.print(Re_buf[3]);
  38.         Serial.print(Re_buf[4]);
  39.         Serial.print(Re_buf[5]);
  40.         Serial.print(Re_buf[6]);
  41.         Serial.print(Re_buf[7]);
  42.         Serial.print(Re_buf[8]);  
  43.         Serial.print(Re_buf[9]);
  44.         Serial.print(Re_buf[10]);
  45.         Serial.print(Re_buf[11]);
  46.         Serial.print(Re_buf[12]);
  47.         Serial.print(Re_buf[13]);
  48.      }
  49.   }
  50. }
复制代码
R[OKN_IYXKKDV$W2NOWQZGM.png

该用户从未签到

 楼主| 发表于 2021-1-10 19:43 | 显示全部楼层
本帖最后由 OuO 于 2021-1-11 02:45 编辑

已解决zsbd QQ图片20210111024422.png

(原代码完全没问题=-=)



该用户从未签到

发表于 2021-1-15 16:16 | 显示全部楼层
激光测距模块好用吗?我需要一个测量水面高度的东西,不知道激光测距好不好使

该用户从未签到

 楼主| 发表于 2021-1-20 02:47 | 显示全部楼层
瞌睡虫2020 发表于 2021-1-15 16:16
激光测距模块好用吗?我需要一个测量水面高度的东西,不知道激光测距好不好使 ...

挺好用的,产品介绍说是可以测水平面的。精度很高0.01,且稳定,不怎么跳变。

该用户从未签到

发表于 2021-1-21 02:19 | 显示全部楼层
请问您做个激光数据传输到实验吗?

该用户从未签到

 楼主| 发表于 2021-1-21 03:16 | 显示全部楼层
一叶知秋1 发表于 2021-1-21 02:19
请问您做个激光数据传输到实验吗?

没有看懂你想说什么。

该用户从未签到

发表于 2021-1-21 03:24 | 显示全部楼层
我想了解一下您,做过激光数据传输方面的研究吗?需要低功耗与数据加密,大数据量通过激光来数据传输数据。我这边有这么个想研发的需求

该用户从未签到

 楼主| 发表于 2021-1-21 03:30 | 显示全部楼层
一叶知秋1 发表于 2021-1-21 03:24
我想了解一下您,做过激光数据传输方面的研究吗?需要低功耗与数据加密,大数据量通过激光来数据传输数据。 ...

这样呀。我没有做过这方面的研究,不好意思。

该用户从未签到

发表于 2021-1-24 11:15 | 显示全部楼层
OuO 发表于 2021-1-20 02:47
挺好用的,产品介绍说是可以测水平面的。精度很高0.01,且稳定,不怎么跳变。 ...

老哥您好,我想请教一下这种传感器是只需要把线连到板子上,然后再开发环境里写对应代码就行,还是要另外的驱动的。如果只用写代码,那应该去哪里找对应的代码,还是说是根据通信协议写对应的代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

字符串是否对比该使用哪个函数?
字符串是否对比该使用哪个
现有问题是, 串口接收到的数据是正常的,(通过print函数打印串口收
用电阻式压力传感器(SEN0294)做一个简单的杯垫
用电阻式压力传感器(SEN0
“多喝开水”这句话在目前似乎已经成了一种戏谑的玩笑话,可是多喝水还是很有好处
刚刚买的arduino,希望大神帮我,让我可以对照一下逻辑
刚刚买的arduino,希望大
用什么屏幕无所谓,按键接什么位置无所谓
1602显示时间,如何显示01-09
1602显示时间,如何显示01
请问,如何让1602显示屏,显示00-00-00,我写完程序后,它不显示01-09.显示的是1-9
stm32f103刷arduino 掉坑里了,出不来了
stm32f103刷arduino 掉坑
买了一个stm32f103c8t6的小板子,照教程刷了generic_boot20_pc13.bin,一切正常,用us
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表