MRAAでIntel Edison
を遊んでみよう
(株)MOONGIFT 中津川篤司
自己紹介
@a_nakatsugawa
fb.me/moongift
株式会社MOONGIFT 代表取締役
2004年1月よりオープンソース・ソフトウェアを毎
日紹介するブログ MOONGIFT を運営。
http://www.moongift.jp/
中津川 篤司
@moongift fb.me/moongift.fan
アジェンダ
1. MRAAについて
2. 今回のハードウェアの組み合わせ
3. アナログ入力を取る
4. デジタル出力する
ご質問など
• 後で質疑応答がたぶんあります
• @moongift 宛につぶやいておいてもらっても後
でお答えします。
Intel Edisonって?
• Intel社が販売している超小型&超低消費電力コンピュータ
• Yocto Linux搭載
8,640円7,290円 12,150円
Intel Edisonって?
• Intel社が販売している超小型&超低消費電力コンピュータ
• Yocto Linux搭載
8,640円7,290円 12,150円
Intel XDK IoT Edition
MRAAって何よ?
Intel社が開発しているハードウェアを操作するため
のライブラリ(Galileo/Edison)
Intel Edisonはデフォルトでインストール済み
オープンソース・ソフトウェア(MIT License)
Raspberry PI/Bannana Pi/Beaglebone Black対応
C/C++ >>>>>> Python > node.js(JavaScript)
https://github.com/intel-iot-devkit/mraa/
サンプルコード(C++)
#include "mraa.hpp"
int
main(){
uint16_t adc_value;
float adc_value_float;
mraa::Aio* a0;
a0 = new mraa::Aio(0);
if (a0 == NULL) {
return MRAA_ERROR_UNSPECIFIED;
}
for (;;) {
adc_value = a0->read();
adc_value_float = a0->readFloat();
fprintf(stdout, "ADC A0 read %X - %dn", adc_value, adc_value);
fprintf(stdout, "ADC A0 read float - %.5fn", adc_value_float);
}
return MRAA_SUCCESS;
}
サンプルコード(Python)
import mraa
import time
x = mraa.Gpio(8)
x.dir(mraa.DIR_OUT)
while True:
x.write(1)
time.sleep(0.2)
x.write(0)
time.sleep(0.2)
サンプルコード(JavaScript)
var m = require('mraa'); //require mraa
console.log('MRAA Version: ' + m.getVersion());
var myDigitalPin = new m.Gpio(6);
myDigitalPin.dir(m.DIR_IN);
periodicActivity();
function periodicActivity() {
var myDigitalValue = myDigitalPin.read();
console.log('Gpio is ' + myDigitalValue);
setTimeout(periodicActivity,1000);
}
ここまでのまとめ
• Intel Edisonは超小型コンピュータ
• MRAAはIntel Edisonをはじめ、IoTデバイスを扱う共
通APIライブラリ
• C/C++がベースで、その後Python/JavaScriptに翻訳
• 基本的な使い方はどれも同じ
今回のハードウェア/

ソフトウェアの組み合わせ
Intel Edison Kit for Arduino
でかい!
Arduinoのモジュールが使え
る!
5Vが使える!
お値段 12,150円!
LittleBits
http://littlebits.cc/
磁石でくっつけるだけの簡単電子おもちゃ
Arduino Kit / Hardware
Development Kit / CloudBit で
大人のおもちゃに!
今回のデモをやるためには

 だいたい200ドル(送料別)
https://youtu.be/YUUsJSDa7PE
開発するためには
• Intel XDK IoT Editionを使おう
https://software.intel.com/en-us/html5/xdk-iot
アナログ入力を取る
var mraa = require('mraa'); //require mraa
var analogPin0 = new mraa.Aio(0);
value = analogPin0.read(); // 0 ∼ 1000
デモ
デジタル出力する
var motor = new mraa.Gpio(13);
motor.write(0); // 停止
motor.write(1); // 回転
// 2秒後に停止
setTimeout(function () {
motor.write(0);
}, 2000);
デモ
ここまでのまとめ
MRAAを使えば Intel Edison の操作が簡単にで
きます(RasPIも)。
MRAAはC/C++、Python、node.jsに対応
操作の手軽さを考えるとArdiuno版も良い
もうちょっと遊んでみる
IoTとは何か?
• インターネットを使って自分の表現したいものを表
現する
• 表現したいもの? → 社会的問題
我が家における社会的問題?
• エアコンの切り忘れ問題
• 電灯を消して、エアコンを忘れる
• 出かける時忘れる、食事の時忘れる、寝る時忘れる
解決しないと家庭社会問題に発生する可能性が
構成
Intel Edison Light Sensor
++
IRKit
++
Smart Home KIT
Smart Home Kit! お値段たったの249ドル!
var on = null;
var http = require('http');
setInterval(function () {
var value = analogPin0.read();
var options = {
hostname: "192.168.0.20",
path: "/messages",
method: "POST"
};
var data = {};
console.log("Value", value);
if (value > 250) {
if (on == null ¦¦ on == false) {
data = '{"format":"raw","freq":38,"data":

[6424,3228,873,787,…,8]} ;
on = true;
console.log("ON");
}else{
return true;
}
} else {
} else {
if (on == null ¦¦ on == true) {
data = { format : raw ,"freq":38,
"data":[6424,3228,...,873]}';
on = false;
console.log("OFF");
}else{
return true;
}
}
var req = http.request(options, function(res) {
var body = '';
res.setEncoding('utf8');
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
console.log("POSTED");
});
});
req.write(data);
req.end();
}, 3000);
デモ
IoT…?
• ネットワーク(LAN)は使っているけどインターネッ
ト(Internet)使ってなくね?
ニフティクラウド
mobile backend
• アプリ、Webアプリのバックエンド(サーバサイ
ド)をまるっと提供するサービス。いわゆる
mBaaS。
• データベースとかファイルストレージ、プッシュ通
知とか。
http://mb.cloud.nifty.com/
構成
Intel Edison Light Sensor
++
IRKit
NCMB
var NCMB = require('./ncmb-1.2.6.js').NCMB;
var app_key = APPLICATION_KEY';
var cli_key = CLIENT_KEY';
NCMB.initialize(app_key, cli_key);
var IRKit = NCMB.Object.extend("IRKit");
var message = "";
setInterval(function () {
if (value > 250) {
if (on == null ¦¦ on == false) message = "エアコンをオン";
} else {
if (on == null ¦¦ on == true) message = "エアコンをオフ";
}
var obj = new IRKit();
obj.set("action", message);
:
res.on('end', function() {
console.log("POSTED");
obj.save();
});
デモ
まとめ
• MRAAを使えばIntel Edisonの入力系が簡単に操作で
きるようになります。
• C/C++/Python/node.js向けがありますがnodeはラ
イブラリも多くなってきたので楽
• センサー系が欲しい場合はLittleBitsいいよ!
• ニフティクラウド mobile backendも一緒にどうぞ!
宣伝
• 開発者向けPRサービス DevRel をやっています。

開発者ブログ執筆

エヴァンジェリスト代行

セミナー登壇

勉強会の開催
ご静聴ありがとう
ございました
http://www.moongift.jp/

MRAAでIntel Edisonを遊ぼう