超音波センサモジュール「HC-SR04」をArduinoで動かします。
目次:
今回の目的
ELEGOOのチュートリアル「超音波センサモジュール」(英語版の「Ultrasonic Sensor Module」)を今回はチュートリアル通りに動かします。
※チュートリアルの文章(PDF日本語版含む)もスケッチもELEGOOのサイトから無料でダウンロードできました。
超音波センサモジュール「HC-SR04」
「HC-SR04」は超音波による距離測定モジュールです。
対象物に向けて超音波を送信し、対象物から反射して戻ってくるのを検出します。
この、送信-検出間の時間に応じた時間をモジュールから受け取り、Arduinoで対象物との距離を算出できます。
器材接続
モジュールはArduino直結です。
今回はシリアルモニタをパソコン画面で表示するため、USBをバッテリーではなくパソコンにつなぎます。
スケッチ
スケッチ本文は短いものです。
問題はライブラリ「SR04」ですが、内容が多すぎたので読解は置いて起きます。
#include "SR04.h" // 問題のライブラリ
#define TRIG 12 // モジュールのTRIG端子をArduinoの12pinに設定
#define ECHO 11 // モジュールのECHO端子をArduinoの11pinに設定
SR04 sr04 = SR04(ECHO,TRIG);
long dist;
void setup() {
Serial.begin(9600); // 9600bpsでシリアルポートを開く
delay(1000);
}
void loop() { // 以下延々と繰り返す
dist=sr04.Distance(); // 距離測定結果を変数distに代入
Serial.print(dist); // 変数dist(の中身)をシリアルポートへ出力
Serial.print("cm"); // 文字列「cm」をシリアルポートへ出力
Serial.print("\n"); // 改行をシリアルポートへ出力
delay(1000);
}
なお「Serial.print("cm");」で「cm」、「Serial.print("\n");」で改行を出力しましたが、これは「Serial.println("cm");」とすれば一行で済みます。オリジナルではそうしてました。
Serial.println(data, format)
data:出力するデータ
format:dataの表示形式(HEX、OCT、DEC、BINなど。省略可)
動作
動作させました。
人間の可聴周波数上限は20kHz程度。40kHzの超音波は何も聴こえません。
パソコンのArduino IDEの「ツール」→「シリアルモニタ」でウインドウを立ち上げると、そこに距離の測定結果が1秒ごとに連続表示されます。
対象物との距離「19cm」と表示され(20cmを狙っておりました)、ほぼほぼ正しそうです。
所感
このモジュールを使うことは簡単。測定原理もわかります。
が、これを回路的、ソフト的にどう実現しているのかとなると今のところさっぱりです。
使えさえすれば良し、では実力つかなさそうですし、かといってライブラリ「SR04」や、モジュールの中味を調べるのは大変そうです。
ELEGOOのチュートリアルは全33Lesson。今回の超音波センサモジュールはLesson10。
この先も中身のわからないモジュールを動かす内容が続きそうです。
。。。深入りしているとタイムパフォーマンス悪そうです。
なにしろ「チュートリアル」です。立ち止まらずにLessonを先に進めることにします。
0 件のコメント:
コメントを投稿