Amirmobash/Laser_tape_reverse_engineering
GitHub: Amirmobash/Laser_tape_reverse_engineering
该仓库通过逆向工程实现了对廉价激光卷尺的固件破解与定制化改造,解决了协议不透明与功能受限的问题。
Stars: 0 | Forks: 0
# 激光卷尺逆向工程
本仓库包含针对廉价中国激光卷尺(如“X-40”型号)的逆向工程结果和定制固件。
## 支持的模块
固件支持基于 STM32F030C6T6 MCU 的激光测距模块:
- **701A**(已测试)
- **512A**(已测试)
- **703A**(用户测试通过)
- **B2A**(已测试)
- **U85**(已测试 - 请参见 CortexM0 文件夹)
**不支持:** 标记为 M88B 的模块(STM32F0,QFN-32 封装)
## 仓库结构
```
Code/
├── Firmware_dist_calculation_fast/ # Main firmware HEX files
├── CortexM0/ # Firmware for U85 modules
├── Arduino_sketch/ # Example Arduino code
└── ...
Hardware/
├── Schematic/ # Connection diagrams
└── ...
Docs/
└── ...
```
## 定制固件的主要功能
- **测量速度:**最高 60 Hz
- **最大量程:**约 6 米(稳定),最远可达 37 米(可靠性降低)
- **精度:**1-10 毫米,取决于目标颜色和距离
- **输出格式:**UART,波特率 256000(或 Arduino 的 250000)
- **数据格式:**`DIST;01937;AMP;0342;TEMP;1223;VOLT;115`
## UART 命令
向模块发送单个字符:
| 命令 | 功能 |
|------|------|
| `E` | 启用激光(开始连续测量) |
| `D` | 禁用激光(停止测量) |
| `C` | 开始校准(需要在已知距离处放置白色目标) |
| `P` | 省电模式 |
## 编程引脚定义(ST-LINK)
| 引脚 | 功能 |
|------|------|
| SWDIO | 数据线 |
| SWCLK | 时钟线 |
| NRST | 复位线(用于编程被锁定的 MCU) |
| GND | 地 |
| Vbat | 电源输入(2.7-3.3V) |
| TX | UART 输出(连接至 Arduino RX) |
## 与 Arduino 连接
```
Laser module TX -> Arduino RX (pin 0)
Laser module GND -> Arduino GND
Laser module Vbat -> 3.3V power supply
```
## Arduino 示例代码
```
void setup() {
Serial.begin(250000); // or 256000
}
void loop() {
if (Serial.available()) {
String data = Serial.readStringUntil('\n');
if (data.startsWith("DIST")) {
// Parse distance
int first = data.indexOf(';');
int second = data.indexOf(';', first+1);
int dist_mm = data.substring(first+1, second).toInt();
float dist_m = dist_mm / 1000.0;
Serial.print("Distance: ");
Serial.print(dist_m, 3);
Serial.println(" m");
}
}
}
```
## 校准流程
1. 在距离模块 **已知距离** 处放置一个白色物体(例如恰好 1 米)
2. 通过 UART 发送 `C` 命令,或按下原设备键盘上的最低按钮
3. 等待两声蜂鸣(约 10 秒)
4. 校准完成
## 警告
**您将丢失原始固件!** 设备将无法再作为标准激光卷尺使用。
## 链接
- [Arduino Project Hub 项目](https://projecthub.arduino.cc/iliasam/making-a-cheap-laser-rangefinder-for-arduino-0c33a5)
- [Habr.com 文章(俄语,提供英文翻译)](https://habr.com/en/post/354512/)
## 许可证
Amir Mobasheraghdam
MIT
标签:256000波特率, 60Hz测量, CortexM0, ST-LINK, STM32, STM32F0, SWD, UART, Waymore结果处理, X-40, 反向工程, 固件修改, 开源固件, 开源硬件, 开源硬件项目, 测距模块, 激光传感器, 激光标尺, 激光标尺512A, 激光标尺701A, 激光标尺703A, 激光标尺B2A, 激光标尺M88B不兼容, 激光标尺U85, 激光标尺X-40, 激光标尺固件, 激光标尺改造, 激光标尺破解, 激光测距, 激光测距仪, 电子逆向, 电子项目, 硬件修改, 自定义固件