
您的Arduino项目需要快速便宜的激光测距仪吗?您可以使用激光卷尺! ![]() 硬件组件 Arduino Nano R3 × 1 Elecrow OLED 0.96''128x64 × 1 X-40激光卷尺 × 1 LM2596 DC-DC模块 × 1 软件应用程序和在线服务 手动工具和制造机器 烙铁(通用) ST-LINK程序员 介绍 您的Arduino项目需要快速便宜的激光测距仪模块吗? 当然,您可以使用专门的模块来完成这项任务,但其中大部分都有很高的价格。VL53L0X / VL53L1X模块价格便宜,但它们具有非常大的视野。 所以我找到了一个解决方案:使用便宜的“X-40”激光卷尺作为激光测距仪。这些设备售价20美元甚至更低,它们可以测量距离达40米,精度约为3毫米。但是有两个问题 - 无法从磁带读取数据并且测量速度很慢 - 小于1 Hz。 为了解决这些问题,我对激光测量仪进行了逆向工程,并为激光测距仪模块的STM32 MCU编写了自己的固件。测量速度对我来说很重要,我可以达到~60 Hz,但最大距离减少到~6 m。 距离测量精度可在1 mm到10 mm之间变化,具体取决于目标颜色和距离。 模块尺寸:25x13x50 mm。 重要通知:您将丢失原始固件,因此该设备不能用作激光胶带测量! 请注意,“X-40”激光卷尺可以对激光测距仪模块进行不同的修改,我的固件仅支持其中一些! “X-40”并不是使用这种模块的激光卷尺的唯一名称 - 我知道存在几种不同的中国激光卷尺和合适的模块。 第1步:拆卸激光卷尺 让我们拆开激光卷尺,从中获取激光测距仪模块。 ![]() 这就是激光卷尺拆卸前的样子 你需要从机壳上拧下7个螺丝: ![]() 请注意,贴纸下面是一个螺钉 拆卸激光卷尺: ![]() 激光测距仪模块标记为蓝色 您可以在设备的外壳内看到小型激光测距仪模块。您需要从模块断开带状电缆并从外壳中卸下模块: ![]() 激光测距仪模块 请注意,模块标记为“701A”。我的固件仅支持“512A”和“701A”模块版本。我知道存在“703A”版本,现在不支持(我没有测试过)! 如果支持您的模块,则需要从模块中拆除电源线。 第2步:编程激光测距仪模块 您需要将专用固件写入模块的MCU以获得所需的功能。 1.首先,你需要焊接一些电线来编程MCU。Pinout如图所示: ![]() 电线连接 连接键盘连接器的引脚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”行): ![]() ST-Link连接到激光测距仪模块 2.将“ST-LINK实用程序”安装到PC。如果您没有使用该软件的经验,那么Web中有很多教程。 您需要配置实用程序(目标 - >设置): ![]() 设置标记值 如果您的程序员有“NRST”输出,您只需打开电源并按下该实用程序上的“目标 - >连接”。 如果它没有这样的行,则需要执行以下步骤: · 打开电源。 · 将模块的“NRST”线连接到GND。 · 按下公用设施上的“目标 - >连接”。 · 快速断开“NRST”线与GND的连接。 · 实用程序必须显示连接 Yon必须得到这样的图片: ![]() 正常连接 3. MCU闪存被锁定以进行读取,因此您需要禁用“读出保护”。您将在此步骤中丢失原始固件! 打开目标 - >“选项字节”菜单。必须有这样的设置: ![]() 选项字节菜单 将“读取保护”切换为“已禁用”并按“取消全选”按钮,然后按“应用”按钮。尝试重启模块(断开电源)。 按目标 - >连接。在日志窗口必须有关于成功连接的信息,您必须看到内存内容 - 填充0xFF。现在您可以将自定义固件加载到MCU。 4.所需的固件放在这里:https ://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast 为您的模块选择合适的HEX文件,并使用“ST-LINK实用程序”将其下载到MCU闪存。 步骤3:将激光测距仪模块连接到Arduino 您需要将电线或某个连接器焊接到电路板上的TX焊盘: ![]() 701A模块引出线 请参见下面的连接示意图。 首先,您需要检查测距仪模块是否正常工作。在此步骤中,您无需将OLED显示器连接到Arduino - 只需将激光测距仪模块的TX线连接到Arduino的TX线,将模块的电源线连接到+ 3V电源。 创建空草图并将其加载到Arduino。在Arduino IDE中打开“Serial Monitor”。选择波特率:25600 如果测距仪模块工作正常,您将获得相同的数据: 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; TEMP; 1223; VOLT; 115 其次,您需要组装完整的原理图和显示。 将激光测距仪模块的TX线连接到Arduino的RX线(在加载程序到Arduino时需要断开该线)。 如果一切正常,您将得到相同的结果: ![]() 组装的面包板 您可以看到带有3个数字的显示: · “COUNT” - 收到的值的计数器 · “AMPL” - 信号的幅度。下面的符号条(“<--->”)以图形方式显示幅度(以对数标度表示)。 · 最大的价值 - 以米和毫米为单位的距离。 第4步:零校准 首次启动后,需要校准激光测距仪模块。 您需要在距模块一定距离处放置一些白色物体。到此对象的距离将变为测距仪模块的零距离。要开始校准过程,您需要从激光卷尺连接键盘并按下最低按钮。模块将发出两次哔声 - 在校准开始时和结束时(校准持续时间接近10秒)。 ![]() 校准过程 现在您可以使用此激光测距仪模块。 原理图 ![]() " P9 C+ a. Z1 @+ y |
首先得有个激光卷尺,然后拆出模块
不太懂你意思,这是用了现成的激光模块
噢噢 效果怎么样