2-2-1.超音波センサ
電気回路と電子工作
超音波センサは障害物との距離を測定するのに利用します。超音波センサーは超音波(周波数の高い空気の振動)を利用して障害物から反射してくる超音波を受信して、送信してから受信までの時間を測定することで距離を測定します。
(本センサは超音波センサ個別の電子工作学習用です。sLab-Remo2ではリモコンと合わせた電子工作として利用する手順は用意しておりません。)
超音波センサの外観を以下に示します。
超音波センサには4つの端子がありますので以下の通り配線し利用して下さい。配線はオス-メスのジャンパー線を利用し配線して下さい。
【注意】
回路図にはありませんがESP32開発ボードにソフトを書き込む場合はEN端子を0.1μFのコンデンサでGNDへ配線して下さい。ESP32開発ボード(30pin)固有の利用方法なので回路図は省略させて頂きます。
スケッチ(制御ソフトウェア)
GPIO13でトリガー信号を送信し、GPIO12でエコー信号を読み取り距離を計算しシリアル通信でパソコンに表示させるスケッチを以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
// IoT電子工作キット sLab-Remo2 // 2-2-1.超音波センサ // ①利用ピンの設定 const byte ONPA_TRIG = 13; // 超音波トリガー const byte ONPA_ECHO = 12; // 超音波エコー // ②起動時、最初に実行される処理 void setup() { Serial.begin(115200); // シリアルモニタ設定(115200bps) Serial.println(); // (見やすくするために改行) // ③TRIGに出力、ECHOに入力ピン設定 pinMode(ONPA_TRIG, OUTPUT); pinMode(ONPA_ECHO, INPUT); } // ④setup完了後、電源OFFまで繰り返し処理 void loop() { // ⑤超音波センサで距離測定 checkSensor(ONPA_TRIG, ONPA_ECHO); // ⑥3秒間間隔を空けて測定 delay(3000); } // ⑦センサー情報取得 String checkSensor(byte trigPin, byte echoPin){ // ⑧超音波を発して物体に当って跳ね返ってきた時間 int duration; // ⑨物体との距離 float distance; // ⑩TrigピンをLOWに設定してリセット digitalWrite(trigPin, LOW); // ⑪1μ秒処理を止める delayMicroseconds(1); // ⑫TrigピンをHIGHに設定 digitalWrite(trigPin, HIGH); // ⑬10μ秒処理を止める(トリガーPinをHIGHで10μ秒送信) delayMicroseconds(10); // ⑭TrigピンをLOWに設定 digitalWrite(trigPin, LOW); // ⑮超音波を発して物体に当って跳ね返ってきた時間(μ秒)を取得(LOW=>HIGHまでの時間) duration = pulseIn(echoPin, HIGH); // ⑯取得した時間は往復時間のため2で割る distance = duration / 2; // ⑰測定時間から距離(cm)を算出(音速は340m/s) distance = distance / 1000000 * 340 * 100; // ⑱シリアルモニターに表示 Serial.print(String(echoPin) + "_Duration: "); Serial.print(duration); Serial.print(" usec "); Serial.print(" Distance: "); Serial.print(distance); Serial.println(" cm"); // ⑲測定結果を返答 return String (distance); } |
【⑫〜⑭超音波送信】最初に超音波を10μ秒間送信します。Trig端子をONにすることで超音波を送信できます(音波に比べて10μsecは0.34cm相当と非常に小さいので距離測定には誤差の範囲なので距離計算では省略しています。)
【⑮超音波受信】送信後に受信するまでの時間を測るためEcho端子が(LOWから)HIGHになるまでの時間をμ秒で取得できます。
【⑯〜⑰距離計算】音速は340m/sとなるため上記プログラムのように計算できます。