Galileo?

IntelのGalileo向けIOフレームワークmraaを使う - Galileo

概要

IntelのIoT Dev Kitの一部として開発されている,Galileoボード向けIOフレームワークmraaを使ってみる.
これまで作成してきたイメージとともに使えるように,ビルドの手順を示したうえで,パッケージも配布したい.

パッケージマネージャを使用したインストール

公式にパッケージが配布されている.(14/08/18更新)

# echo "src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/mraa-upm.conf
# opkg update
# opkg install mraa

私がビルドした非公式版も一応置いておく.
BSP1.0.0, eglibcなYoctoをお使いの方は,IntelのGalileoでパッケージマネージャopkgを使う - Galileoの通りに設定した上で,

# opkg update
# opkg install libmraa0

することでmraaのパッケージがインストールされる.

ビルド

mraaのNode.js向けライブラリをビルドするためには,swigの3.0.1以降が必要である.
そこで,OpenEmbeddedのGitHubからswig 3.0.2(執筆時現在)のbitbakeレシピを拝借した.
なお,このレシピはtokoro10g/meta-tokoro10g-galileoにもある.

  1. meta-tokoro10g-galileoをmeta-clantonディレクトリ内にcloneする.
  2. BUILDDIR/conf/bblayers.confのBBLAYERSにmeta-tokoro10g-galileoディレクトリを追加する.
  3. conflictするとややこしいので,古いバージョンのswigを予め消しておく.その後ビルド.
    $ bitbake -f -c cleanall swig-2.0.9 swig-native-2.0.9
    $ bitbake swig swig-native
  4. nativeなswigが新しいバージョンになっていることを確認.
    $ $BUILDDIR/tmp/sysroots/x86_64-linux/usr/bin/swig -version
    SWIG Version 3.0.2
    Compiled with g++ [x86_64-pc-linux-gnu]
    Configured options: +pcre
    Please see http://www.swig.org for reporting bugs and further information
  5. あとはmraaをビルドするだけ.
    $ bitbake mraa

使う

mraaを使用することで,様々な言語から共通のインタフェースでIOを叩けるようになる.
サンプルコードもそこそこ同梱されているので確認しながら書いてみよう.

C

mraa.hをincludeすることで使用できる. コードとしては,

#include "mraa.h"
int main(int argc, char *argv[])
{
	mraa_init();
	mraa_gpio_context gpio;
	gpio = mraa_gpio_init(13);
	mraa_gpio_dir(gpio, MRAA_GPIO_OUT);
	mraa_gpio_write(gpio, 1);
	return 0;
}

とすることで,13番ピンをHIGHにすることができる.

C++

mraa.hppをincludeすることで使用できる. コードとしては,

#include "mraa.hpp"
int main(int argc, char *argv[])
{
	mraa::Gpio* gpio = new mraa::Gpio(13);
	gpio->dir(mraa::DIR_OUT);
	gpio->write(1);
	delete gpio;
	return 0;
}

とすることで,13番ピンをHIGHにすることができる.

Javascript(Node.js)

mraaパッケージがデフォルトでグローバルにインストールされているので,実行するJavascriptファイルのあるディレクトリで

$ npm link mraa

としてから始める. コードとしては,

var m = require("mraa")
var x = new m.Gpio(13)
x.dir(m.DIR_OUT)
x.write(1)

のようにして,13番ピンをHIGHにすることができる.

Python

mraaをimportするだけで使える. コードとしては,

import mraa
import time

x = mraa.Gpio(13)
x.dir(mraa.DIR_OUT)

while True:
	x.write(1)
	time.sleep(0.2)
	x.write(0)
	time.sleep(0.2)

のようにして,13番ピンのHIGHとLOWを一定周期で切り替えることができる.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-18 (月) 05:27:10 (1323d)