mraaでintel edisonを遊ぼう

38
MRAAでIntel Edison を遊んでみよう (株)MOONGIFT 中津川篤司

Upload: atsushi-nakatsugawa

Post on 07-Aug-2015

733 views

Category:

Technology


0 download

TRANSCRIPT

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 - %d\n", adc_value, adc_value); fprintf(stdout, "ADC A0 read float - %.5f\n", 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/