このプロジェクトでは、安価な「X-40」レーザー巻尺のリバース エンジニアリング エレクトロニクス (レーザー距離計モジュール) に関する私の研究について説明します。
このモジュールを DIY 目的で使用できるようにする独自のファームウェアを作成します。
サポートされているモジュール タイプは「512A」および「701A」です。 「703A」の動作は「Damian」によって確認されています(リンク)。
UPD 11/2019: 注意: 新しい「x-40」レーザー巻尺には「M88B」モジュールが付属していることが判明しました。 MCU付近のPCBにマーキングは「88B」です。このモジュールは STM32F0 MCU に基づいています (QFN-32 パッケージを備えています)。そのモジュールは私のファームウェアではサポートされていません!
UPD 06/2022: STM32F0 MCU に基づく新しい U85A/U85B モジュールのサポートを追加しました。 Code/CortexM0 フォルダーを参照してください。
UPD 10/2024: STM32G0 MCU に基づく新しい B2A モジュールのサポートを追加しました。 Code/CortexM0_STM32G0 フォルダーを参照してください。
「701A」モジュールの寸法: 25x13x50 mm。
「U85/B2A」モジュール寸法: 17x7x41mm、重量: ~4g
詳細については、Github Wiki を参照してください。
ロシア語の大きな記事: https://habr.com/post/327642/
Google翻訳:リンク。
別のプロジェクト ページ: https://hackaday.io/project/25515-cheap-laser-tape-measure-reverse-engineering
私が行った手順:
ビデオ (距離計モジュールのテスト): https://youtu.be/bJaUrZ7ZMj4
レーザー距離計モジュールの主要部品は、STM32F100C8T6 MCU、Si5351 デュアル PLL、APD (種類不明)、レーザー ダイオード、電源です。
レーザー巻尺構造の概略図:
レーザー距離計モジュールを Arduino に接続することに関する記事:
https://www.hackster.io/iliasam/making-a-cheap-laser-rangefinder-for-arduino-4dd849
ビデオ: https://youtu.be/FA4mfvgpOQQ
UART データの例 (「Firmware_dist_calculation_fast」):
距離;01574;アンプ;0993;温度;1343;電圧;082rn
DIST - オブジェクトまでの距離 (mm)。
AMP - 信号の振幅。 TEMP - APD 温度 (生の ADC 値)。
VOLT - APD 電圧。文字列の長さは一定です。
距離データは継続的に送信されます。
UART ボーレート - 256000。
UART コマンド (「Firmware_dist_calculation_fast」):
「E」 - レーザーと測定プロセスを有効にします。
「D」 - レーザーと測定プロセスを無効にします。
「C」 - ゼロ距離校正を開始します。最初の起動時にゼロ距離キャリブレーションを実行する必要があります。キャリブレーションの前に、白い物体をレーザーテープから 10cm 以上の距離に置いてください。
距離測定速度 - 60 Hz付近。
距離測定の精度は、距離と表面の種類に応じて 1 ~ 10 mm まで変化します。
より良い結果を得るには、APD を備えた小型基板を外部光から遮断する必要があります。