手順4:人感センサを使うための回路を組む
これを見ると分かるのですが、人感センサSB412Aは脚(端子)が3つあります。
![](http://cz-cdn.shoeisha.jp/static/images/article/9139/9139_18_s.png)
この3つの脚はどう使うのでしょうか? 人感センサーSB412Aのサイトでデータシートを確認してみましょう。
![](http://cz-cdn.shoeisha.jp/static/images/article/9139/9139_19_s.png)
データシートを見ることでセンサーの使い方を探ることができます。Webシステム開発におけるAPIドキュメントや仕様書のようなものだと思ってください。
データシートではそれぞれの脚に3-12V
、Vout
、GND
という表記があります。意味は以下のとおりです。
- [A] 3-12V:3から12Vの電圧を受け取るプラス(+)のポート
- [B] Vout:分圧用のポート
- [C] GND:電圧が0になるマイナス(-)のポート
分からない部分が多くなってきている人もいるかもしれませんが、ひとまず先に進みましょう。
ブレッドボードの溝に水平にセンサを差し込みます。
![](http://cz-cdn.shoeisha.jp/static/images/article/9139/9139_20_s.png)
基本的な考えとして、電気がプラス(+)からマイナス(-)流れます。Arduino側には3.3Vや5Vという表記のポートがありますが、これは5Vの電圧が流れるという意味です。センサ側は3-12Vという表記なので3V以上12V未満の電圧を扱えます。
また、GNDという表記がありますが、グラウンドのことで電圧が0になります。
![](http://cz-cdn.shoeisha.jp/static/images/article/9139/9139_22_s.png)
基本的にブレッドボードは溝に対して垂直方向(横)のポートが繋がっていますので、購入した導線を使って繋いでみましょう。ブレッドボードの基本は『電子工作入門~ブレッドボードを使ってみよう』を参照してください。
ここまで読めばなんとなく分かってくると思うのですが、Arduinoの5Vを[A]とつなぎ、GNDを[C]につなぎます。これで電気の流れができます。さて、これでどうやってセンサーの値を取るのかというと、センサーの真ん中の脚である[B]が分圧用のポートを使います。センサは反応することで、センサの抵抗値が変化しセンサにかかる電圧の値が変わります。そして変わった電圧の値を取得することで人間が活用できます。簡単にいうと[B]をアナログピンかデジタルピンに繋いであげることで値を取得することができます。今回はアナログピンを使ってみます。Arduino側のA0を[B]につなぎましょう。
![](http://cz-cdn.shoeisha.jp/static/images/article/9139/9139_23_s.png)
fritzingを使って図にするとこんな感じです。ブレッドボード上の黒いセンサーのようなものは説明している人感センサSB412Aだと思ってください。
![](http://cz-cdn.shoeisha.jp/static/images/article/9139/9139_24.png)
これで回路ができました。
手順5: Node.jsからjony-five経由でArduinoを操作する
それでは、いよいよプログラムから動かしてみます。app.jsとして作ってみます。johny-fiveのサイトにもあるセンサー利用のサンプルコードを元に作ってみました。
プログラムとしては、人感センサーで人に反応しているときはLEDが光り、反応がないときはLEDが消える、というものです。
'use strict' let five = require("johnny-five"); let board = new five.Board(); board.on("ready", () => { let led = new five.Led(13); let sensor = new five.Sensor("A0"); sensor.on("change", () => { if(sensor.value === 0){ led.off(); //反応なし(人がいない) }else{ led.on(); //反応中(人がいる) } console.log(sensor.value); }); });
はい、これだけです。記述量が少なくてびっくりですね(笑)。
手順6: 実行してみる
$ node app.js 1447585271117 Device(s) /dev/cu.usbmodem1411 1447585271129 Connected /dev/cu.usbmodem1411 1447585274898 Repl Initialized 0 0 608 608 ・ ・ (以下略)
![](http://cz-cdn.shoeisha.jp/static/images/article/9139/9139_25a.gif)
こんな感じで、手をかざす(人がいる)と608や609という数値になり、やめる(人がいない)と0という数値が出力されます。
まとめ
いかがでしたでしょうか。WebしかやってきたことのないWeb屋の方でも簡単にコピペだけで人感センサの値をとることができたと思います。
通常Arduinoを触る場合はプログラミングとしてArduino言語も触る必要があるため、そこで抵抗感がある人も多いのですが、今回のやり方を使えば、Node.jsでArduinoを制御できます。また、この方法はNode.jsでの記述なのでWebとの連携も行いやすいです。次回以降はこのメリットを最大限に生かして、Webとセンサーの連携を図ってみたいと思います。
この連載を通してWeb屋がハードウェアやIoTという領域への抵抗をなくしていけたら幸いです。次回以降もよろしくお願いします。それでは!