电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>为Arduino制作便宜的激光测距仪

为Arduino制作便宜的激光测距仪

2022-10-24 | zip | 0.68 MB | 次下载 | 2积分

资料介绍

描述

您的 Arduino 项目需要快速且廉价的激光测距仪模块吗?

当然,你可以使用专门的模块来完成这项任务,但它们中的大多数价格都很高。VL53L0X/VL53L1X 模块价格便宜,但视野非常大。

所以我找到了一个解决方案:使用便宜的“X-40”激光卷尺作为激光测距仪。这些设备的成本为 20 美元或更低,它们可以测量距离高达 40m,精度约为 3mm。但是有两个问题 - 无法从磁带上获取读数并且测量速度很慢 - 低于 1 Hz。

为了解决这个问题,我对该激光卷尺进行了逆向工程,并为激光测距仪模块的 STM32 MCU 编写了自己的固件。测量速度对我来说很重要,我可以达到 ~60 Hz,但最大稳定距离降低到 ~6 m(最大范围为 37 m,但我没有测试)。

距离测量精度可以从 1 毫米到 10 毫米不等,具体取决于目标颜色和距离。

模块尺寸:25x13x50 毫米。

重要通知:您将丢失原始固件,因此该设备以后不能用作激光卷尺!

请注意,“X-40”激光卷尺可以有不同版本的激光测距仪模块,我的固件只支持其中的一部分!

“X-40”并不是带有此类模块的激光卷尺的唯一名称 - 我知道存在几种不同的带有合适模块的中国激光卷尺。

第 1 步:拆卸激光卷尺

让我们拆开激光卷尺,从中得到一个激光测距仪模块。

 
pYYBAGNVkVCASqJmAARLivW98nI588.jpg
这就是激光卷尺在拆卸前的样子
 

您需要从外壳上拧下 7 个螺丝:

 
pYYBAGNVkVKAFxwBAAErdCVM93s305.jpg
请注意,贴纸下方是一颗螺丝
 

拆卸的激光卷尺:

 
poYBAGNVkVWAZNhCAAJoPBKs5NY055.jpg
激光测距仪模块标记为蓝色
 

您可以在设备外壳内看到小型激光测距仪模块。您需要从模块上断开带状电缆并从外壳中取出模块:

 
poYBAGNVkVqAL1ZtAAnU9P4A_aA373.jpg
激光测距模块
 

请注意,模块标记为“701A”。我的固件只支持“512A”和“701A”模块版本。一些用户确认“703A”模块也可以工作(我没有测试过)。

UPD 11/2019:
注意:发现较新的“x-40”激光卷尺带有“M88B”模块。在 MCU 附近的 PCB 上标记为“88B”。该模块基于 STM32F0 MCU(它具有 QFN-32 封装)。我的固件不支持这些模块!

UPD 10/2021:
注意:增加了对 U85 模块的支持见链接它们用于现代类型的激光卷尺。

pYYBAGNVkVyAFGw7AABg8KHW_lE559.jpg
 

如果支持您的模块,则需要从模块上拆下电源线。

第 2 步:对激光测距仪模块进行编程

您需要将专用固件写入模块的 MCU 以获得所需的功能。

1. 首先,您需要焊接一些用于对 MCU 进行编程的电线。引脚排列如图所示:

 
pYYBAGNVkV-AKnX2AAQBtCQTSPs258.jpg
电线连接
 

连接键盘连接器的针脚 7-8 - 需要通电。

线“GND”和“Vbat”必须连接到电源。电源电压范围为+2.7...+3.3V。为模块供电时,“Vdd”线必须有 +3.5 V。

“GND”、“SWDIO”、“SWCLK”、“NRST”线必须连接到 ST-LINK 编程器。“NRST”线很重要——MCU的原始固件被锁定,所以进入MCU进入编程模式需要这条线。

有些程序员有这条线,有些(便宜的)没有,但是有一个解决这个问题的方法。

另外,有些编程器(如原来的“ ST-LINK/V2 ”)需要“Vbat”线与编程器的“VCC/TVCC”线相连。

连接示例(此程序员没有“NRST”行):

 
poYBAGNVkWOAWPI9AANfvVVPPv8081.jpg
ST-Link 连接到激光测距仪模块
 

2. 将“ST-LINK 实用程序”安装到 PC。如果您没有使用该软件的经验,网上有很多教程。

您需要配置实用程序(目标 -> 设置):

 
poYBAGNVkWWAVm7zAABv17e7HbE904.png
设置标记值
 

如果您的编程器有“NRST”输出,您只需打开电源并在实用程序中按“Target -> Connect”即可。

如果它没有这样的行,您需要执行以下步骤:

  • 打开电源。
  • 将模块的“NRST”线连接到 GND。
  • 在实用程序中按“目标 -> 连接”。
  • 快速断开“NRST”线与 GND 的连接。
  • 实用程序必须显示连接

Yon 必须得到这样的图片:

 
pYYBAGNVkWeADHnIAADfoA5GDdw905.png
正常连接
 

3. MCU flash 被锁定读取,所以需要关闭“Read Out Protection”。在这一步您将丢失原始固件!

打开目标->“选项字节”菜单。必须有这样的设置:

 
pYYBAGNVkWqAS1S-AAEPjWfrJYY759.png
选项字节菜单
 

将“读出保护”切换为“禁用”,然后按“取消全选”按钮,然后按“应用”按钮。尝试重新启动模块(通过断开电源)。

按目标 -> 连接。日志窗口中必须有关于成功连接的信息,并且您必须看到内存内容 - 用 0xFF 填充。现在您可以将自定义固件加载到 MCU。

4.需要的固件放在这里:https ://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast

为您的模块选择合适的 HEX 文件并使用“ST-LINK 实用程序”将其下载到 MCU Flash。

第 3 步:将激光测距仪模块连接到 Arduino

您需要将电线或一些连接器焊接到板上的 TX 焊盘:

 
poYBAGNVkWyAK2omAAE9LHuJ-Go877.jpg
701A 模块引出线
 

请参见下面的连接示意图。

首先,您需要检查测距仪模块是否正常工作。在这一步您不需要将OLED显示器连接到Arduino - 只需将激光测距仪模块的TX线连接到Arduino的TX线,并将模块的电源线连接到+ 3V电源。

创建空草图并将其加载到 Arduino。在 Arduino IDE 中打开“串行监视器”。选择波特率:250000

如果测距仪模块工作正常,您将获得相同的数据:

DIST;01937;AMP;0342;TEMP;1223;VOLT;115 DIST;01937;AMP;0343;TEMP;1223;VOLT;115 DIST;01938;AMP;0343;TEMP;1223;VOLT;115 DIST;01938;AMP ;0343;温度;1223;伏特;115

事实上,这个测试最好使用专门的 USB-UART 转换器在其实用程序中选择 256000 波特率(它是 x-40 MCU 的真实波特率)。

其次,您需要将完整的原理图与显示器组装在一起。

将激光测距仪模块的 TX 线连接到 Arduino 的 RX 线(在将程序加载到 Arduino 时需要断开该线)。

如果一切正常,您将得到相同的结果:

 
pYYBAGNVkW-AZD42AAJHK_uSlRs881.jpg
组装面包板

您可以看到显示 3 个数字:

  • "COUNT" - 接收值的计数器
  • “AMPL” - 信号的幅度。下面的符号条(“<--->”)以图形方式显示幅度(以对数刻度)。
  • 最大值 - 以米和毫米为单位的距离。

第 4 步:调零

首次启动后,需要校准激光测距仪模块。

您需要在距离模块一定距离处放置一些白色物体。对于测距仪模块,到该物体的距离将变为零距离。要开始校准过程,您需要从激光卷尺连接键盘并按最低按钮。模块将发出两次哔声 - 在校准开始和结束时(校准持续时间接近 10 秒)。

 
poYBAGNVkXKAfW7cAAHeXcqqXU8135.jpg
校准过程
 

现在您可以使用此激光测距仪模块。

链接:

1. Github——逆向工程结果和源码。

2. Habr.com - 谷歌翻译的关于激光卷尺逆向工程过程的文章。

对不起我的英语 - 我来自非英语国家。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费