特集PC技術

サーバーサイドJavaScriptの図書室

 

9冊目 node.jsでArduinoを使う。

なんか、興味のある記事を見つけたので、試してみた編です。
Arduino(アルドゥイーノ)をnode.jsを使って操作ができるという情報がありました。
組み込み系も少しやったことがあるので、興味あります。

目次

[1] 実験環境

今回の環境は以下のとおりです。
arduinoは、エントリーキットをamazonで買いました。

Arduinoエントリーキット

はじめようキットとエントリーキット迷いましたけど、いろいろ入っているエントリーキットにしました。

js051-img01.jpg

下の画像がArduino

js051-img02.jpg
環境
名前 バージョン
Ubuntu 14.04
node.js v0.10.28
duino v0.0.9
arduino UNO R3

[2] duinoのインストール

node.jsでArduinoを使うために、duinoというライブラリをインストールを行います。
実験したときのバージョンはv0.0.9でした。
Arduino用の環境をフォルダを作り、以下のコマンドを入力しインストールします。

$ npm install duino

上記の手順によりインストールが完了します。
この後、ソースコードを書く前にすることがあります。
du.inoというファイルをarduinoに書き込む必要があります。
私の環境では、[/home/user/node_modules/duino/du.ino]にありました。

[3] Arduino IDEを使ってdu.inoを書き込む

duinoにあるdu.inoを書き込む手順を説明。
これをarduinoに入れておくことにより、node.jsとの連携をすることができます。
今のままだと書き込む方法がありませんから、arduinoの開発環境を用意します。

$ sudo apt-get install arduino
$ sudo addgroup user dialout
※ userは自身のアカウントに置き換えてください。

準備ができましたら、arduino本体とPCを接続しておきます。
arduinoが何のデバイスとして認識されているか確認します。

$ dmesg
[ 44.380089] usb 2-1: new full-speed USB device number 2 using ohci-pci
[ 44.558697] usb 2-1: New USB device found, idVendor=2341, idProduct=0043
[ 44.558708] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[ 44.558712] usb 2-1: Manufacturer: Arduino (www.arduino.cc)
[ 44.558715] usb 2-1: SerialNumber: 85332343332351C05131
[ 44.705296] cdc_acm 2-1:1.0: ttyACM0: USB ACM device
[ 44.710202] usbcore: registered new interface driver cdc_acm
[ 44.710210] cdc_acm: USB Abstract Control Model driver for USB modems and ISD

私のときは、ttyACM0というデバイスで認識されているようです。
このとき認識しているデバイスも覚えておく必要があります。続けて次のコマンドを使って

$ lsusb
Bus 002 Device 002: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)

arduinoが認識されていることがわかります。
ttyACM0というデバイスに書き込むための権限を与えます。

$ sudo chmod a+rw /dev/ttyACM0
※このコマンドはarduinoを接続しなおすと元に戻るので毎回必要?

ここまで確認できましたら、arduino IDEを起動します。
「ツール」→「シリアルポート」→からさきほど許可したデバイスを選びます。
※書き込む権限がないとシリアルポートが選べないです。
他にも、ハードウェアの設定も「arduino UNO」にします。
最初に確認したdu.inoファイルを開いて、書き込みを実行します。
書き込みボタンはマウスカーソルを合わせればどのボタンかわかります。

[4] LEDを点灯させる

du.inoがかけましたら、ソースコードを用意します。
この手のタイプの基本はLEDの点灯です。

led.js
var arduino = require('duino');

// ボードの設定
// device grepコマンドでACMが該当するもの
// debugモード有効
var board = new arduino.Board({
  device: "ACM",
  debug : true
});

// Arduinoの制御設定
var led = new arduino.Led({
  board: board,
  pin: 9
});

// Arduinoの準備ができたら実行する
board.on('ready', function(){
  led.fade();
});

回路図なんですが、「Arduinoをはじめよう」という本に載っているものを使用しています。

js0025.JPG js0026.JPG js0027.JPG js0028.JPG

接続が見栄え悪いですし、何やっているのかわかりずらいですが
Arduinoから接続されているブレッドボードLEDの明るさを調整しています。
明るさが強くなった弱くなったりしています。
なんでこんな風に動かせるのかということに思いつくのは、du.inoというファイルが何かやっているのかなと思います。
こうやっていろいろやっているとnode.jsって何でもいけるような気がしますね。

[5] 更新履歴

日付 詳細
2014/08/28 新規作成

コメントの投稿


画像の中に見える文字を入力してください。

トラックバックURL

http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1866

pagetopこのページの先頭へ戻る