Arduino資料一覧

Node.jsでフォトリフレクタ(RPR-220)の値を読み取る

2016/12/24更新

対応バージョン: Node.js 4.2.6, Johnny-Five 0.9.58

Node.jsでArduino Unoにつないだフォトリフレクタ(RPR-220)の値を読み取る。

Node.jsを動かす母艦はUbuntu 16.04とする。

結線

このセンサーは刻印面に向かって左が赤外線LED(出力側)、右が対象物からの反射を受けるフォトトランジスタ(入力側)になっている。

ピンは4つで左の赤外線LEDは手前がアノード(長いピン)で奥がカソード(短いピン)、右のフォトトランジスタは手前がコレクタ(短いピン)で奥がエミッタ(長いピン)である。

結線はそれぞれ以下のようになる。

赤外線LED

Arduinoの5V電源ピン → 330Ω抵抗(*1) → アノード(長いピン) → カソード(短いピン) → ArduinoのGNDピン

フォトトランジスタ

Arduinoの5V電源ピン → コレクタ(長いピン) → エミッタ(短いピン) → Arduinoのアナログ"A0"ピン → 1kΩ抵抗(*2) → ArduinoのGNDピン

抵抗値の計算方法については、データシートの絶対最大定格によると赤外線LEDの順電流が50mAでフォトトランジスタのコレクタ電流が30mAなので最低限必要な抵抗値はそれぞれ以下のようになる。

(*1) 赤外線LED側

抵抗 = (電源電圧5V - 順電圧1.34V) / 順電流50mA

= 3.66 / 0.050

= 73 (→ ここでは330Ωを使用)

(*2) フォトトランジスタ側

抵抗 = 電源電圧5V / コレクタ電流30mA

= 5 / 0.030

= 166 (→ ここでは1kΩを使用)

ソース

以下のようなコードを書きNode.jsで実行する。

sensor.js
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  var sensor = new five.Sensor("A0");   

  sensor.on("change", function() {
    var val = this.value;
    console.log(val);
  });
});
実行
% node sensor.js
1483360780654 Device(s) /dev/ttyACM0  
1483360780661 Connected /dev/ttyACM0  
>> 0

色によって反射率が異なるので例えば白は光が反射するのでセンサーが反応し、黒は光が吸収されるのでセンサーが反応しなくなる。

関連資料・記事

参考サイト