この記事はIoTLT Advent Calendar 2019の5日目の記事です。
こんにちは!岩手県立大学のsasakisanです!
昨年のIoTLTのアドベントカレンダーは、
「岩手の寒い冬はガスセンサで身を守ろう」
という題材で書きました。
今年は絶賛卒業研究でハードモードなので今回はさくっとできる初心者向けの電子工作をしていこうと思います。
題材は「超音波センサーで距離を測ってみる」です。
みなさんは普段距離を測るときはメジャー等を使いますよね?
今回はメジャーではなく超音波で距離を測れるようにしていきます!
使うもの
- M5Stack
- 超音波センサー(HC-SR04)
- ジャンパー線4本
- ブレッドボード
超音波センサーの仕組み
距離を測ることのできるセンサの仕組みはいくつかありますが、今回は超音波を使った距離センサを使います。
超音波を使う距離センサには、センサが2つついています。片方が超音波を出します。この時、距離を測りたいものに超音波があたり、跳ね返ってきたものがもう片方のセンサに当たります。跳ね返ってきた時間で距離を測ることができます。
回路
以下の表のようにジャンパとブレッドボードを繋いでいきます。
(M5Stackと超音波センサーの表記と表の表記を対応させて書いています)
M5Stack | 超音波センサー |
---|---|
5V | Vcc |
G | Gnd |
2 | Trig |
5 | Echo |
プログラム
M5Stackの環境構築をしていない方はこちらをご覧ください。
以下、プログラムと説明になっています。
#include <M5Stack.h>
#define TRIG 2
#define ECHO 5
int times;
int distance;
void setup() {
M5.begin();
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
// 文字サイズ
M5.Lcd.setTextSize(10);
}
void loop() {
// 画面を黒くする
M5.Lcd.fillScreen(BLACK);
// 超音波を発生させる
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
// 超音波を受け取る
times = pulseIn(ECHO, HIGH);
distance = (int)(times * 0.017);
// ディスプレイに表示させる
M5.Lcd.setCursor(0, 0);
M5.Lcd.print(distance);
delay(500);
}
動かしてみる
このように距離が表示され、距離が変わるごとにディスプレイの数字が変われば成功です!
まとめ
今回は初心者向けの記事を書きましたが、センサーがあればとても簡単に試すことができるのでぜひやってみてください。