連載
» 2016年02月05日 09時00分 公開

Raspberry PiにAllJoynを移植して、IoTを自作する(7/10 ページ)

[橋本 尚(The Linux Foundation),MONOist]

4.5.1 GPIOを操作するために

 オリジナルのソースをビルドすると、GPIOの操作はシミュレーションされたものとなります。つまり、Webインタフェースで、GPIOのピンのON/OFFを制御する機能が組み込まれることになります(ソースのsimio/io_simulation.cをみてください)。

 ただ、このままではRaspberry PiのGPIOを操作できないため、Raspberry Pi用に筆者が少し書き直したものを追加します。OSDNに関係するファイルを用意しました(OSDN:alljoyn-raspber)。ビルドに必要なファイルはraspGPIO.tgzとbin.tgzですので、それらをダウンロードします。

 GPIO制御用ライブラリもインストールします。最近はパッケージ化されたようなので、

Apt-get install libwiringPi

 と、インストールします。

 alljoyn-jsの下でraspGPIO.tgzを展開すると、raspbianとjs-raspという名前のディレクトリができます。raspbianの下には、wiringPiライブラリを使用して、GPIOを制御するモジュールを入れてあります。js-rasp下には、JavaScriptで書かれたクライアント(アプリケーション)があります。

 bin.tgzにはJavaScriptで使用するscriptが格納されているのでそれらを展開後、/usr/local/bin/に格納します。ビルドするため、SConstructを編集して、ビルド時に必要なlibwiringPiの追加と、GPIO操作モジュールの入れ替えを行います。

root@AllJoyn# diff SConstruct*
165c165
<     env.Append(LIBS = ['libwiringPi', 'libwiringPiDev', 'libm', 'libcrypto', 'libpthread', 'librt'])
---
>     env.Append(LIBS = ['libm', 'libcrypto', 'libpthread', 'librt'])
root@AllJoyn# diff SConscript*
70c70
<     io_sources = [Glob('raspbian/*.c')]
---
>     io_sources = [Glob('simio/*.c')]

 オリジナルと同様にビルドします。

export DUK_TAPE=(duktapeをインストールしたディレクトリ)
scons WS=off CPU=arm CROSS_COMPILE=/usr/bin/

 実行は次のようにします。まず、ヘルプを表示します。

sudo ./alljoynjs --help
 
Usage: sudo ./alljoynjs  [--debug] [--daemon] [--log-file <log_file>] [--nvram-file <nvram_file>] [--name <device_name>] [script_file]

 --nameの後ろには、後で説明するAndroid端末で表示する名称を指定します。script_fileは、Java scriptで記述したクライアント(アプリケーション)を指定します。例題をjs-raspに幾つか置いています。

Copyright © ITmedia, Inc. All Rights Reserved.