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にもある.
- meta-tokoro10g-galileoをmeta-clantonディレクトリ内にcloneする.
- BUILDDIR/conf/bblayers.confのBBLAYERSにmeta-tokoro10g-galileoディレクトリを追加する.
- conflictするとややこしいので,古いバージョンのswigを予め消しておく.その後ビルド.
$ bitbake -f -c cleanall swig-2.0.9 swig-native-2.0.9
$ bitbake swig swig-native
- 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
- あとはmraaをビルドするだけ.
$ bitbake mraa
使う †
mraaを使用することで,様々な言語から共通のインタフェースでIOを叩けるようになる.
サンプルコードもそこそこ同梱されているので確認しながら書いてみよう.
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を一定周期で切り替えることができる.