SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Web屋がはじめるIoT

Node.jsではじめるArduinoで人感センサ制御

Web屋がはじめるIoT 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

手順4:人感センサを使うための回路を組む

 これを見ると分かるのですが、人感センサSB412Aは脚(端子)が3つあります。

 この3つの脚はどう使うのでしょうか? 人感センサーSB412Aのサイトデータシートを確認してみましょう。

 データシートを見ることでセンサーの使い方を探ることができます。Webシステム開発におけるAPIドキュメントや仕様書のようなものだと思ってください

 データシートではそれぞれの脚に3-12VVoutGNDという表記があります。意味は以下のとおりです。

  • [A] 3-12V:3から12Vの電圧を受け取るプラス(+)のポート
  • [B] Vout:分圧用のポート
  • [C] GND:電圧が0になるマイナス(-)のポート

 分からない部分が多くなってきている人もいるかもしれませんが、ひとまず先に進みましょう。

 ブレッドボードの溝に水平にセンサを差し込みます。

 基本的な考えとして、電気がプラス(+)からマイナス(-)流れます。Arduino側には3.3Vや5Vという表記のポートがありますが、これは5Vの電圧が流れるという意味です。センサ側は3-12Vという表記なので3V以上12V未満の電圧を扱えます。

 また、GNDという表記がありますが、グラウンドのことで電圧が0になります。

 基本的にブレッドボードは溝に対して垂直方向(横)のポートが繋がっていますので、購入した導線を使って繋いでみましょう。ブレッドボードの基本は『電子工作入門~ブレッドボードを使ってみよう』を参照してください。

 ここまで読めばなんとなく分かってくると思うのですが、Arduinoの5Vを[A]とつなぎ、GNDを[C]につなぎます。これで電気の流れができます。さて、これでどうやってセンサーの値を取るのかというと、センサーの真ん中の脚である[B]が分圧用のポートを使います。センサは反応することで、センサの抵抗値が変化しセンサにかかる電圧の値が変わります。そして変わった電圧の値を取得することで人間が活用できます。簡単にいうと[B]をアナログピンかデジタルピンに繋いであげることで値を取得することができます。今回はアナログピンを使ってみます。Arduino側のA0を[B]につなぎましょう。

 fritzingを使って図にするとこんな感じです。ブレッドボード上の黒いセンサーのようなものは説明している人感センサSB412Aだと思ってください。

 これで回路ができました。

手順5: Node.jsからjony-five経由でArduinoを操作する

 それでは、いよいよプログラムから動かしてみます。app.jsとして作ってみます。johny-fiveのサイトにもあるセンサー利用のサンプルコードを元に作ってみました。

 プログラムとしては、人感センサーで人に反応しているときはLEDが光り、反応がないときはLEDが消える、というものです。

app.js
'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
・
・
(以下略)

 こんな感じで、手をかざす(人がいる)と608や609という数値になり、やめる(人がいない)と0という数値が出力されます。

まとめ

 いかがでしたでしょうか。WebしかやってきたことのないWeb屋の方でも簡単にコピペだけで人感センサの値をとることができたと思います。

 通常Arduinoを触る場合はプログラミングとしてArduino言語も触る必要があるため、そこで抵抗感がある人も多いのですが、今回のやり方を使えば、Node.jsでArduinoを制御できます。また、この方法はNode.jsでの記述なのでWebとの連携も行いやすいです。次回以降はこのメリットを最大限に生かして、Webとセンサーの連携を図ってみたいと思います。

 この連載を通してWeb屋がハードウェアやIoTという領域への抵抗をなくしていけたら幸いです。次回以降もよろしくお願いします。それでは!

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
この記事の著者

菅原のびすけ(dotstudio株式会社)(スガワラ ノビスケ)

 日本最大規模のIoTコミュニティ「IoTLT」主催。岩手県立大学大学院ソフトウェア情報学研究科を卒業後、株式会社LIGでWebエンジニアとして入社し、Web開発に携わる。2016年にdotstudio株式会社を立ち上げ、今はIoT領域を中心に活動している。JavaScript RoboticsコミュニティNodeBotsの主催や、IoTバックエンドサービスであるMilkcocoaのエバンジェリストとしても活動中。共著: 『JavaScriptでインタラクティブ3Dコンテンツを作ろう』 共著: 『現場のプロが教える WEBデザイン 新・スタンダードテクニック37』 共著: 『フロントエンドエンジニアのための現在とこれからの必須知識』twitter: @n0bisuke URL: dotstudioのプロフィールページ

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9139 2016/01/07 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング