【Edison+Node.js】Node.js+MRAAでArduinoを操作してみた

2014年11月28日

Pocket

edison_thamb3_2

Node.jsでArduinoを操作するには、MRAAというIntelが提供しているライブラリを使います。MRAAは、ArduinoやEdisonのI/OをPython/JavaScript/C++/Cの言語から簡単に操作できるライブラリです。
今回は、デジタル出力とアナログ入力をNode.jsで操作してみます。
 
前回の【Intel(R)Edison × Arduino】WiFi接続してArduinoでデータ送信しPHPで受け取るでWiFi接続はしたので、続きから説明します!

準備物

Edison
Arduino Expansion Board(Arduino拡張ボード)
Arduino Base Shield
Light sensor(光センサー)
LED
MicroUSBケーブル
電源ケーブル
PC
WiFi環境
 
 

1.MRAAセットアップ

ターミナルでEdisonにログインし、 /etc/opkg/mraa-upm.confというファイルを作成する。

# cd /etc/opkg/
# vi mraa-upm.conf

mraa-upm.confファイの中に
“src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic”と入力する。
下記を実行

# opkg update
# opkg install libmraa0

これでMRAAのセットアップOKです。
 
 

2.Node.jsでデジタル出力

13ピンにLEDを刺します。
edison2
 
ターミナルで”nodejs”という作業用ディレクトリを作ります。
そこにファイルを作成していきます。

# mkdir nodejs
# cd nodejs
# vi test.js

test.jsというファイルを作成し、中に下記のコードを書いていく。

var mraa = require("mraa"); //MRAA読み込み
var led = new mraa.Gpio(13); //デジタル入力ピン13を変数に代入

led.dir(mraa.DIR_OUT); 
led.write(1); //LEDを光らす

書き終えたら、Node.jsを動かします。

# node test.js

成功したら、LEDが光ります。
 
 

3.Node.jsでアナログ入力

アナログ入力A0に光センサーを繋げます。
edison15
 
先ほどのコードは消してしまって、test.jsに下記のコードを書いていきます。

var mraa = require("mraa");
var light = new mraa.Aio(0); //アナログA0ピンを変数へ代入

function lightRead(){

	var lightValue = light.read(); //光センサーん値取得

	console.log(lightValue);

	setTimeout(lightRead, 1000); //1秒毎に取得

}
lightRead();

test.jsを実行すると、ターミナル上に光センサーで取得した値が1秒毎に表示されます。
Node.jsを停止させるときは、controlキー+cで停止します。
 
 

入力、出力両方使う

先ほど書いたコードを合わせて、暗くなるとLEDが光り明るいとLEDが消えるようにしました。

var mraa = require("mraa");
var led = new mraa.Gpio(13);
var light = new mraa.Aio(0);
led.dir(mraa.DIR_OUT);

function lightRead(){

	var lightValue = light.read();

	console.log(lightValue);

	if(lightValue < 10){
		led.write(1);
	}else{
		led.write(0);
	}

	setTimeout(lightRead, 100);

}
lightRead();

 
 
 
とりあえず簡単ではありますが、サーバーと連携させてArduinoを操作することができました!!
MRAAの参考コードなど下記のサイトでいろいろ見れます。
https://github.com/intel-iot-devkit/mraa/tree/master/examples
 
 
【超小型Linux Intel(R)Edison】EdisonをセットアップからArduinoでLチカまでやってみた
【Intel(R)Edison × Arduino】WiFi接続してArduinoでデータ送信しPHPで受け取る
【Arduino入門 第一弾】Webデザイナーでもできる電子工作~LED点滅~

このサイトについて


『意識低い系女と高い系男の一年戦争』はクリエイティブ会社エアゼの代表2人が運営するブログです。エアゼは、アプリ・Web・IoT・インタラクティブコンテンツのデザイン・開発を手がけています。

エアゼ ホームページ