WEB掻っ穿じり

WEB備忘録とチャリとカメラ

ArduinoをJohnny-FiveからNode.jsで制御 Lチカしてみる

  category:web

Arduino Uno R3画像

先日、渋谷で行われたNode.jsの祭典に参加してきたのですが、その中で「Hardware Hacking for JavaScript Developers」@girlie_macさんの実演が面白く、JS BoardやIoTと言った流行のキーワードに対して何かしら自分なりにアプローチをしておきたいと思っていました。

Tessel 2も魅力的だったんですが届くのに時間がかかりそうなので、以前Max/MSPを使っていたこともあり、C++は書いたことないのですが下記の通りNode.jsでも扱えるらしいのでArduinoを入門機に決めました。

電子工作の知識がないのですが、難なくLチカできたのでその内容です。

環境
  • OS:Mac OS X 10.11.1
  • Node.js:ver.0.12.7
  • npm:ver.2.11.3
  • fritzing:ver.0.9.2
  • ARDUINO:Arduino UNO R3
  • ARDUINO IDE:ver.1.6.6
参考記事

『JavaScriptエンジニアへのIoTのすすめ:Node.jsとArduinoでスマートデバイスのプロトタイプをしてみよう』
- @girlie_mac

『電子回路を作る基礎を学びNode.jsでボードを操ろう』
- @y_iwanaga_

『JavaScriptでArduinoをコントロール ― 第1回 Lチカ(LEDチカチカ)させてみよう!』
- @umi_kappa

Firmata通信とJohnny-Five

Arduino Uno R3画像

通常はこのArduino、C言語ベースのSketchというプログラムで制御されているらしいのですが、Firmataプロトコルを使うとJavaScriptだけでなく、RubyやPythonでも制御できるみたいです。

そしてNode.jsはArduino等に特化した「johnny-five」というモジュールをインストールするとNode.jsで制御することができる、ということです。

Arduinoセットアップ

プログラム言語の「Hello World!」のように、Arduinoのようなマイコン回路工作ではLEDをチカチカと点滅させる『Lチカ』 がはじめの一歩的な作法のようです。
今回使うArduino UNO R3でLED点滅させるにもセットアップから入ります。

Arduino IDEインストール

Arduino IDEアイコン

まずはArduino IDE (Arduinoのプログラム(Sketch)を書くためのソフトウェア) をインストールします。
Arduino IDEを起動する前に、ArduinoボードとコンピュータをUSBで繋いでおきます。

マイコンボード、シリアルポート設定

Arduino IDEを起動し、メニューの ツール > マイコンボード から Arduino Uno を選択。
続いて同じくメニューの ツール > シリアルポート から /dev/cu.usbmodem1411 (Arduino/Genuino Uno) を選びます。

マイコンボード、シリアルポート設定キャプチャ

StandardFirmataインストール

johnny-five」を使ってNode.jsでコントロールする為に、ArduinoボードはFirmataプロトコル通信を行うえるようにします。
今度Arduinoボード側にStandardFirmataをインストールします。

Arduino IDEのメニューから、ファイル > スケッチの例 > Firmata > StandardFirmata を選択、すると新規ウィンドウが開きます。
StandardFirmataのプログラムをUSBで繋がっているArduinoボードに書き込みます。
(下のgifアニメでご確認ください。)

StandardFirmataインストール動画キャプチャ

これでセットアップは完了です。

Johnny-FiveでArduinoをLチカさせる

Lチカをさせる為に揃えたArduino UNO以外のハードウェアは以下の通りです。

必要なハードウェア

抵抗器の種類、Arduino UNOの接続部の説明、ブレッドボードの作り、LEDの扱い方など以下のチュートリアルが参考になりますので、そちらをご確認ください。

『初心者でもわかる・できる!Arduinoを使った初めての電子工作実践』
- @youtoy

Arduino Lチカの回路図

揃えたハードウェアとArduino UNOを接続すると下のような回路図になります。

Arduino Lチカの回路図

Johnny-Fiveモジュールをインストール

コンピュータ側にNode.jsがインストールされている前提で進めます。

今回のプロジェクト用のディレクトリを任意で作成します。
(例:デスクトップにl_chikaディレクトリを作成)

$ cd /Users/at3/Desktop
$ mkdir l_chika
$ cd l_chika

l_chikaディレクトリにnpmを使ってJohnny-Fiveをインストールする。

$ npm install johnny-five

準備完了です、いよいよLチカさせます。

Node.jsでLチカさせる。

l_chikaディレクトリに適当なjsファイル、例えば今回はblink.jsを作成します。

$ touch blink.js

l_chikaディレクトリにできたblink.jsに以下のコードをペーストし保存します。

var five = require('johnny-five');
var board = new five.Board();

board.on('ready', function() {
  var led = new five.Led(13);
  led.blink(300);
});

blink.jsをnodeコマンド実行してみます。

$ node blink.js

正しく動作すれば下のgifアニメのように300msの間隔でLEDの点滅します。

点滅するLED

今回は基本的な内容でしたが、普段ソフトウェアばかり扱っている当者にとって半田付けの必要もなく、つまずくことなく動作させることができました。

このままモチベーションを維持しつつ、センサーなど使ったネタを上げていければと思います。あと、Maxも久しぶりに触ってみたくなりました。

Arduino エントリーキット(Uno版) Arduino エントリーキット(Uno版)
Arduinoを始めるのに必要のものが揃っており、お手軽なエントリーキット。
今回の内容もこのキットを使っています。
Arduinoをはじめよう 第3版 (Make:PROJECTS) Arduinoをはじめよう 第3版
Arduino入門書の第3版。Arduinoエントリーキットとセットでたのしく電子工作を学べそうです。