14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IT女子のゼロから始めるIoTーステップ3: Raspberry pi2とNodejsで超音波距離センサーの値を取得する

Posted at

前回の投稿からの続きです!

前回はボタンとLEDをつなげて光らせるということを実施して、
GPIOの「in」と「out」を制御できました!

今回はその応用です。「in」と「out」のしくみを利用して、センサーとRaspberry piをつなぎそのセンサーの値を取得する、ということを実施しました。

習得できた知識

  • 超音波距離センサーのしくみ
  • Node.js
    • process.nextTick([function])

      • イベントループの次以降のループで[]内で指定したfunctionを実行する
      • setTimeout([function],0)よりもはるかに早い!
    • process.hrtime()

      • 現在時刻を [seconds, nanoseconds] の配列で返す
      • 引数に、過去に取得した時刻をいれると差分がとれる
      var time = process.hrtime();
      var diff = process.hrtime(time);
      

用意したもの

  • 前回と同様
  • 超音波距離センサー(HC-SR04)

まず超音波距離センサーの回路を理解する

  • 超音波距離センサーの仕組み
  1. outからinの時間を計る
  2. 道のり= 時間/速さ に当てはめる
  3. 距離が求められる!

image

  • つなぐ
    • センサーのピン4本を以下のようにつなぐ
      20160109_235849.jpeg

    • つないだ (27番ポート: in / 17番ポート: outとして使った)
      image

やりたいこと

  • 「out」から「in」までの時間を測定するプログラムを作成したい!
    • 距離を測るアルゴリズム

flow.png

実行する

※ サンプルコードなのでこのまま書いても動きません

distance.js

// ポートを使う準備
var fs = require('fs');
・・・
(略)

// 27ポートの値を聞き続けるFunction
function kurikaesiFunc(){
    // 27ポートの値を取得
    var stdout = fs.readFileSync("/sys/class/gpio/gpio27/value");

    if(1 == stdout){
        // 1だった時はoutではかった時間との差分を取得する
        diff = process.hrtime(startTime);
        goalFunc(diffから距離を計算した値);
    } 
    process.nextTick(kurikaesiFunc); //くりかえし
};

// 非同期処理で呼び出すFunction
var outFunc = function(){
    // outに出力の命令を出す        
    // 時間を測る (process.hrtime()を使う)
};

// 距離を出力するFunction
var goalFunc = finction(distance){  
    console.log(distance)
};

上記のようなコードの流れでプログラムを実行する
値を取得できた!
→ まだ値が正確ではないので、もう少し精度向上を図る必要がありそう!
→ 完成したら更新しようと思います

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?