VL53L1Xを使って警報装置を作ってみた【Arduino】

Pololu VL53L1X SWITCH SCIENCE

VL53L1Xとは…?

VL53L1Xがなんぞやという方は、先にVL53L1Xの使い方解説をご覧ください。

これ以降は、使い方解説で解説した内容を前提に書いていきます。

Pololu VL53L1X SWITCH SCIENCE VL53L1Xとは...? VL53L1Xとは、小型距測センサです...

装置の概要

警報装置ってどんな装置を作るのかを説明します。

今回使用するVL53L1Xは最大4mまでしか距測ができないので、せいぜい廊下に設置する物しか作れません。

つまり、装置を設置した廊下を誰かが通過したら、音が鳴る装置を作っていきたいと思います。

自分の部屋の前とかに設置してみても面白いかもしれません。

使用物品・動作環境

使用物品

名称個数サイトURL
Pololu VL53L1X TOF 距測センサ1スイッチサイエンス
ジャンパー線(メス-オス)若干スイッチサイエンス
ジャンパー線(オス-オス)若干スイッチサイエンス
Arduino Uno 等1スイッチサイエンス
アマゾン
ブレットボード1スイッチサイエンス
圧電スピーカ1スイッチサイエンス
モバイルバッテリ-(あれば)1

動作環境

これ以下で行われている各種プログラミング及びその実行は、Windows10下におけるArduinoIDE(1.8.2)で実行されています。また、ArduinoUnoを用いています。

作り方

回路接続

前回、VL53L1XをArduinoに接続し、距離を測定したところまで終わったので、次は、Arduinoに圧電センサを接続します。

回路図と接続対応表は以下の通りです。

回路図
圧電スピーカ側Arduino側
12番ピン
GND
接続対応表(ブレッドボードを仲介させた方が良いと思います。)

プログラム

次にプログラムを入力します。以下のプログラムをArduinoIDEの画面に入力して下さい。

前回入力したプログラムをベースにtone関数を組み込んでいます。

int x = 1000;
//xの値以下になると警報が作動します。単位は"mm"。
//xの値は設置する場所に合わせて設定してください。
//xの初期値は1000になっています。

//変数varと変数tの値は初期値を推奨。
int var = 0;
int t = 2000;
#include <Wire.h>
#include <VL53L1X.h>

VL53L1X sensor;

#define PIN 12
void setup(){
  Serial.begin(115200);
  Wire.begin();
  Wire.setClock(400000); // use 400 kHz I2C

  sensor.setTimeout(500);
  if (!sensor.init())
  {
    Serial.println("Failed to detect and initialize sensor!");
    while (1);
  }
  sensor.setDistanceMode(VL53L1X::Long);
  sensor.setMeasurementTimingBudget(50000);
  sensor.startContinuous(50);
}



void loop(){
  t = sensor.read();
  if(t>x){
    Serial.print("人はいません");
    }else{
    Serial.print("人がいます警報装置発動");
    while(var<2){
       tone(PIN, 392, 300);
       delay(300);
       tone(PIN, 247, 300);
       delay(300);
       var++;
    }
  var = 0;
    }
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

  Serial.println();

}

(※)tone関数の値は、こちらのサイトから引用しています。一部改編。

プログラムの利用法

プログラムについて少し解説します。

このプログラムは、VL53L1Xセンサの測定値が、規定値以下になった場合に音が鳴るようになっています。

つまり、VL53L1Xセンサを廊下にこんな感じに設置したときに、

廊下のセンサー部(レーザー部)に人がいなければ、VL53L1Xセンサは、廊下の距離を測定値とします。

しかし、人がいるときには、測定値がセンサと人との距離になります。

つまり、センサーの前に人がいるときには測定結果が、短くなるということです。

その性質を利用した装置が今回の警報装置です。

センサーの前に人がいれば音が鳴り、いなければ鳴らない警報装置です。

プログラムの値設定

プログラムの変数x(1行目)は、設置する廊下に合わせて値を変更してください。

おおよその目安として、設定する値は、廊下の幅から100mmを引いた数字をxの値とするとよいです。例に挙げると、幅が1m(=1000mm)の廊下があるとしたら、xの値は900にするといいです。

それ以外の変数は特にいじる必要はありません。

プログラムの書き込み

前回同様、プログラムの書き込みを行ってください。

書き込みが終了した後は、ArduinoとPCのUSB接続を離してモバイルバッテリーなどの電源供給のできる物に接続しても大丈夫です。

完成

完成するとこんな感じになります。(圧電センサが同化してて見にくくて申し訳ないです。)

左から、Arduino,モバイルバッテリー,その上にブレッドボード,
その上にVL53L1Xセンサ(木材で安定化),圧電センサ



上から見るとこんな感じです。

上から見た図




センサーは、人の腰の高さあたりに設置すると、しっかり動作します。

装置を箱とかを使って隠すとより警報装置感が出ると思います。

ぜひ、アレンジしてみてください。

センサーのこの部分(赤枠)は廊下から遮らないようにしてください。

まとめ

警報装置を作ってみました!いかがだったでしょうか。

Arduinoの解説系の記事は初めて書くので、読みにくいところとかが多々あったと思います。よくわからないところはコメントで聞いていただければ、お答えします。

皆さんもぜひ作ってみてください!



(※)文中の社名、商品名などは各社の商標または登録商標である場合があります