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

Arduino用の安価なレーザー距離計を作る

コンポーネントと消耗品

>
Arduino Nano R3
× 1
Elecrow OLED 0.96 '' 128x64
× 1
X-40レーザー巻尺
× 1
LM2596DC-DCモジュール
× 1

必要なツールとマシン

>
はんだごて(汎用)
ST-LINKプログラマー

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

STMicroelectronicsST-LINKユーティリティ

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

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

もちろん、このタスクに特化したモジュールを使用することもできますが、それらのほとんどは高額です。 VL53L0X / VL53L1Xモジュールは安価ですが、視野が非常に広くなっています。

そこで私は解決策を見つけました。レーザー距離計として安価な「X-40」レーザー巻尺を使用することです。これらのデバイスの価格は20ドル以下で、最大40mの距離を最大3mmの精度で測定できます。ただし、2つの問題があります。テープから読み取り値を取得する方法がなく、測定が遅い-1Hz未満です。

その問題を解決するために、私はそのレーザー巻尺のリバースエンジニアリングを行い、レーザー距離計モジュールのSTM32MCU用に独自のファームウェアを作成しました。測定速度は私にとって重要であり、約60 Hzに達することができますが、最大安定距離は約6 mに減少しました(最大範囲全体は37 mですが、テストしていません)。

距離測定の精度は、ターゲットの色と距離に応じて1mmから10mmまで変化します。

モジュールの寸法:25x13x50mm。

重要なお知らせ:元のファームウェアが失われるため、デバイスを後でレーザー巻尺として使用することはできません!

「X-40」レーザー巻尺は、レーザー距離計モジュールのリビジョンが異なる可能性があり、私のファームウェアはそれらの一部のみをサポートしていることに注意してください!

「X-40」は、そのようなモジュールを備えたレーザー巻尺の唯一の名前ではありません-適切なモジュールを備えたいくつかの異なる中国のレーザー巻尺が存在することを私は知っています。

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

レーザー巻尺を分解して、そこからレーザー距離計モジュールを入手しましょう。

<図>

ケースから7本のネジを外す必要があります:

<図>

分解されたレーザー巻尺:

<図>

デバイスのケース内に小さなレーザー距離計モジュールがあります。モジュールからリボンケーブルを外し、ケースからモジュールを取り外す必要があります:

<図>

モジュールには「701A」のマークが付いていることに注意してください。私のファームウェアは「512A」と「701A」のモジュールバージョンのみをサポートしています。何人かのユーザーは、「703A」モジュールも機能していることを確認しました(私はそれをテストしませんでした)。

UPD 11/2019:
注意:新しい「x-40」レーザー巻尺には「M88B」モジュールが付属していることがわかりました。 マーキングはMCU付近のPCBで「88B」です。そのモジュールはSTM32F0MCUに基づいています(QFN-32パッケージがあります)。 そのモジュールは私のファームウェアではサポートされていません!

UPD 10/2021:
注意: U85Bモジュールのサポートを追加 :リンクを参照してください!それらは現代のタイプのレーザー巻尺で使用されています。

<図>


モジュールがサポートされている場合は、モジュールから電力線をはんだ付け解除する必要があります。

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

必要な機能を得るには、モジュールのMCUに専用のファームウェアを書き込む必要があります。

1.まず、MCUをプログラミングするためにいくつかのワイヤーをはんだ付けする必要があります。ピン配置は写真に示されています:

<図>

キーボードコネクタのピン7〜8を接続します。電源を入れる必要があります。

ライン「GND」と「Vbat」は電源に接続する必要があります。電源電圧範囲は+2.7 ... + 3.3Vです。モジュールに電力が供給されるときは、「Vdd」ラインに+ 3.5Vが必要です。

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

一部のプログラマーにはこの行があり、一部の(安価な)プログラマーにはありませんが、この問題の回避策があります。

また、一部のプログラマー(元の「ST-LINK / V2」など)は、プログラマーの「VCC / TVCC」ラインに接続するために「Vbat」ラインを必要とします。

接続例(このプログラマーには「NRST」行がありません):

<図>

2.「ST-LINKユーティリティ」をPCにインストールします。そのソフトウェアの使用経験がない場合は、Webに多くのチュートリアルがあります。

ユーティリティを設定する必要があります([ターゲット]-> [設定]):

<図>

プログラマーが「NRST」出力を持っている場合は、電源を入れて、ユーティリティで「ターゲット->接続」を押すだけです。

そのような行がない場合は、次の手順を実行する必要があります。

  • 電源を入れます。
  • モジュールの「NRST」ラインをGNDに接続します。
  • ユーティリティで[ターゲット]-> [接続]を押します。
  • 「NRST」ラインをGNDからすばやく切断します。
  • ユーティリティは接続を表示する必要があります

ヨンはそのような写真を撮らなければなりません:

<図>

3. MCUフラッシュは読み取り用にロックされているため、「読み取り保護」を無効にする必要があります。このステップで元のファームウェアが失われます!

[ターゲット]-> [オプションバイト]メニューを開きます。そのような設定が必要です:

<図>

「ReadOutProtection」を「Disabled」に切り替えて「Unselectall」ボタンを押し、「Apply」ボタンを押します。 (電源を切断して)モジュールを再起動してみてください。

[ターゲット]-> [接続]を押します。ログウィンドウに正常な接続に関する情報があり、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パッドにワイヤーまたはコネクタをはんだ付けする必要があります:

<図>

以下の接続回路図を参照してください。

まず、距離計モジュールが正常に機能していることを確認する必要があります。このステップでは、OLEDディスプレイをArduinoに接続する必要はありません。レーザー距離計モジュールのTXラインをArduinoのTXラインに接続し、モジュールの電力線を+ 3V電源に接続するだけです。

空のスケッチを作成し、Arduinoにロードします。 ArduinoIDEで「シリアルモニター」を開きます。ボーレートを選択:250000

レンジファインダーモジュールが正常に機能している場合は、同じデータが得られます:

実際、このテストには専用のUSB-UARTコンバーターを使用することをお勧めします。ユーティリティで256000ボーレートを選択します(これはx-40 MCUの実際のボーレートです)。

次に、ディスプレイ付きの完全な回路図を組み立てる必要があります。

レーザー距離計モジュールのTXラインをArduinoのRXラインに接続します(プログラムをArduinoにロードするときにそのワイヤーを切断する必要があります)。

すべてが正常に機能している場合、同じ結果が得られます:

<図>

3つの数字で表示を見ることができます:

  • "COUNT"-受信した値のカウンター
  • "AMPL"-信号の振幅。下の記号バー( "<--->")は、振幅を(対数目盛で)グラフで示しています。
  • 最大値-メートルとミリメートルでの距離。

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

最初の起動後、レーザー距離計モジュールを校正する必要があります。

モジュールから特定の距離に白いオブジェクトを配置する必要があります。このオブジェクトまでの距離は、距離計モジュールのゼロ距離になります。キャリブレーションプロセスを開始するには、レーザー巻尺からキーボードを接続し、一番下のボタンを押す必要があります。モジュールは、キャリブレーションの開始時と終了時に2回ビープ音を鳴らします(キャリブレーション期間は10秒近くです)。

<図>

これで、このレーザー距離計モジュールを使用できます。

リンク:

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

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

英語をお詫びします-私は英語を話さない国から来ました。

コード

  • Arduinoスケッチ
Arduinoスケッチ Arduino
プレビューなし(ダウンロードのみ)。
Github
レーザーテープのコードhttps://github.com/iliasam/Laser_tape_reverse_engineering

回路図

ブレッドボードアセンブリの概略図

製造プロセス

  1. OpenSensorsで空気の質を測定する方法
  2. レーザーカッターは何に使用されますか?
  3. 学校向けのSMART温度監視
  4. Arduino用の8ビットIOポートライブラリ
  5. Arduino用の64キープロトタイピングキーボードマトリックス
  6. ArduinoNano用TFTシールド-開始
  7. Arduino用の絶縁アナログ入力
  8. 安価なArduinoブレスコントローラー(USB-MIDI)
  9. DCモーターを制御するための秘訣
  10. 超クールな屋内ナビゲーション用ロボット
  11. 製造業における5Gの主張