#はじめに
超音波センサーモジュールのHC-SR04を使って、距離を計測する装置をArduino Unoで作りました。
HC-SR04のアマゾンで購入はー>こちら
(参考にしたサイトはこちらー> DreamWalker さん[ARDUINO] 超音波SENSOR(HC-SR04)を使って距離測定。
準備するもの
使用するセンサー:HC-SR04
マイコン:Arduino UNO
開発環境:Arduino IDE
#接続方法
HC-SR04を UNOのデジタル入出力ポートの4番から7番に差し込みます。
トリガーポート(TRIGと書いてあるピン)を5番に、距離の出力端子(ECHOと書いてあるピン)を6番にさします。
VCCが4番、GNDが7番にささります。
(ブレッドボードで配線するのがめんどくさかったので、)
4番と7番のデジタルポートは、それぞれを HIGHと LOWにすることで、
5Vと0Vを提供して、電源端子として利用しました。
#プログラムの動作
トリガーに20μsのワンショットパルスを出力して、 その直後から、Echo端子にパルスが出力されるまでの時間を計測します。 計測は、Arduino の pulseIn()関数を使いました。(便利ですね。^^)
puleIn()の戻り値は、超音波のパルスが跳ね返ってくるまでの時間ΔTなので、音速V(340m/s)から、
距離Dが求まります。
D= ΔT・V [m] ・ここで、 pulseIn()の戻り値のΔTは単位がμs(マイクロ秒)なので、1000000(1×10の6乗倍なので 1E6)で割ってやる必要があります。 距離もメートルだと使いにくので、cm(センチメートル)単位にするために100倍しました。
#プログラミング
プログラムの例:
/* HC-SR04 Test */
/* e-Lab2020 Ltd. 2019-07-03 */
const int VCC = 4;
const int TRIG = 5;
const int ECHO = 6;
const int GND = 7;
void setup()
{
Serial.begin(9600);
pinMode(GND,OUTPUT); digitalWrite(GND,LOW); //GND: LOW 0V
pinMode(VCC,OUTPUT); digitalWrite(VCC,HIGH); //VCC: HIGH 5V
pinMode(TRIG, OUTPUT); //Trig: output
pinMode(ECHO, INPUT); //Echo: input
}
void loop()
{
// Start Pulse for HC-SR05
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10); // 10us pulse
digitalWrite(TRIG, LOW);
//Echo
long duration = pulseIn(ECHO, HIGH); //return : time (us)
//音波の反射の時間計算
//1cm移動時間 29.412us. ,1秒間で,340m/s
//音波の移動距離 = 往復時間/1cm移動距離 / 2
//音波の移動距離 = 往復時間(ms) * 340*100(cm) / 1E6 (ms) / 2(往復から片道へ)
float f_distance = (float)duration * 340.0 * 100.0/1000000.0 / 2.0;
Serial.print(f_distance);
Serial.print(" cm");
Serial.println();
delay(100);
}
#出力結果
ツールからシリアルプロッタを選んでグラフを表示させてみました。
ツールで、シリアルポートをシリアルモニタで、表示させてみた結果がこちらです。
以上で試作報告を終わります。
(2019-07-03)