電気と照明 超音波距離計 HC-SR04をArduinoに接続します。 距離計 HC-SR04 を Arduino に接続 距離センサー HC sr04

超音波距離計 HC-SR04をArduinoに接続します。 距離計 HC-SR04 を Arduino に接続 距離センサー HC sr04

こんにちは、みんな。
このミニレビューでは、以下を使用して独自に作成します。 超音波モジュール距離を測っています...

誠に申し訳ございませんが、梱包・開梱はございません。 私自身、他のレビューでは気に入らないので、自分のレビューを台無しにするつもりはありません。 注文した商品が異常な梱包や非常に卑劣な形態で到着しない限り...
トイレに行くと自動的に照明が点灯し、トイレを出ると自動的に消灯するというアイデアが生まれました。 これらの目的のために、pir スイッチを注文しました。また、念のため、pir センサーも別途注文しました。



スイッチは、家族全員が個別に訪れる部屋に設置されていました。
そして、トイレに行くときに典型的な手順を実行しながらレズギンカを踊ることができる人は誰もおらず、通常の姿勢でフリーズするのは誰にとっても典型的なことであることが判明しました。 ここでビャカが待ち構えていた。 良いこと、永遠のことを考えているだけで、電気がバタンと消えたり、とても迷惑です。
スイッチを調整するあらゆる方法が試みられましたが、望ましい結果は得られませんでした。
私たちは、必要な存在センサーを検出センサーに置き換えることによって、自分自身と物理学を欺くことに失敗しました。
そのため、スイッチと未使用の PIR センサーは次の場所に送られました。 長期保存庫良い時代が来て、彼らの地位が奪われるまで...
ゲートシステム用の複合レーダーですが、まだどこにも取り付けられていません。


電子レンジの電源は当然オフになっているのに、なぜ頭のてっぺんを電子レンジにさらす必要があるのでしょうか。 IR マトリックスだけが残ります。
事はかなり具体的です。 その最小ゾーンは部屋のサイズです。 訪問時にバタンと照明がついたり消えたりします。 しかし、欠点が 1 つあります。 センサーは非常に細心の注意を払っており、すべてが所定の位置に収まることを好みます。 ロール紙を動かしたり、便座を下げたり上げたりした場合は、リセットが必要です。 そして、彼の価格は異常ではありません。
そこで、解決策の模索が続きました。
インターネット上で、簡単なトピックを扱っているサイトを見つけました。 サーキットブレーカー超音波センサーに光が当たります。
このトピックは興味深いものに思えました。特にファームウェアで車輪を再発明する必要がないため、著者は私たちのために最善を尽くしてくれました。彼に感謝します。
図があり、ファームウェアがあります。 残っているのは、シグネットを作成し、出力に本格的な存在センサーを取得することだけです。 それとも理解できないのか...見てみましょう...
センサーはbanggoodで注文しました。配達時間が安定しているこのストアが気に入っています。追跡なしで28〜30日で注文できます。
トラックなしで時間通りに到着しました。 Banggood のトラックなしの小包の梱包は標準で、ゴミ袋だけです...
センサーは帯電防止素材で梱包されていたため、郵便トラブルを免れたのではないかと思います。 :0)
残念ながら帰りにゴミ袋を捨ててしまい、帯電防止剤はすでに家にあるのでセンサー以外は見せるものがなく、センサー自体もすでに製造時に擦り切れてしまっています(足はまっすぐになっています)デバイスのプロセス。
TTXセンサー:
- 45×20×23mm。 LxWxD (D - 脚を伸ばした状態)
- 重量 - 8.28グラム
- 供給電圧 - DC 5V
- 消費電流 - 15mA
- 最小作動距離 - 2 cm。
- 最大作動距離 - 4メートル
- 検出ゾーン角度 - 15 度
簡単に言うと。
センサーはエコー原理に基づいて動作します。 センサーの 1 つのピエゾが周波数 40 kHz のパルスのパケットを放射し、信号がセンサーの前の表面で反射され、反射された信号が別のピエゾで受信され、処理ユニットが受信したデータを処理してパルスを出力します。その長さは超音波信号の距離に比例します。
それらの。 出力にはインパルスがあり、その持続時間は私たちにとって重要です。
当社が製造する自動スイッチ/スイッチでは、マイクロコントローラーのメモリに保存されているパルスの持続時間と、新たに反射されたパルスの持続時間とを比較します。 新しいパルスの持続時間がメモリ内の持続時間より短い場合、マイクロコントローラーは検出ゾーン内に物体があり、ロードをオンにする必要があると判断します。パルスの長さが長い場合は、何もしません。ロードがオンになっている場合はオフにしてください。
さらに遠く:
センサーそのもの。


マイクロ回路上のマーキングは消去されています。


早速描き直しましょう 既製の図 Diptrace では、実験用に印を描いてスカーフを作ります。

製造工程はもう飽きた方も多いと思うのでネタバレで隠しました。
スカーフの作り方を一度ご紹介しました。 今回は何枚か写真を撮りましたが、捨てるのはもったいないです。
私はもうプロセスで人々を苦しめるつもりはありません。ボードについて質問がある場合は、個人メッセージを書いてください。
このトピックに関して私が収集したものと、Diptrace の図と印刷可能なスカーフをダウンロードするためのリンク。
写真を数枚。
スカーフと型紙を用意します。 フォトレジストが塗布されます。


私たちは照らし、洗い、エッチングします。


フォトレジストをエッチングして洗い流します。


マスクを適用し、テンプレートを照明します。


スカーフをカットして穴を開けます。



スカーフそのもの。
回路はATtiny13で組み立てました。
なぜテストではこんなに美しいのでしょうか? それは、el の下で別のボードと同時に行われただけです。 負荷。
なぜラジオ要素はこれほど愚かに配置されているのでしょうか? テストだから。 デバイスが組み立てられ、動作しているかどうかを確認します。 育てて組み立てても意味がありませんでした。


センサーをスカーフにはんだ付けします。


私たちはプログラムします。


その結果、30mA を消費し、5 ボルトの電源を備えた既製のパッケージ化されていないプレゼンス センサーを入手できます。 異物角度 15 度、距離 2 センチメートルから 3.5 メートルの事前にプログラムされた検出ゾーン内で。 検出するとLEDが点灯します。
動作原理は簡単です。 必要な場所にセンサーを向けます。 ボタンを押します。
設定LED(私の場合は赤)が点滅を始めます。
3 つのモードで点滅します。
10% LED 点灯 - 物体が範囲外、負荷オフ。
90% LED が点灯 - 物体が範囲内にあり、負荷がオンになっています。
50% LED が点灯 - 検出ゾーンは空いており、カウントダウンはファームウェアに応じて 60 秒または 10 秒、または 1 秒で、オフになるまでランプが点灯します。
その後、10 秒以内に検知ゾーンから離れる必要があります。
エリアを制限することができます。 これを行うには、設定を記憶する時点でゾーンの境界に立っている必要があります。これにより、ゾーンが制限されます。
パスポート最小2センチを確認します。 写真のように範囲を限定すると、ボックスとセンサーの間に指を入れるとLEDが点灯し、指を離すと消灯します。
ボックスを0.5センチメートル近づけると、LEDが点灯し、デバイスはチューニングを拒否します。


最大4メートルは確認できなかった。 最大距離これは確認されており、デバイスは3.5メートルの距離にいる人物を自信を持って記録します。 の上 3メートル自信を持って私の手を15×15センチメートルの箱に固定します。 負荷をオンにしますが、ボックスを取り外すまでオフになりません。
結論。
- 出来上がった存在センサーが気に入りました。
- 最もシンプルで便利なセットアップ。
- それは実際に動作します。
- 安くて陽気です。
一般に、これは超音波距離測定モジュール HY-SRF05 に基づく適切なデバイスです。
近い将来、場所に合わせて調整します。ボックスを選択するだけです。
ライトを消すことを恐れることなく、希望の位置でフリーズできるようになりました。
興味のある方は、さらに多くの使用方法を考えることができます。 特にこのセンサーは基本的に Arduino エンジニア向けに設計されています。 あるいは、彼らにとってはそうではないかもしれません... +41を購入する予定です お気に入りに追加 レビューが気に入りました +41 +81

Arduino 超音波距離センサーは、比較的シンプルで、十分な精度と可用性があるため、ロボット工学プロジェクトで非常に人気があります。 これらは、障害物を回避したり、物体の寸法を取得したり、部屋の地図をシミュレートしたり、物体の接近や除去を知らせたりするのに役立つデバイスとして使用できます。 このようなデバイスの一般的なオプションの 1 つは距離センサーであり、その設計には以下が含まれます。 超音波距離計 HC SR04。 この記事では、距離センサーの動作原理について説明し、Arduino ボードに接続するためのいくつかのオプション、相互作用図、スケッチ例を検討します。

超音波センサーが物体までの距離を測定する機能は、ソナーの原理に基づいています。超音波ビームを送信し、その反射を遅延して受信することにより、デバイスは物体の存在と物体までの距離を測定します。 受信機によって生成された超音波信号は障害物に反射され、一定時間後に障害物に戻ってきます。 この時間間隔が、物体までの距離を決定するのに役立つ特性となります。

注意! 動作原理は超音波に基づいているため、このようなセンサーは吸音物体までの距離を測定するのには適していません。 表面が平らで滑らかな物体は測定に最適です。

HC SR04センサーの説明

Arduino距離センサーは非接触型のデバイスであり、高精度な測定と安定性を実現します。 測定範囲は 2 ~ 400 cm であり、その動作は電磁放射や太陽エネルギーの影響を大きく受けません。 HC SR04 Arduino を備えたモジュールキットには、受信機と送信機も含まれています。

超音波距離計 HC SR04 には次の技術パラメータがあります。

  • 供給電圧5V;
  • 動作電流パラメータは 15 mA です。
  • パッシブ状態での現在の強さ< 2 мА;
  • 視野角 – 15°;
  • タッチ解像度 - 0.3 cm。
  • 測定角度 – 30°;
  • パルス幅 – 10 -6 秒。

センサーには 4 つのリード (標準 2.54 mm) が装備されています。

  • ポジティブタイプの電源接点 – +5V;
  • トリガー (T) – 入力信号出力。
  • Echo (R) – 出力信号出力。
  • GND – 「グランド」ピン。

Arduino用SR04モジュールはどこで購入できますか

距離センサーはかなり一般的なコンポーネントであり、オンライン ストアで簡単に見つけることができます。 最も安いオプション(1個あたり40〜60ルーブル)は、伝統的に有名なウェブサイトにあります。

HC-SR04 Arduino用距離センサーモジュール 信頼できるサプライヤーからの HC-SR04 超音波センサーのもう 1 つのオプション
近接センサー SR05 超音波式 HC-SR05(性能向上) 信頼できるサプライヤーからの UNO R3 MEGA2560 DUE 用モジュール HC-SR05 HY-SRF05

Arduinoとの連携スキーム

データを取得するには、次の一連のアクションを実行する必要があります。

  • 10 マイクロ秒のパルスを Trig 出力に適用します。
  • Arduino に接続された hc sr04 超音波距離計では、信号は周波数 40 kHz の 8 つのパルスに変換され、エミッターを介して前方に送信されます。
  • パルスが障害物に到達すると、障害物から反射され、R レシーバーによって受信され、Echo 出力に入力信号が提供されます。
  • コントローラー側では、受信信号を数式を使用して距離に変換する必要があります。

パルス幅を 58.2 で割るとセンチメートル単位のデータが得られ、148 で割るとインチ単位でデータが得られます。

HC SR04をArduinoに接続する

超音波距離センサーを Arduino ボードに接続するのは非常に簡単です。 接続図を図に示します。

グランドピンをArduinoボードのGNDピンに接続し、電源出力を5Vに接続します。 Trig 出力と Echo 出力をデジタル ピンを介して Arduino に接続します。 ブレッドボードを使用した接続オプション:

HC SR04を使用するためのライブラリ

Arduino 上で HC SR04 距離センサーを操作しやすくするために、NewPing ライブラリを使用できます。 ping の問題はなく、いくつかの新機能が追加されています。

ライブラリの機能は次のとおりです。

  • さまざまな超音波センサーを操作する機能。
  • 1 本のピンだけで距離センサーを使用できます。
  • エコー ping がない場合でも 1 秒の遅延はありません。
  • 簡単なエラー修正用のデジタル フィルターが内蔵されています。
  • 最も正確な距離計算。

NewPingライブラリをダウンロードできます

HC SR04センサーによる距離測定の精度

センサーの精度は、いくつかの要因によって決まります。

  • 気温と湿度。
  • 物体までの距離。
  • センサーに対する相対的な位置(放射図による)。
  • センサーモジュール要素の性能の質。

超音波センサーの動作原理は、空気中を伝播する音波の反射現象に基づいています。 しかし、物理学の授業でご存知のように、空気中の音の伝播速度は、その空気自体の特性 (主に温度) に依存します。 センサーは波を発し、戻ってくるまでの時間を測定しますが、波がどのような媒体で伝播するかは分からず、計算に一定の時間がかかります。 平均値。 実際の条件では、気温要因により、HC-SR04 は 1 ~ 3 ~ 5 cm の誤差が生じる場合があります。

オブジェクト要素までの距離は重要です。なぜなら... 近隣の物体からの反射の確率が増加し、信号自体は距離とともに減衰します。

また、精度を高めるには、センサーを正しく向ける必要があります。物体が放射パターンの円錐内にあることを確認してください。 簡単に言えば、HC-SR04の「目」は被写体をまっすぐに見る必要があります。

誤差と測定の不確実性を減らすために、通常は次のアクションが実行されます。

  • 値は平均化されます(数回測定し、スパイクを除去してから平均を求めます)。
  • センサー (たとえば、) を使用して温度が測定され、補正係数が適用されます。
  • センサーはサーボモーターに取り付けられており、これを使って「頭を回転」させ、放射パターンを左または右に動かします。

距離センサーの使用例

例を見てみましょう 単純なプロジェクト Arduino Uno ボードと HC SR04 距離センサーを搭載。 スケッチでは、オブジェクトまでの距離の値を受け取り、Arduino IDE のポート モニターに出力します。 スケッチと接続図を簡単に変更して、物体が近づいたり離れたりしたときにセンサーが信号を送るようにすることができます。

センサーをArduinoに接続する

スケッチを作成するとき、センサーを接続するための次のピン配置オプションが使用されました。

  • VCC:+5V
  • トリガー – 12ピン
  • エコー – 11ピン
  • アース (GND) – アース (GND)

スケッチ例

相対的にセンサーを使ってすぐに作業を開始しましょう 複雑なオプション– 外部ライブラリを使用せずに。

このスケッチでは、次の一連のアクションを実行します。

  • 短いパルス (2 ~ 5 マイクロ秒) で、距離センサーをエコーロケーション モードに切り替えます。このモードでは、周波数 40 KHz の超音波が周囲の空間に送信されます。
  • センサーが反射信号を分析し、遅延に基づいて距離を決定するのを待ちます。
  • 距離の値を取得します。 これを行うには、HC SR04 が ECHO 入力で距離に比例したパルスを生成するまで待ちます。 パルス持続時間は、pulseIn 関数を使用して決定します。この関数は、信号レベルが変化するまでの経過時間を返します (この場合、パルスの立ち下がりエッジが現れるまで)。
  • 時間を受信したら、その値を定数で割ってセンチメートル単位の距離に変換します (SR04 センサーの場合、「そこ」信号では 29.1、「後方」信号では同じで、合計は 58.2 になります) )。

距離センサーが信号を読み取らない場合、出力信号の変換では短いパルスの値 (LOW) が取得されることはありません。 一部のセンサーの遅延時間はメーカーによって異なるため、上記のスケッチを使用するときはその値を手動で設定することをお勧めします (サイクルの開始時にこれを行います)。

距離が 3 メートルを超えると、HC SR04 の動作が低下し始めるため、遅延時間を 20 ms 以上に設定することをお勧めします。 25または30ミリ秒。

#define PIN_TRIG 12 #define PIN_ECHO 11 長時間、cm; void setup() ( // シリアル ポート経由の通信を初期化する Serial.begin (9600); // 入出力を定義 pinMode(PIN_TRIG, OUTPUT); pinMode(PIN_ECHO, INPUT); ) void loop() ( // First 2 ~ 5 マイクロ秒続く短いパルスを生成します。 上級信号を受信したら、約 10 マイクロ秒待ちます。 この時点で、センサーは 40 KHz の周波数で信号を送信します。 遅延マイクロ秒(10); デジタル書き込み(PIN_TRIG, LOW); // エコーロケーター上の音響信号の遅延時間。 持続時間 = パルスイン(PIN_ECHO, HIGH); // あとは時間を距離に変換する作業が残っています cm = (duration / 2) / 29.1; Serial.print("オブジェクトまでの距離: "); シリアルプリント(cm); Serial.println(「参照してください。」); // スケッチを正しく動作させるための測定間の遅延遅延(250); )

NewPingライブラリを使用してスケッチする

次に、NewPing ライブラリを使用したスケッチを見てみましょう。 コードは大幅に簡素化されます。 前述のすべてのアクションはライブラリ内に隠されています。 必要なのは、NewPing クラスのオブジェクトを作成し、距離センサーを接続するピンを指定し、オブジェクトのメソッドを使用することだけです。 この例では、距離をセンチメートル単位で取得するには、ping_cm() を使用する必要があります。

#含む #define PIN_TRIG 12 #define PIN_ECHO 11 #define MAX_DISTANCE 200 // 正しいとみなされる最大距離を決定する定数。 // 距離を取得するためにそのメソッドを使用するオブジェクトを作成します。 // パラメータとして、センサーの ECHO 出力と TRIG 出力が接続されているピン番号を渡します。 NewPing sonar(PIN_TRIG, PIN_ECHO, MAX_DISTANCE); void setup() ( // シリアルポート経由の通信を 9600 の速度で初期化します Serial.begin(9600); ) void loop() ( // 正しい動作には開始遅延が必要です。delay(50); // 値を取得します距離センサーから取得し、それを変数に保存します。 unsigned int distance = sonar.ping_cm(); // ポートモニターに距離を出力します。 Serial.print( distance) Serial.println("cm");

超音波距離計 HC SR04を1ピンで接続した例

HC-SR04とArduinoの接続は1本のピンで行えます。 このオプションは、大規模なプロジェクトに取り組んでいて、十分な空きピンがない場合に便利です。 接続するには、TRIG ピンと ECHO ピンの間に 2.2K の抵抗を取り付け、TRIG ピンを Arduino に接続するだけです。

#含む #define PIN_PING 12 // Arduino ピンは距離センサーのトリガー ピンとエコー ピンに接続されます。 #define MAX_DISTANCE 200 // 制御できる最大距離 (400 ~ 500cm)。 NewPing ソナー(PIN_PING、PIN_PING、MAX_DISTANCE); // ピンと最大距離を調整 void setup() ( Serial.begin(9600); // データと 115200 bps の送信周波数でプロトコルを開きます。 ) void loop() ( late(50); // 遅延 50生成された波間のミリ秒 29 ミリ秒 – 最小 許容値 unsigned int distanceSm = sonar.ping(); // 信号を作成し、その継続時間パラメーターを µs (uS) 単位で取得します。 Serial.print("Ping: "); Serial.print(距離Sm / US_ROUNDTRIP_CM); // 時間パラメータを距離値に変換し、結果を表示します (0 は距離を超えることに対応します) 許容限界) Serial.println("cm"); )

簡単な結論

超音波距離センサーは汎用性があり、ほとんどの趣味のプロジェクトに使用できるほど正確です。 この記事では、Arduino ボードに簡単に接続できる、非常に人気のある HC SR04 センサーについて説明します (このためには、すぐに 2 つの空きピンを用意する必要がありますが、1 つのピンを使用する接続オプションもあります)。 センサーを操作するための無料のライブラリがいくつかあります (この記事ではそのうちの 1 つである NewPing のみが説明されています) が、これらを使用しなくても問題ありません。センサーの内部コントローラーと対話するためのアルゴリズムは非常に単純であり、それを示しました。記事上で。

ベース 自分の経験、HC-SR04センサーは10cmから2mの距離で1cm以内の精度を示すと主張できますが、それより短い距離や長い距離では、強い干渉が発生する可能性があり、これは周囲の物体と使用方法に大きく依存します。 しかし、ほとんどの場合、HC-SR04は素晴らしい仕事をしてくれました。

こんにちは、親愛なるプログラマーの皆さん。 今日は3回目のレッスンに進みます。 超音波距離計 HC-SR04 を Arduino に接続する方法を学びます。。 整理しましょう 距離計の動作原理、このデバイスの特性とプログラミング。

さあ、始めましょう! まずは距離計の特徴から見ていきましょう。

超音波センサー HC-SR04の特徴

このような超音波センサーの赤外線センサーに対する大きな利点は、超音波センサーが光源や色の障害物の影響を受けないことです。 薄い物体や毛むくじゃらの物体までの距離を測定するのが難しい場合があります。 空気中の音速は温度に依存すると言いたいのです。 したがって、測定誤差は温度の上昇または下降に応じて変化します。

  • 動作電圧 4.8V ~ 5.5V (最大±0.2V)。
  • 測定範囲:2cm~400cm。
  • 動作温度範囲: 0°C ~ 60°C (±10%)。
  • スタンバイモード時の消費電流は最大2mAです。
  • 動作モードでの消費電流は 15 mA です。
  • 超音波の動作範囲は周波数 40 kHz です。
  • 視野角15度。
  • 3 mmの分解能で0.03~0.6 msの距離を測定します。
  • 0.6 から 5 まで誤差は増加します。

センサーには 4 つの出力があります。

  • VCC:「+」電源
  • TRIG (T): 入力信号出力
  • ECHO(R):出力信号出力
  • GND:「-」電源

超音波距離計接続に必要な部品

  • Arduino (私たちの場合 - UNO)
  • ブレッドボード (デバイスを Arduino に簡単に接続するためのブレッドボード)
  • ワイヤー
  • 超音波センサー HC-SR04

超音波距離計 HC-SR04 の動作原理


  1. 持続時間 10 μs のパルスを Trig ピンに適用します。
  2. 距離計の内部では、入力パルスは 40 kHz の 8 パルスに変換され、「T アイ」を通して前方に送信されます。
  3. 障害物に到達した衝撃は反射して「Rアイ」で受信されます。 Echo ピンで出力信号を取得します。
  4. コントローラー側で直接、受信信号を距離に変換します。

距離計をArduinoに接続するための図

超音波センサーを Arduino に接続する図が表示されます。 ご覧のとおり、非常にシンプルで非常に興味深いものです。 ただし、正しい接続を忘れないでください。 私のアドバイス: 接続エラーの検索により多くの時間を費やすことになるため、決して急いでデバイスを接続しないでください。


次のステップは、プログラムのスケッチを検討することです

プログラミング超音波センサー HC-SR04

#定義する Trig 8 /* パルス供給ピンを指定*/
#define Echo 9 /* パルス受信端子を指定*/
void setup() (
ピンモード (トリガー、出力); /*終了として開始 */
ピンモード (エコー、入力); /*入力として開始 */
シリアルの開始 (9600); /* ポート速度を設定します */
}
unsigned int impulseTime=0;
unsigned int distance_sm=0;
void ループ() (
digitalWrite(Trig, HIGH); /* 距離計のトリガー入力にパルスを適用します */
遅延マイクロ秒(10); /* パルスは 10 マイクロ秒続きます */
digitalWrite(Trig, LOW); // パルスをオフにする
impulseTime=pulseIn(エコー、HIGH);
/*インパルスを受信し、その長さを計算します*/
距離_sm =インパルス時間/58; /* 値をセンチメートルに変換します */
Serial.println(距離_sm); /* 値をプログラムポートに出力します */
遅延(200);
}

このコードを貼り付けたら、それをプログラムにロードし、「ポート モニター」を有効にします。 そこにはセンサーから障害物までの距離が表示されるので、物体の距離を変えてみてください。

これはあなたが手に入れるべきものです!



すべてうまくいったことを願っています! ご質問がございましたら、下記までご連絡ください。

アルドゥイーノ - ユニークなシステムこれはエンジニアの手の中にある粘土であり、そこから好きなものを何でも成形できます。 これは、さまざまな方向の多種多様なセンサーとモジュールによって可能になります。 シンプルな電流検出チップから Arduino hc hc sr04 のようなものまで。

これは、超音波を使用して、照射された対象物までの距離を測定できる特別なセンサーです。 これを使用する最も簡単な方法は、単純な距離計を作成することであることは容易に推測できます。 プロジェクトの組み立てを開始する前に、Arduino hc sr04 と、それを使用する際にどのようなニュアンスを考慮する必要があるかを見てみましょう。

1. HC SR04センサーを使用してArduinoで距離計を組み立てる基本

Arduino で距離計を構築する場合、HC SR04 なしでは実現できません。 結局のところ、このモジュールは、操作の容易さ、可用性、低コストにより需要が高いため、このようなシステムで最もよく使用されます。 同時に、測定値の精度は高いままであり、これはこのようなシステムでは非常に重要です。 このチップから、Arduino 上の距離計だけでなく、物体までの距離を感知して障害物を回避する本格的なロボットも組み立てることができます。

ただし、今日は Arduino の距離計を使用したオプションを見ていきます。これは、基本にまだあまり精通していないこの分野の初心者にとって理想的であるためです。 その後、発明を修正したい場合は、部屋の本格的な 3 次元マップをシミュレートするように教えることができます。これは、家具や建物を設計および構築する人にとって便利です。 しかし、最初にそれが一般的にどのように機能するかを検討する価値があります この装置また、Arduino でレーザー距離計を自分の手で作成する前に学ぶべき組み立ての基礎についても説明します。

Arduino 上の距離計は、イルカが自然界で物体までの距離を測定し、障害物を冷静に回避するために使用するソナーをベースにしています。 これは次を使用して行われます 物理的特性固形物に衝突すると反射してセンサーに戻ってくる超音波。

次に、メッセージが送信されてから波が戻ってくるまでの経過時間を計算し、それを 2 で割って、数式と音速を使用して、物体までの平均距離を計算するプログラム コードが機能します。

なぜ平均的なのでしょうか?

ポイントは誰でも 超音波センサーそれでも 10 分の 1 メートル単位で間違えられることはありますが、これは次のような事実によるものです。 さまざまな素材、周囲の環境、その他の変数は、音の表面からの動きや反射の速度に影響を与える可能性があります。 そしてこのプロジェクトでは、 理想的なシステム、現実世界では機能しません。

これらすべての要素を考慮に入れることはできますが、それでもすべての変数をプログラムすることはできません。そのため、Arduino 距離測定器はプロ用機器の測定値からはまだ遠く離れているため、私たちの仕事は専門機器の測定値にできるだけ近いデータを取得することです。正確さにおいて。

超音波装置を組み立てるときに、事前に考慮すべきもう 1 つのニュアンスがあります。 Arduino距離計– すべての表面が測定に適しているわけではありません。 実際のところ、黒いシャツが電磁波を吸収するのと同じように、一部の素材は音を吸収したり、その動きを過度に歪めたりする可能性があります。

したがって、衝撃波の動きを妨げない滑らかで平らな表面でデバイスを使用するのが最善であり、機能も制限されます。 しかし、その低価格と使いやすさのおかげで、このセンサーは依然として非常に人気があります。

2. レッスンでは何が行われますか?

次の原理に従って動作する距離計を組み立てます。物体が 4 センチメートル未満の距離に近づくと赤色の LED が点灯し、そうでない場合は緑色の LED が点灯します。

hc-sr04 距離計による距離測定の精度を確認する非常に単純な例です。 精度をチェックするための基礎となるのは、単純な定規です:)

3. ツール

システムの組み立てプロセスの途中で再び店舗に駆け込むことを避けるために、便利なツールをすべて事前に準備しておくことをお勧めします。 したがって、次のものが手元にあることを確認する必要があります。

  1. はんだごて。 良い選択電力を調整できるデバイスは、あらゆる状況に適応できるようになります。
  2. 指揮者。 当然のことながら、センサーを MK に接続する必要がありますが、標準のピンが常にこれに適しているとは限りません。
  3. USBポート用のアダプターです。 マイクロコントローラーにポートが内蔵されていない場合は、別の方法で PC に接続できることを確認してください。 結局のところ、追加のライブラリと新しいファームウェアをプロジェクトにロードする必要があります。
  4. はんだ、松脂、その他の小物(独立した作業スペースを含む)。
  5. チップ自体とMK、および必要に応じて将来のデバイスのハウジング。 最も経験豊富なエンジニアは、プロジェクトのシェルを 3D プリンターで印刷することを好みますが、大都市に住んでいる場合は、お金をかける必要はありません。 プリンターをレンタルしている会社を探すことができます。

Arduino 距離計は非接触型デバイスであり、正確な測定が可能であることを理解する価値があります。 しかし、それでも、プロ用のデバイスはまったく異なるテクノロジーを使用し、すべての素材に対して長時間の校正を経ているため、いずれの場合でもより優れていることを忘れてはなりません。 また、私たちのプロジェクトの距離測定範囲は 0.03 ~ 4 メートルと限られており、すべての場合に適しているわけではありません。

しかし、良いことに、デバイスの動作は電磁放射や電磁波の影響をまったく受けません。 太陽光エネルギー。 センサーキットにはすでに含まれています 必要な受信機 Arduino 超音波距離計を組み立てるときに便利な送信機も含まれています。

重要! このレッスンでは何もはんだ付けする必要はありません。 ブレッドボードとジャンパー線を使用します。 ただし、最終的に完全なデバイスを組み立てたい場合は、上で示したすべてのことが役に立ちます。

4. 付属品

まだ何もはんだ付けしないことにしたため、最適な部品セットは次のようになります。

  • 1 - Arduino UNO R3 (または同等のもの)
  • 1 - 超音波距離センサー HC-SR04
  • 1 - 赤色LED
  • 1 - 緑色の LED
  • 2 - 抵抗 560 オーム
  • 1- 開発ボード
  • 8 - ジャンパー線 (オス-オス)
  • 1 - 距離を測定するための定規

5. HC SR04センサーの接続

センサーの接続に問題はないはずです。 導体を使用して電源ピンをソースまたは MK に接続し、入力と出力をそれぞれ MK に直接接続するだけで十分です。 以下の図を使用して回路を組み立てます。

SR04 センサー自体には、考慮すべき次の特性があります。

  1. 電源電圧 – 5V。
  2. 電流15mAの回路で動作します。
  3. センサーを使用しない場合でも、センサーを受動的状態に維持するために最大 2 mA が必要です。
  4. モジュールの視野角は小さく、わずか 15 度です。
  5. センサー解像度 – 10分の3cm。
  6. しかし、測定角度はすでに快適な 30 度です。

センサーには 2.54 mm 規格に準拠した 4 つのピンもあります。 +5V の正電圧を供給する電源用の接点、信号入出力用のピン、および接地が含まれます。

最終バージョンでは、デバイスは次のようになります。

6. コード

私たちのデバイスのコードは以下のとおりです。 距離が 4cm 未満になると赤色 LED が点灯することに注意してください。

/* Arduino HC-SR04 超音波距離センサー VCC を 5v に接続、GND を GND に接続 エコーを Arduino のピン 13 に接続、トリガーを Arduino のピン 12 に接続 赤色 LED のプラス側を Arduino のピン 11 に接続 緑色 LED のプラス側を Arduino のピン 10 に接続 */ #define trigPin 13 #define echoPin 12 #define LED 11 #define LED2 10 void setup() ( Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(led, OUTPUT); pinMode (led2, OUTPUT); ) void loop() ( 長い継続時間、距離;digitalWrite(trigPin, LOW);layMicroseconds(2);digitalWrite(trigPin, HIGH);layMicroseconds(10);digitalWrite(trigPin, LOW);duration =パルスイン(エコーピン、HIGH); 距離 = (期間/2) / 29.1;< 4) { // На этом этапе происходит вкл/выкл светодиода digitalWrite(led,HIGH); // когда загорается красный, зеленый обязан выключится digitalWrite(led2,LOW); } else { digitalWrite(led,LOW); digitalWrite(led2,HIGH); } if (distance >= 200 || 距離<= 0){ Serial.println("Out of range"); // Вне диапазона } else { Serial.print(distance); Serial.println(" cm"); // тут тоже можно указать " см" } delay(500); }

唯一覚えておくべきことは、すべての関数やライブラリが専門家によって書かれているわけではないということです。 それらの多くはあなたのような初心者によって作成されているため、センサーが機能していないか、間違ったデータを生成していると結論付ける前に、コードを確認してください。

しかし、将来自分で多くのものを書くためには、プログラミングと C++ の基礎を学んだ方がはるかに良いでしょう。

7. 起動とセットアップ

デバイスを初めて起動すると、次のことが起こります。

  1. パルスが Trig 入力に送信されます。
  2. センサー自体では、信号は 8 つのパルスに変換され、その周波数は 40 kHz に達し、それに応じてパルスを前方に送信します。
  3. 障害物に到達すると、パルスは反射されて受信機に戻り、マイクロコントローラーで即座に計算が行われ、すべての情報が出力デバイスに送信されます。 今回はPCコンソールですが、将来的にはLEDスクリーンにデータを表示するレッスンも行う予定です。

最初に開始するときは、測定の精度を比較できる定規を使用します。 デバイスの起動後、コンソールに表示されるデータを確認します。

このセンサーは非常に人気があり、センサーを使用する独自のソリューションを作成する人が増えています。

物体までの距離を測定するには、コウモリのようなロケーターの原理で動作する超音波距離計 HC-SR04 を使用できます。 このようなセンサーを使用すると、障害物を回避するさまざまなロボットを設計したり、照明やその他の負荷を自動的にオンにする回路を組み立てたり、超音波セキュリティ システムを組み立てたりすることができます。 HC-SR04 レンジファインダーは、さまざまなマイクロコントローラーに接続できる既製のモジュールです。Arduino UNO の中国版と組み合わせて例を実行します。

センサーの前面には、送信 (T) と受信 (R) の 2 つのセンサーがあります。 送信センサーは、周波数 40 kHz の音響パルスを生成します。 障害物に到達すると、その衝撃は反射され、受信センサーによって捕捉されます。 かなり高い精度で、2 cm から 4 m の範囲の物体までの距離を測定できます。センサーの動作は太陽光や物体の色の影響を受けません。

電子機器はセンサーの背面にあります。 MAX3232チップは送信センサーを制御します。 LM324 オペアンプは、受信センサーから受信した信号を増幅します。

マイクロコントローラーに接続するには、4 つのピンが使用されます。

Vcc– Arduino の 5V ピンに接続します。
トリガー– デジタル入力には、10 μs の持続時間を持つ論理ユニットが供給されます。 次に、センサーは 40 kHz の周波数で 8 サイクルの超音波信号を送信します。 反射信号を受信すると、物体までの距離が計算されます。
エコー– デジタル出力。 計算が完了すると、論理ユニットが適用されます。 論理ユニットをファイルする時間は、測定された距離に比例します。
Trig と Echo は、スケッチで指定されている Arduino のデジタル ピンに接続されています。
グランド– Arduino ボードの対応するピンに接続します。

Unoの中国製アナログの例を使用した、HC-SR04とArduinoの接続図。

Arduinoで書いてみよう スケッチNo.1、オブジェクトまでの距離が変わります。 例では、「」をピン留めします。 トリガー" は Uno のピン 2 に接続されており、ピン " エコー"を3ピンにします。

int TrigPin = 2; // Trig ピンは Arduino の 2 番ピンに接続されます。
int EchoPin = 3; // エコーピンはArduinoの3番ピンに接続されています。

void setup() (
Serial.begin (9600);//COM ポートの速度を設定します。
pinMode(TrigPin, OUTPUT);//Trig ピンを出力として設定します。
pinMode(EchoPin, INPUT);//Echo ピンを入力として設定します。
}
void ループ() (
int 距離、期間;
.
.
.
.
Serial.print(duration);//ディスプレイに距離値を表示します。
Serial.println("cm");
late(1000);//1000ミリ秒待ちます。
}

ライン " 期間 = 期間/29/2;" の距離を計算します。" cm"、インチ単位で計算する必要がある場合、行は次のようになります。" 期間 = 期間/74/2;».

スケッチの結果はシリアル ポート モニター ウィンドウに表示されます。

スケッチその2物体までの距離が 50 cm 未満の場合、Uno ボードに組み込まれた LED が点灯します。LED はピン 13 にぶら下がっています。

int トリガピン = 2;
int EchoPin = 3;
int LedPin = 13;

void setup() (
シリアル.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(LedPin, OUTPUT);
}
void ループ() (
int 距離、期間;
digitalWrite(TrigPin, HIGH);//論理 1 が Trig ピンに適用されます。
遅延マイクロ秒(10);//この状態は 10 マイクロ秒間保持されます
digitalWrite(TrigPin, LOW);//この状態は削除されます
duration =pulseIn(EchoPin, HIGH);//Echo ピンからの値。継続時間値に読み書きされます。
継続時間 = 継続時間/29/2;//距離の計算。 音速 340 m/s または 1 センチメートルあたり 29 マイクロ秒
Serial.print(期間);
Serial.println("cm");
if (期間<50) // Если расстояние менее 50 сантиметром
{
digitalWrite(LedPin、HIGH); // LEDが点灯する
}
それ以外
{
デジタル書き込み(LedPin、LOW); // そうしないと点灯しません
}
遅延(1000);
}

記事「」で説明したように、LED の代わりに白熱灯を接続すると、シンプルな自動照明システムが完成します。 このような構造物を部屋のどこかに置くと、訪問者が距離計の範囲に入ると自動的に部屋の照明が点灯します。 距離計の静止電流は 2 mA 未満です。

スケッチ #3 LEDを圧電素子(スクイーカー、ブザー)に置き換えてみましょう。物体までの距離が50 cm未満の場合に音を発します。これにより、単純な音響レーダーまたは音響アラームが得られます。

同様のブザーは、コンピュータで BIOS を通知するために使用されたり、子供用のおもちゃでも音を鳴らして使用されます。

接続図はシンプルで、ブザーの黒い線をArduinoのGNDピンに接続し、赤い線を任意の空いているデジタルピンに接続します。PWM機能(3、5、6、9、10、11、13)を使用します。 。 この例では、これはピン 5 です。関数を使用してピエゾ エミッタを接続します。 アナログ書き込み()。 この機能では音のピッチを変更することはできません。音は常に約 980 Hz の周波数になります。

int トリガピン = 2;
int EchoPin = 3;
int BeepPin = 5;

void setup() (
シリアル.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(BeepPin, OUTPUT);
}
void ループ() (
int 距離、期間;
digitalWrite(TrigPin, HIGH);//論理 1 が Trig ピンに適用されます。
遅延マイクロ秒(10);//この状態は 10 マイクロ秒間保持されます
digitalWrite(TrigPin, LOW);//この状態は削除されます
duration =pulseIn(EchoPin, HIGH);//Echo ピンからの値。継続時間値に読み書きされます。
継続時間 = 継続時間/29/2;//距離の計算。 音速 340 m/s または 1 センチメートルあたり 29 マイクロ秒
Serial.print(期間);
Serial.println("cm");
if (期間<50) // Если расстояние менее 50 сантиметром
{
アナログ書き込み(ビープピン, 50); // ピエゾエミッタをオンにする
}
それ以外
{
アナログ書き込み(ビープピン, 0); // ピエゾエミッターをオフにする
}
遅延(1000);
}

対象物までの距離が50cm未満になるとブザーが鳴ります。

スケッチ #4ブザーも使用しますが、機能のみを使用します トーン()を使用すると、さまざまな状況でサウンドのトーンを変更できます。

int トリガピン = 2;
int EchoPin = 3;
int BeepPin = 5;

void setup() (
シリアル.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(BeepPin, OUTPUT);
}
void ループ() (
int 距離、期間;
digitalWrite(TrigPin, HIGH);//論理 1 が Trig ピンに適用されます。
遅延マイクロ秒(10);//この状態は 10 マイクロ秒間保持されます
digitalWrite(TrigPin, LOW);//この状態は削除されます
duration =pulseIn(EchoPin, HIGH);//Echo ピンからの値。継続時間値に読み書きされます。
継続時間 = 継続時間/29/2;//距離の計算。 音速 340 m/s または 1 センチメートルあたり 29 マイクロ秒
Serial.print(期間);
Serial.println("cm");
if (期間<50) // Если расстояние менее 50 сантиметром
{
}
それ以外
{
noTone(ビープピン); // ピエゾエミッターをオフにする
}
遅延(1000);
}

列をなして " トーン(ビープピン、500);「パラメータ」 500 「音の周波数は 500 Hz に設定されています。このパラメータは 31 Hz から、ピエゾ エミッタと人間の聴覚のパラメータによって制限される限界まで設定できます。このスケッチは、スケッチ No. 3 の実験を繰り返しますが、 tone() 関数。サウンドの周波数を設定します。

スケッチ #5音の音色を変えてみましょう。 50cm以上離れると周波数1000Hzの音が出ます。 物体までの距離が 50 cm 未満になると、音の周波数が 500 Hz に変わります。

int トリガピン = 2;
int EchoPin = 3;
int BeepPin = 5;

void setup() (
シリアル.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(BeepPin, OUTPUT);
}
void ループ() (
int 距離、期間;
digitalWrite(TrigPin, HIGH);//論理 1 が Trig ピンに適用されます。
遅延マイクロ秒(10);//この状態は 10 マイクロ秒間保持されます
digitalWrite(TrigPin, LOW);//この状態は削除されます
duration =pulseIn(EchoPin, HIGH);//Echo ピンからの値。継続時間値に読み書きされます。
継続時間 = 継続時間/29/2;//距離の計算。 音速 340 m/s または 1 センチメートルあたり 29 マイクロ秒
Serial.print(期間);
Serial.println("cm");
if (期間<50) // Если расстояние менее 50 сантиметром
{
トーン(ビープピン、500); // 周波数 500 Hz のピエゾ エミッタをオンにします
}
それ以外
{
トーン(ビープピン、1000); // 1000 Hz の周波数でピエゾ エミッターをオンにします
}

機能の使用 トーン() Arduino のピン 3 と 11 での PWM の使用が妨げられるという事実に注意する必要があります (これは Mega プラットフォームには当てはまりません)。 私の例で関数を言ってみましょう トーン()はピン 5 で呼び出されますが、ピン 3 と 11 での PWM の動作に干渉する可能性があります。これは、さらにデバイスを構築するときに考慮する必要があります。 もうひとつ、機能について トーン()複数のピエゾ エミッターを同時に使用することはできません。 2 番目のピエゾ エミッターのサウンドをオンにするには、関数を使用して最初のピエゾ エミッターをオフにする必要があります。 ない1().

これらの実験の過程で、距離のより正確な測定は最大 2 m の距離で行われることがわかりました。また、効果的な視野を確保するには、距離計を対象物に対して直角に配置する必要があります。角度は約15°です。



サイトの新着情報

>

最も人気のある