工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

部品と用品

Arduino Nano R3 ×1
Elecrow OLED 0.96インチ 128x64 ×1
X-40 レーザー巻尺 ×1
LM2596 DC-DCモジュール ×1

必要なツールと機械

アプリとオンラインサービス

このプロジェクトについて

Arduinoプロジェクト用に高速で安価なレーザー測距モジュールが必要ですか?

もちろん、このタスク専用のモジュールを使うこともできますが、ほとんどは高価です。VL53L0X/VL53L1Xモジュールは安価ですが、視野角が非常に広いという欠点があります。

そこで見つけた解決策:安価な「X-40」レーザー巻尺をレーザー測距モジュールとして使用することです。これらは20ドル以下で購入でき、最大40mまで、精度約3mmで測定可能です。しかし2つの問題があります - 巻尺から測定値を取り出す方法がなく、測定速度が遅い(1Hz未満)。

これらを解決するため、レーザー巻尺のリバースエンジニアリングを行い、STM32 MCU用の独自ファームウェアを書きました。測定速度が重要だったため、約60Hzを達成しましたが、最大安定距離は約6mに減少しました(フル最大範囲は37mですが未テスト)。

測距精度はターゲットの色と距離により1mm〜10mmの範囲で変動します。

モジュール寸法:25x13x50mm。

重要な注意:オリジナルファームウェアが失われるため、その後レーザー巻尺として使用できなくなります!

「X-40」レーザー巻尺にはレーザー測距モジュールの異なるリビジョンが存在し、私のファームウェアは一部のみ対応しています!

「X-40」以外にも、同じようなモジュールを搭載した中国製レーザー巻尺がいくつか存在します。

ステップ1: レーザー巻尺の分解

レーザー巻尺を分解してレーザー測距モジュールを取り出します。

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

ケースから7本のネジを外します:

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

分解後のレーザー巻尺:

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

ケース内部に小さなレーザー測距モジュールが見えます。モジュールからフレックスケーブルを外し、モジュールを取り出します:

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

モジュールは「701A」とマークされています。私のファームウェアは「512A」と「701A」のみ対応。複数ユーザーが「703A」も動作確認済み(私は未テスト)。

2019年11月更新:
注意:新しい「X-40」レーザー巻尺には「M88B」モジュールが搭載されていることが判明しました。 PCB上のMCU付近に「88B」のマーキングがあります。これらはSTM32F0 MCUベース(QFN-32パッケージ)です。これらのモジュールは私のファームウェアでは非対応です!

2021年10月更新:
注意: U85Bモジュールのサポートを追加:詳細はリンク参照!これらは最新タイプのレーザー巻尺で使用されています。

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

対応モジュールの場合、モジュールから電源線をハンダ除去します。

ステップ2: レーザー測距モジュールのプログラミング

MCUに専用ファームウェアを書き込み、必要な機能を得ます。

1. まずMCUプログラミング用の配線をハンダ付けします。ピンアウトは画像の通り:

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

キーボードコネクターのピン7-8を接続 - 電源投入に必要。

「GND」と「Vbat」は電源に接続。電圧範囲は+2.7〜+3.3V。モジュールに電源供給時、「Vdd」ラインには+3.5Vが必要。

「GND」、「SWDIO」、「SWCLK」、「NRST」をST-LINKプログラマーに接続。「NRST」ラインは非常に重要 - オリジナルファームウェアはロックされているため、このラインでプログラミングモードに入ります。

一部のプログラマーにはこのラインがありますが、安価なものはありません。しかし回避策があります。

また、一部のプログラマー(オリジナル「ST-LINK/V2」など)は「Vbat」ラインをプログラマーの「VCC/TVCC」ラインに接続する必要があります。

接続例(このプログラマーには「NRST」ラインなし):

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

2. PCに「ST-LINK utility」をインストール。使い方がわからない場合はWebに多数のチュートリアルがあります。

ユーティリティを設定(ターゲット → 設定):

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

プログラマーに「NRST」出力がある場合、電源を入れてユーティリティの「ターゲット → 接続」を押すだけ。

ない場合は以下の手順:

以下の画面になるはず:

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

3. MCUフラッシュは読み出しロックされているため、「Read Out Protection」を無効化する必要があります。このステップでオリジナルファームウェアが失われます!

ターゲット → 「オプションバイト」メニューを開く。以下の設定になっているはず:

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

「Read Out Protection」を「Disabled」にし、「Unselect all」ボタンを押してから「Apply」ボタンを押す。モジュールを再起動(電源切断)してみる。

「ターゲット → 接続」を押す。ログウィンドウに接続成功の情報が表示され、メモリ内容が0xFFで埋められているはず。これでカスタムファームウェアをMCUフラッシュに書き込めます。

4. 必要なファームウェアはこちら:https://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast

お使いのモジュールに適したHEXファイルを選び、ST-LINK utilityでMCUフラッシュにダウンロードします。

ステップ3: レーザー測距モジュールをArduinoに接続

基板上のTXパッドにワイヤーやコネクタをハンダ付けします:

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

接続回路図は下記参照。

まず、測距モジュールが正常動作するか確認。この段階ではOLEDディスプレイをArduinoに接続不要 - レーザー測距モジュールのTXラインをArduinoのTXラインに接続し、モジュールの電源ラインを+3V電源に接続するだけ。

空のスケッチを作成しArduinoに書き込む。Arduino IDEの「シリアルモニタ」を開く。ボーレート:250000を選択。

測距モジュールが正常なら、以下のデータが得られます:

実際には、このテストには専用のUSB-UARTコンバーターを使うのがベター。そのユーティリティで256000ボーレートを選択(X-40 MCUの実ボーレート)。

次に、ディスプレイ込みの完全な回路を組み立てます。

レーザー測距モジュールのTXラインをArduinoのRXラインに接続(Arduinoへのプログラム書き込み時はこのワイヤーを外す必要あり)。

全て正常なら、以下の結果が得られます:

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

ディスプレイに3つの数値が表示されます:

ステップ4: ゼロキャリブレーション

初回起動後、レーザー測距モジュールのキャリブレーションが必要です。

モジュールから一定距離に白い物体を置きます。この物体までの距離が測距モジュールのゼロ距離になります。キャリブレーション開始には、レーザー巻尺のキーボードを接続し、最下部のボタンを押します。モジュールが2回ビープ音を出します - キャリブレーション開始時と終了時(所要時間約10秒)。

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

これでレーザー測距モジュールが使用可能になります。

リンク:

1. Github - リバースエンジニアリング結果とソースコード。

2. Habr.com - レーザー巻尺リバースエンジニアリングプロセスの記事(Google翻訳版)。

英語が不自由で申し訳ありません - 私は非英語圏出身です。

コード

Arduinoスケッチ Arduino

No preview (download only).

Github

レーザー巻尺用コード: https://github.com/iliasam/Laser_tape_reverse_engineering

回路図

ブレッドボード組み立て回路図

DIY低コストレーザー測距モジュール for Arduino - 高速・信頼性・低価格

製造プロセス

  1. OpenSensorsで空気質を測定: ArduinoとPythonによるガイド
  2. 学校向けスマート体温監視システム: 正確、リアルタイム、安全
  3. Arduino用8ビットI/Oポートライブラリ:デジタル制御を拡張
  4. Arduino 64キー プロトタイピング キーボードマトリックス: シフトレジスタで自作キーボード
  5. Arduino Nano用 高性能2.8インチTFTシールド - 320×240 SPIディスプレイ
  6. Arduino用絶縁アナログ入力回路の設計:LM331 V-F変換+フォトカプラでノイズ耐性を確保
  7. 安価なArduinoブレスコントローラー自作 - USB-MIDI対応でDAW直結
  8. DCモーター制御の極意:PID制御とPWM出力による速度・方向制御のエキスパートガイド
  9. Arduino向けスマート屋内ナビゲーションロボットキット
  10. レーザー切断用途:木材から航空宇宙まで
  11. なぜ5Gが現代のスマート製造に不可欠なのか