SHOEISHA iD

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

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

Web屋がはじめるIoT

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

Web屋がはじめるIoT 第1回

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

Arduino x Node.jsで人感センサを使ってみよう(開発編)

手順1:まずはArduinoの動作確認

 まずはArduinoがちゃんと動作するか確認しましょう。あまり聞きませんが、初期不良や運送中に故障してしまっていないかの確認にもなります。

  • MacとArduinoをUSB(先ほど購入リストにあげたA-Bタイプ)で接続する
  • ArduinoのSDKアプリケーションを起動する
  • [ツール]から[シリアルポート]を選択しArduinoとの接続を確認する

という流れを確認しながらやってみましょう。Arduinoを箱から取り出してからの流れなどは、『【Arduino】 Arduinoに入門してみた』というブログ記事が丁寧です。なお、マイコンボードは静電気に弱いものもあるので、冬場は特に静電気に気をつけましょう。

 ここまでできたら、試しに以下のプログラム(Arduinoではスケッチと呼んでます)をArduino SDKのエディタ側に書いてみましょう。コピペで大丈夫です。

const int LED = 13; // LEDはデジタルピン13に接続

void setup(){
  pinMode(LED, OUTPUT); // デジタルピンを出力に設定
}

void loop(){
  digitalWrite(LED, HIGH);  // LEDを点ける
  delay(500);              // 0.5秒待つ
  digitalWrite(LED, LOW);   // LEDを消す
  delay(500);              // 0.5秒待つ
}

 エディタ左上の[→]ボタンで、書いたプログラムをArduinoのボードに書き込むことができます。

 書き込みが成功すると、Arduinoのロゴ近くのLEDがオレンジに点滅すると思います。これがHello WorldみたいなLチカ(LEDチカチカ)ってやつですね。これで動作確認ができました。

 0.5秒ごとに点滅します。

手順2:Firmataの書き込み

 とりあえず今は、Node.jsから制御できるようにするための呪文だと思ってもらえれば大丈夫です。

 [ファイル]->[スケッチの例]->[Firmara]->[StandardFirmata]を選択します。

 そうすると、エディタウインドウが新しく立ち上がります。

 立ち上がったStandardFirmataのプログラムを[→]ボタンでボードに書き込みましょう。

 これを行うことで、Node.js(johnny-five)からArduinoに直接信号を送ることが可能になります。

 「なんだよ、思ったよりArduino使っているじゃん」と突っ込みたい方もいると思いますが、ここまでなので我慢してください(笑)。

手順3:Node.jsからLチカしてみる。

 あとはMacのターミナルからの作業です。まずは、任意の場所にmy-sketchフォルダを作ってフォルダ内に移動します。

$ mkdir my-sketch
$ cd my-sketch

 先ほど準備で説明したjohnny-fiveをインストールしましょう。

$ npm i johnny-five

 次に名前はなんでもいいのですが、led.jsという名前でプログラムを作成します。以下を記述(コピペ推奨)しましょう。これはNode.jsのプログラムです。

led.js
/*led.js*/

'use strict'

let five = require("johnny-five");
let board = new five.Board();

board.on("ready", () => {
  let led = new five.Led(13);
  led.blink(500);
});

 次世代のJavaScriptの文法である、ES2015が普及してきましたが、まだES5の書き方も現役です。時期的にどちらの書き方で書いた方がいいのか迷ったのですが、今後ES2015が一般的な書き方になっていきますので、ES2015の文法で記述していきます。ちなみに現時点のNode.jsではimport文が実装されていないため、モジュール呼び出し部分だけはrequireで記述しています。

 実行してみましょう。

$ node led.js

1449099558606 Device(s) /dev/cu.usbmodem1411
1449099558640 Connected /dev/cu.usbmodem1411
1449099562410 Repl Initialized
>>

 Firmataを書き込んだ際に、MacとArduinoの接続が確保されているために、Node.jsからの実行ファイルがArduino側に反映される仕組みとなっています。

 実行すると、上図のようにNode.jsのプログラム実行をしているにもかかわらず、先ほどのAruduinoプログラムと同じ動作をしてくれます。

次のページ
まとめ

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング