Articles

ArduinoとHC-SR04超音波距離センサーを使用する方法

HC-SR04は、2-400cmの範囲で、安価で使いやすい超音波距離センサーです。 それはロボットおよびオートメーションのプロジェクトを避 このチュートリアルでは、センサーの仕組みとArduinoでの使い方を学びます。

センサーの実験を開始できるように、配線図とコードを含む5つの例を含めました。, まず、Arduinoライブラリを使用しない例を見ていきます。 次に、よりコンパクトなコードを作成するためにNewPingライブラリを使用する方法を紹介します。

安価な超音波距離/近接センサーは素晴らしいですが、一部のプロジェクトでは、JSN-SR04Tのような防水センサーや温度変化の影響を受けないIRセンサー,on

20×4 character I2C LCD (optional) × 1 Amazon
AliExpress DHT11 sensor (optional) × 1 Amazon

Software

Arduino IDE

Makerguides.,comは、アマゾンサービスLLCアソシエイツプログラム、上の製品に広告やリンクすることにより、広告料を獲得するためのサイトのための手段を提供するAmazon.com.

超音波距離センサーはどのように機能しますか?

超音波センサーは、人間が聞くには高すぎる周波数の音波を放出することによって機能します。 これらの音波は、およそ343m/sの音速で空気中を移動します。, センサーの前に目的があれば、音波は反射されて得、超音波センサーの受信機はそれらを検出します。 音波を送受信するまでの時間を測定することにより、センサと物体との距離を計算することができます。

超音波距離センサの動作原理。 出典:https://www.maxbotix.com/

20℃では、音速はおよそ343m/sまたは0.034cm/µsです。, 音波を送受信するまでの時間が2000マイクロ秒であるとしましょう。 音の速度に音波が移動した時間を掛けると、音波が移動した距離が得られます。P>

距離=速度x時間

しかし、それは私たちが探している結果ではありません。 音波がセンサーから物体に移動し、物体からセンサーに戻ったため、センサーと物体との間の距離は実際にはこの距離の半分に過ぎません。 したがって、結果を二つで割る必要があります。,

距離(cm)=音速(cm/μs)×時間(μs)/2

したがって、例えば、次のようになります。

距離(cm)=0.0343(cm/μs)×2000(μs)/2=34.3cm

音速は実際には温度に強く依存し、音速の湿度にはるかに低い程度に依存します。

音速は実際には温度に強く依存し、音速の湿度にはるかに低い程度に依存します。空気だ ウィキペディアでは、音の速度は摂氏あたり約0.6m/sで増加すると述べています。, ほとんどの場合、20℃では343m/sを使用できますが、より正確な測定値を取得したい場合は、次の式で音速を計算できます。

V(m/s)=331.3+(0.606×T)

V=音速(m/s)
T=気温(°C)

音速への影響はごくわずかであるため、この式には湿度は含まれていません。

以下では、DHT11温度湿度センサーを使用して音速を校正し、HC-SR04でより正確な距離読み取りを取得する方法についてのチュートリアルを見つけるこ,

HC-SR04の仕組み

HC-SR04センサーの前面には、二つの銀のシリンダー(超音波トランスデューサー)を見つけることができ、一方は音波の送信機であり、他方は受信機 センサーがソニックバーストを発生させるには、Trigピンをハイ-レベルに10µs以上セットする必要があります。 センサーはそれから超音波の8つの周期の破烈を40のkHzで作成する。

このソニックバーストは音の速度で移動し、跳ね返り、センサーの受信機によって受信されます。 Echoピンは、音波が移動した時間をマイクロ秒単位で出力します。,

ArduinoコードでpulseIn()関数を使用して、Echoピンからパルスの長さを読み取ることができます。 その後、上記の式を使用して、センサーとオブジェクトとの間の距離を計算することができます。,ncy

40kHz 測定範囲 2–400cm 分解能 3mm 測定角度 15度 トリガ入力信号 10μsハイパルス コスト チェック価格

詳細については、以下のデータシートをチェックアウトすることができます。

hc–sr04をarduino unoに配線する

hc-sr04センサーをarduinoに接続する方法を教えてください。,

HC-SR04arduino配線図

以下のコード例では、トリガーピンとエコーピンにそれぞれデジタルピン2と3を使用していますが、もちろん、これを任意のデジタルピンに変更することができます。,C-SR04 Connections

HC-SR04 Arduino
VCC 5 V
Trig Pin 2
Echo Pin 3
GND GND

Example code for HC-SR04 with Arduino

Now that you have wired up the sensor it is time to connect the Arduino to the computer and upload some code., Arduino IDEを使用して、次のサンプルコードをArduinoにアップロードできます。 次に、コードがどのように機能するかを説明します。

コードの仕組み

まず、トリガーピンとエコーピンが定義されています。 私はそれらをtrigPinEchoPinと呼んでいます。 トリガーピンはデジタルピン2に、エコーピンはArduinoのデジタルピン3に接続されています。

ステートメント#defineは、定数値に名前を付けるために使用されます。, コンパイラは、プログラムのコンパイル時に、この定数への参照を定義された値に置き換えます。 したがって、trigPinに言及すると、プログラムがコンパイルされると、コンパイラはそれを値2に置き換えます。

// Define Trig and Echo pin:#define trigPin 2#define echoPin 3

次に私は二つの変数を定義しました:durationdistance。 Durationは、音波を送受信するまでの時間を格納します。 距離変数は、計算された距離を格納するために使用されます。,

// Define variables:long duration;int distance;

setup()では、trigPinを出力として、echoPinを入力として設定することから始めます。 次に、9600のボーレートでシリアル通信を初期化します。 これはCtrl+Shift+Mまたはツール>シリアルモニタでアクセスできます。 シリアルモニタでもボーレートが9600に設定されていることを確認してください。

loop()で、trigPinを10µs HIGHに設定してセンサーをトリガーします。, クリーンな信号を得るには、5マイクロ秒間ローに設定してtrigPinをクリアすることから始めます。

次に、エコーピンによって送られたパルスの長さを読み取る必要があります。 これには関数pulseIn()を使用します。 この機能は、ピンがローからハイになるのを待ち、タイミングを開始してから、ピンがローになるのを待ってタイミングを停止します。

その後、このチュートリアルの紹介で述べた式を使用して距離を計算することができます。

最後に、計算された距離がシリアルモニタに印刷されます。,

サンプルコードHC-SR04ArduinoとNewPingライブラリ

Tim Eckelによって書かれたNewPingライブラリは、多くの超音波距離センサで使用することができます。 の最新バージョンのこのライブラリはこちらからダウンロードできるbitbucket.org. に気づくかもしれませんが、以下のコードを使用するのNewPing図書館がたくさんよりはるかに短いコードを使用しました。 その他NewPing図書館など他のも特徴です。 それはあなたが読むために最大距離を設定することができます、それはエコーが受信されないときに完全な秒のために遅れることはありませんし、そ,

Sketch>Include Library>Addに移動することで、ライブラリをインストールできます。Arduino IDEのZIPライブラリ。

ライブラリには使用できる例がいくつか含まれていますが、ハードウェアの設定に合わせて変更する必要があります。 以前と同じ配線設定で使用できる変更されたサンプルコードを以下に含めました。

distance = sonar.ping_cm()またはdistance = sonar.ping_in()測定された距離をセンチメートルまたはインチ単位で返す使用することもできます。, この機能を使用すると、継続時間の測定を行い、距離を計算する必要はありません。

3ピンモードでの超音波センサのインタフェース

NewPingライブラリは、1つのI/Oピンのみを使用しながら超音波センサとインタフェースすることも これは、利用可能なI/Oピンが非常に少ない場合、または視差Pingのような3ピン超音波センサーを使用する場合に便利です。3ピンセットアップ(GND、5V、SIG)を作成するには、triggerピンとechoピンの両方をArduinoの同じデジタルピンに接続する必要があります。, コードでは、変更する必要があるのは6-7行目だけで、trigPinとechoPinの両方に同じピンを定義します。 たとえば、デジタルピン2。

//Define Trig and Echo pin#define trigPin 2#define echoPin 2

ping_median()デジタルフィルタの使い方

NewPingライブラリについて私が好きな主なものは、それが組み込みの中央値フィルタを持ってい このフィルターはあなたのHC-SR04読書の正確さを非常に改善できます。 ping_median()関数は、連続して多くの持続時間の測定値を取得し、範囲外の測定値を破棄してから、残りの測定値を平均します。, デフォルトでは、5つの測定値がかかりますが、取るべき数を指定することができます。 19行目を以下の行に置き換えます。

int iterations = 5;duration = sonar.ping_median(iterations);

コード例HC-SR04i2c LCDとArduino

2004または1602I2C LCDに測定された距離を表示するには、次の接続を行い、以下のコードをアップロード HC-SR04センサーは前にと同じように接続される。

HC-SR04ArduinoとI2C LCD配線図。,

I2C LCD Connections

I2C LCD Arduino
GND GND
VCC 5 V
SDA A4
SCL A5

If you are not using an Arduino Uno, the SDA and SCL pins can be at a different location., R3レイアウト(1.0ピン配置)を持つArduino UNOには、AREFピンの近くにSDA(データライン)とSCL(クロックライン)ピンヘッダもあります。 詳細は以下の表をご確認ください。,f43445″>

Arduino Uno A4 A5 Arduino Nano A4 A5 Arduino Micro 2 3 Arduino Mega 2560 20 21 Arduino Leonardo 2 3 Arduino Due 20 21
I2C pin locations for different Arduino boards

The code uses the LiquidCrystal_I2C library, which you can download here on GitHub., この正確なライブラリがインストールされていること ワイヤーも含まれています。あなたがI2Cデバイスと通信することを可能にするhライブラリ。 このライブラ

ArduinoでI2C LCDを制御する方法についてもっと知りたい場合は、ここで完全なチュートリアルをチェックしてください。

  • Arduinoで文字I2C LCDを制御する方法

私は20x4LCDディスプレイを使用していることに注意してください。 異なるサイズのLCD(16×2も一般的です)を使用している場合は、20行目をLiquidCrystal_I2C lcd(0x27,16,2);に変更する必要があります。, LCDにデフォルトのI2Cアドレス0x27がない場合は、i2cの完全なチュートリアルで、アドレスが何であるかを確認する方法を説明します。

サンプルコードHC-SR04DHT11温度センサーとArduino

前述したように、音の速度は気温に強く依存します。 長い距離(3-4m)を測定したい場合は、DHT11またはDHT22の温度および湿度センサーをセットアップに追加することをお勧めします。 これにより、音の速度をリアルタイムで校正し、測定の精度を高めることができます。,

DHT11センサーを追加するのは本当に簡単です。 下の配線図は、あなたが作る必要がある接続を示しています。 私はブレイクアウトボードでDHT11を使用しているので、3つのピンを配線するだけで済むことに注意してください。 ピンの順序はメーカーによって異なる場合があります。 HC-SR04センサーは前にと同じように接続される。

HC-SR04ArduinoとDHT11配線図。,

DHT11 Connections

DHT11 Arduino
VCC (+) 5 V
Signal (s) Pin 4
GND (-) GND

The code below uses the Adafruit DHT Humidity & Temperature Sensor library which you can download here on GitHub., このライブラリは、GitHubでも利用可能なAdafruit_Sensorライブラリがインストールされている場合にのみ機能します。 また、以下のボタンをクリックして二つのライブラリをダウンロードすることもできます。

コードフィールドの右上隅にあるボタンをクリックすると、コー

サンプルコードHC-SR04DHT11とI2C LCD

HC-SR04Arduino、DHT11とI2C LCD配線図。

以下のコードを使用して、上記の3つの例をすべて組み合わせることができます。, 温度、音速、測定された距離の両方をLCDに表示します。

HC-SR04寸法

以下は、HC-SR04超音波センサーの寸法を見つけることができます。 いということに気付きがあることなどを利用した微小メーカーではあった方がいいと思いまダブルチェックは、リンク元に対する独自のセンサーです。

HC-SR04寸法

HC-SR04CAD

以下にダウンロードできるHC-SR04超音波センサーの基本的なCAD図面を作成しました。,

結論

この記事では、HC-SR04超音波距離センサがどのように機能するか、そしてArduinoでどのように使用できるかを示しました。 私はそれが有用で有益であることを願っています。 あなたがした場合は、また、電子機器が好きな友人とそれを共有してください!

個人的なプロジェクト:数ヶ月前、私は何人かの友人とインタラクティブな壁のインストールを構築しました。 壁の前を歩いている人を検出するために、約30個の超音波距離センサーを使用しました。 壁には、人々がどれだけ離れて立っているかによって変化する照明や効果音が含まれていました。,

写真:Guus Schoonewille

私はあなたがHC-SR04距離センサーで構築する(または既に構築している)プロジェクトを知りたいと思います。 ご質問、ご提案がある場合、またはこのチュートリアルで物事が欠落していると思われる場合は、以下のコメントを残してください。