📡

obnizとNode.jsで超音波距離センサ(HC-SR04)を使ってみる

2021/10/11に公開

obnizで超音波距離センサを利用する公式サンプルを元にNode.jsから実行してみます。

使うものやソフトウェア

使うものというよりも、使ったものです。

HC-SR04をobnizに配線

obnizにそれぞれ以下を配線します。

Node.jsのコード

通常通り準備です。

$ mkdir myapp
$ cd myapp
$ npm init -y

obnizのライブラリをインストールします。

$ npm i obniz

app.jsなどのファイルを作成しましょう。

公式サンプルっぽい書き方でやってみます。

'use strict';

const Obniz = require("obniz");
const obniz = new Obniz("obnizのデバイスID");

obniz.onconnect = async () => {
    const hcsr04 = obniz.wired("HC-SR04", {gnd:0, echo:1, trigger:2, vcc:3});
    
    while(true) {
        let avg = 0;
        let count = 0;
        for (let i=0; i<3; i++) { // measure three time. and calculate average
          const val = await hcsr04.measureWait();
          if (val) {
            count++;
            avg += val;
          }
        }
        if (count > 1) {
          avg /= count;
        }
        console.log(avg);
        await obniz.wait(100);
    }
}

whileループ内でobniz.wait(100)で0.1秒ごとにセンサーの値を測ってます。

$ node app.js

動かしてみた様子

こんな感じで動作しました。

https://www.instagram.com/p/CB7zAY1jwDZ/

それ以外の書き方

  • setInterval()で書いてみる。 (一定時間毎の処理)
'use strict';

const Obniz = require("obniz");
const obniz = new Obniz("obnizのデバイスID");

obniz.onconnect = async () => {
    const hcsr04 = obniz.wired("HC-SR04", {gnd:0, echo:1, trigger:2, vcc:3});
    
    const main = () => {
        hcsr04.measure(distance => {
            console.log("distance " + distance + " mm");
        });
    }

    setInterval(main, 100);
}
  • setTimeout()と再帰で書いてみる。 (一回実行したあとにxxx秒待って同じ関数を実行)
'use strict';

const Obniz = require("obniz");
const obniz = new Obniz("obnizのデバイスID");

obniz.onconnect = async () => {
    const hcsr04 = obniz.wired("HC-SR04", {gnd:0, echo:1, trigger:2, vcc:3});

    const main = () => {
        hcsr04.measure(distance => {
            console.log("distance " + distance + " mm");
        });
        setTimeout(main, 100);
    }

    main();
}

その他の書き方やメソッドなどは公式サンプルを参考にしてみましょう。

Discussion