20
GT202 アプリケーションノート] IoT センサーライト・デモ」 ソフトウェアの実装手順 2015 7 1.0

IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

GT202 アプリケーションノート]

「IoT センサーライト・デモ」

ソフトウェアの実装手順

2015 年 7 月 第 1.0 版

Page 2: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

改版履歴

日付 版数 摘要

2015/07 第 1.0 版

Page 3: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

目次

1. はじめに ................................................................................................................................................. 1

2. 「IoT センサーライト・デモ」ソフトウェアの実装手順 .................................................................................. 2

2.1. ご用意いただくもの .......................................................................................................................... 2

2.2. 動作確認用ハードウェアの準備 ....................................................................................................... 3

2.3. 開発環境のセットアップ ................................................................................................................... 4

2.4. 新規プロジェクトの作成 ................................................................................................................... 5

2.5. インタフェース定義ファイルのコーディング ........................................................................................ 6

2.6. カスタムアプリケーションの実装 ....................................................................................................... 8

2.6.1. コールバック関数の実装 .......................................................................................................... 8

2.6.2. プロパティ更新通知の実装 ....................................................................................................... 9

2.6.3. イベント通知処理の実装 ........................................................................................................ 10

2.6.4. AllJoyn 通信処理タスクの実装 ................................................................................................11

2.6.5. I/O 処理タスクの実装 ..............................................................................................................11

2.7. ビルドおよび実行 .......................................................................................................................... 12

3. ソースコードの構成 ............................................................................................................................... 15

4. AllJoyn フレームワークに関する追加情報............................................................................................. 16

4.1. AllJoyn に関する技術情報、ソフトウェアの入手方法 ...................................................................... 16

4.2. Thin-Core ライブラリと Standard-Core ライブラリの差異について ................................................. 16

4.3. ネットワーク構成における留意事項................................................................................................ 17

Page 4: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

1. はじめに 本ドキュメントでは、GT202 無線 LAN 通信モジュールと AllJoyn フレームワークを利用した IoT ソリューシ

ョンの実装例として、「IoT センサーライト・デモ」のソフトウェアの実装手順を詳しく説明します。

「IoT センサーライト・デモ」は、センサーライト (LED 電球+人感センサ)に GT202 Wi-Fi 通信モジュールと

マイコンを搭載して、スマートフォンへの人感センサ情報の通知および照明制御を行うデモです。

通信機能とユーザインタフェースの実装に AllJoyn フレームワーク(ミドルウェア)を利用することで、最小限

の工数で IoT 機器を実装することができます。

本ドキュメントの手順を参考にして頂くことにより、AllJoyn を利用してオリジナルの IoT 機器ファームウェア

を製作し、GT202 および AllJoyn の評価を行っていただくことができます。

Page 5: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

2. 「IoT センサーライト・デモ」ソフトウェアの実装手順 2.1. ご用意いただくもの

本ドキュメントの手順を実際にお試し頂く際には、以下の物品をご用意ください。

① GT202(QCA4002 hosted mode)開発環境一式

株式会社チップワンストップの Web サイトにて、開発環境の構築手順をご案内しています。

下記 URL から「GT202KITS 開発環境セットアップ手順書」「開発環境構築用ファイル一式」をダウン

ロードし、手順書に従って開発環境をセットアップしてください。

http://sp.chip1stop.com/gt202_downlord/

開発環境は概ね下図の構成になっており、GT202KITS, FRDM-K22F 評価ボード、IAR Embedded

Workbench(有償版または期間限定評価版), PC, 無線 LAN アクセスポイント、Android タブレット

等をご用意いただく必要があります。

② 動作確認用ハードウェア

「IoTセンサーライト・デモ」の参考回路図または、本ドキュメントの 2.2 の手順を参考に、動作確認用

のハードウェアを製作してください。参考回路図は、下記 URL からダウンロードできます。

http://sp.chip1stop.com/gt202_downlord/

③ サンプルソースコード一式

本ドキュメントの手順で作成するソースコードは、下記 URL からダウンロードできます。

http://sp.chip1stop.com/gt202_downlord/

Page 6: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

2.2. 動作確認用ハードウェアの準備

株式会社チップワンストップの Web サイトにて、「IoT センサーライト・デモ」の参考回路図を提供していま

す。同等のハードウェアを製作頂くことで、本ドキュメントの手順に従って作成したソフトウェアの動作確認

を行っていただくことができます。

http://sp.chip1stop.com/gt202_downlord/

より簡単に動作確認を行いたい場合は、以下のようなハードウェアで代用することができます。

端子 PTC3にオシロスコープを接続し、PWM 出力波形を観測する または、LED等を接続する

端子 PTB16に人感センサを接続する (検知時 H レベル出力のセンサモジュールを使用してください) または、押しボタンスイッチを押下時 H レベルになるよう接続する等により、人感センサを代用する

Page 7: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

2.3. 開発環境のセットアップ 以下の手順により、開発環境をご用意ください。

① GT202 (QCA4002 hosted mode)開発環境のセットアップ

株式会社チップワンストップの Web サイトにて、開発環境の構築手順をご案内しています。

下記 URL から「GT202KITS 開発環境セットアップ手順書」「開発環境構築用ファイル一式」をダ

ウンロードし、手順書に従って開発環境をインストールしてください。

http://sp.chip1stop.com/gt202_downlord/

「GT202KITS 開発環境セットアップ手順書」に記載の「Alljoyn デモ ファームウェアビルド手順」

および「デバッガ(OpenSDA J-Link )の設定と、デバッグの開始手順」に従ってビルド・書き込

み・デバッグが行えることを確認してください。

「GT202KITS デモソフト操作手順書」を参考にして、ビルドした AllJoyn デモが動作するこをを

確認してください。

② Python 2.7 のインストール

以下の Web サイトより Python for windows をダウンロードしてインストールして下さい。

https://www.python.org/downloads/windows/

インストール先フォルダは C:¥Python27 としてください。

③ Xmllint コマンドのインストール

ftp://ftp.zlatkovic.com/libxml/ (libxml2ライブラリのWindows版配布サイト)を開き、以下の各

ファイルをダウンロードしてください。

iconv-1.9.2.win32.zip

libxml2-2.7.8.win32.zip

zlib-1.2.5.win32.zip

ダウンロードした zip ファイルを開き、以下の 4 ファイルを取り出してください。

iconv.dll libxml2.dll zlib1.dll xmllint.exe

フォルダ C:¥xmllint を作成して、そこに取り出したファイルを全てコピーしてください。

Page 8: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

2.4. 新規プロジェクトの作成

「IoTセンサーライト・デモ」のソフトウェアは、GT202の開発環境に付属のAllJoynデモと大部分が共通に

なります。以下の操作を行ってサンプルソースコードをコピーして、新規プロジェクトを作成してください。

※以下では、GT202 (QCA4002 hosted mode)開発環境が C:¥Freescale¥Freescale_MQX_4_1 にイ

ンストールされている前提で説明しています。

① コマンドプロンプトを管理者モードで開きます。

② MQX RTOS のインストールフォルダへ移動します(C:¥Freescale¥Freescale_MQX_4_1)

③ バッチファイル prepare_app.bat を実行してください。

下記画面が表示されますので、4 (Alljoyn Demo)を入力してください。

④ バッチファイル dl-alljoyn.cmd を実行してください。

※Alljoyn のソースコードをダウンロード・展開しますので、あらかじめ PC をインターネットに接続した

状態にしてください。

※「Directory exists, not downloading or expanding」と表示される場合は、開発環境のインストー

ル中にダウンロードが完了していますので、そのまま次の手順へ進んでください。

⑤ 以下のコマンドを実行し、demo¥aj フォルダを demo¥aj_slight にコピーします。

robocopy /E /SL demo¥aj demo¥aj_slight

※ 必ず robocopy コマンドを使用してコピーして下さい。他の方法でコピーすると、シンボリックリン

ク等が正しくコピーされないため正常にビルドできません。

⑥ コピー先の下記フォルダにあるワークスペース定義ファイル gt202-frdmk22f.eww をダブルクリック

して開きます。 (IAR Embedded Workbench for ARM が起動します。) C:¥Freescale¥Freescale_MQX_4_1¥

demo¥aj_slight¥alljoyn¥applications¥sample_apps¥tcl¥ServicesSamples¥target¥gt202-frdmk22f¥iar

Page 9: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

2.5. インタフェース定義ファイルのコーディング

「IoT センサーライト・デモ」の AllJoyn による外部インタフェースを実装するため、XML 形式のインタフェー

ス定義ファイル(introspection XML)を作成します。

① 以下のフォルダを新規作成します。

C:¥Freescale¥Freescale_MQX_4_1¥

demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

② ユーザインタフェース定義ファイル sensorlight.xml を実装します。

(手順 2.1①にてダウンロードしたサンプルソースコードから、上記で作成したフォルダに

sensorlight.xml をコピーしてください。)

このファイルの構文、機能等については、下記のドキュメントで定義されています。

Control Panel API Guide - C (Thin Core)

https://allseenalliance.org/developers/develop/api-guide/controlpanel/c-thin

このファイルの記述内容によって、以下の項目を実装しています。

実装項目 「IoT センサーライト・デモ」における実装

コントロールパネルの画面構成 スライダ 1 個(調光)、Power(LED の状態表示)、Sensor

State(人感センサ状態表示)、ボタン 3 個(点灯・減光・消灯)、

チェックボックス 2 個を配置し、表示色等を指定しています。

他の AllJoyn 対応機器から read/write

可能なプロパティの名称、型、変更可

能範囲、数値の単位など

Dimmer(調光, min 0, max 100、単位%)

PIRSensorStateStringProperty(人感センサ状態、文字列)

など、複数のプロパティを定義しています。

プロパティが Read/Write された時にコ

ールバックされる関数名の設定

例えば、プロパティ Dimmer に対する read/write の要求がある

と、getDimmerValue/setDimmerValue 関数が呼ばれるように

記述しています。これによって、Android 端末画面上でスライダ

を操作すると LED 電球の明るさが調整できる動作を実現して

います。

他の AllJoyn 対応機器から起動できる

アクションの定義

turn_on (点灯)、turn_off (消灯) などのアクションを定義して

います。

他の機器からアクションを起動された時

にコールバックされる関数名の設定

アクション turn_onが起動されると、関数TurnOnLight()が呼び

出されるように記述しています。

これによって、Android 端末画面で「Turn On」ボタンをタップす

ると LED 電球が点灯する動作を実現しています。

Page 10: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

③ ①で作成したフォルダSensorLight にバッチファイル cpsgen.bat を作成し、以下の内容を入力しま

す。 set PATH=%PATH%;C:\Python27;C:\xmllint set PROG=%~dp0\..\..\controlpanel\tools\CPSAppGenerator\GenerateCPSApp.py python %PROG% -p %~dp0 sensorlight.xml PAUSE

④ cpsgen.bat を実行します。

フォルダ SensorLight にファイル ControlPanelGenerated.c, ControlPanelGenerated.h が生成

されます。

※ソースファイルが生成されない場合やエラーメッセージを表示したときは、インタフェース定義ファイ

ル sensorlight.xml の内容に誤りがありますので確認してください。

Page 11: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

2.6. カスタムアプリケーションの実装 以下では、手順 2.5 で実装した外部インタフェースに対応する内部動作の実装手順と実装内容を説明致

します。

2.6.1. コールバック関数の実装 手順 2.5 ①で作成したフォルダ SensorLight に、ソースファイル ControlPanelProvided.c ,

ControlPanelProvided.h を実装します。

(手順 2.1①にてダウンロードしたサンプルソースコードから、フォルダ SensorLight にこれらのファイルを

コピーしてください。)

ここで実装する関数は、インタフェース定義ファイル sensorlight.xml に記述したコールバック関数です。

例えば、setDimmerValue 関数では、外部の AllJoyn 対応機器からプロパティ Dimmer の変更が行われ

た時に PWM 出力信号のデューティ比を変更し、LED 照明の調光を実行するよう実装しています。 #ifndef CONTROLPANELPROVIDED_H_ #define CONTROLPANELPROVIDED_H_ #include "alljoyn.h" #include "alljoyn/controlpanel/Common/DateTimeUtil.h" #include "ControlPanelGenerated.h" void* getDimmerValue(PropertyWidget* thisWidget); void setDimmerValue(uint16_t newuint16Var); void* getSensorLightMode(PropertyWidget* thisWidget); void setSensorLightMode(int32_t newint32Var); void* getSensorNotificationMode(PropertyWidget* thisWidget); void setSensorNotificationMode(int32_t newint32Var); void* getPowerValue(PropertyWidget* thisWidget); void setPowerValue(uint16_t newuint16Var); void* getPowerStateString(PropertyWidget* thisWidget); void setPowerStateString(char const* newTemp); void* getPIRSensorStateString(PropertyWidget* thisWidget); void setPIRSensorStateString(char const* newTemp); void TurnOnLight(); void TurnOnNightLight(); void TurnOffLight(); enum { AJLight_Power_ON = 0, AJLight_Power_OFF = 1, AJLight_Power_NightLight = 2, }; enum { CFU_NO_CHANGES = 0, CFU_Power = (1 << 0), CFU_SensorState = (1 << 1), CFU_Dimmer = (1 << 2), }; uint32_t checkForUpdatesToSend();

Page 12: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

enum { CFN_No_Events = 0, CFN_SensorNotification = (1 << 1), }; uint32_t checkForAsyncNotificationToSend(); #endif /* CONTROLPANELPROVIDED_H_ */

2.6.2. プロパティ更新通知の実装

ソースファイル ControlPanelSample.c および ControlPanelSample.hを作成し、プロパティが「IoTセ

ンサーライト・デモ」側の動作により変更された場合にプロパティ更新通知を行う処理を実装します。

(手順 2.1①にてダウンロードしたサンプルソースコードから、フォルダ SensorLight にこれらのファイル

をコピーしてください。)

ここで実装する Controlee_DoWork()では以下の処理を実装しています。

1. LED の 点 灯 状 態 、 調光 、 人 感 セ ン サ 状 態 の 変 化 の 有 無 を 調 べ ま す 。

(checkForUpdatesToSend 関数)

2. 変化があった場合(人感センサが反応して LED 照明が点灯した場合など)、

AJCPS_SendPropertyChangedSignalを使用して Signal を送信して、更新されたプロパテ

ィを通知します。Android 端末等の AllJoyn クライアントは、Signal を受信すると画面表

示のアップデート等の動作を行います。

void Controlee_DoWork(AJ_BusAttachment* busAttachment) { uint32_t updates = checkForUpdatesToSend(); if (updates != 0) { AJ_AlwaysPrintf(("##### Sending update signal: %x \n", updates)); if(updates & CFU_Power) { AJCPS_SendPropertyChangedSignal(busAttachment, EN_ALLJOYNBULB_POWERSTATESTRINGPROPERTY_SIGNAL_VALUE_CHANGED, AJCPS_GetCurrentSessionId()); } if(updates & CFU_SensorState) { AJCPS_SendPropertyChangedSignal(busAttachment, EN_ALLJOYNBULB_PIRSENSORSTATESTRINGPROPERTY_SIGNAL_VALUE_CHANGED, AJCPS_GetCurrentSessionId()); } if(updates & CFU_Dimmer) { AJCPS_SendPropertyChangedSignal(busAttachment, EN_ALLJOYNBULB_DIMMER_SIGNAL_VALUE_CHANGED, AJCPS_GetCurrentSessionId()); } } return; }

Page 13: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

2.6.3. イベント通知処理の実装

ソースファイル SensorNotificationProducer.c を作成し、イベント通知処理を実装します。

(手順 2.1①にてダウンロードしたサンプルソースコードから、フォルダ SensorLight にこれらのファイル

をコピーしてください。)

ここでは以下の処理を実装しています。

1. 人感センサ状態の変化の有無を調べます。

(checkForAsyncNotificationToSend 関数)

2. 変化があった場合(人感センサが反応した場合)、送信するメッセージ内容を指定して

AJNS_Producer_SendNotification 関数でイベント通知を行います。Android スマート

フォンの場合、イベント通知を受信すると、画面の通知領域にメッセージを表示して通知

音を鳴らす等の動作が行われます。 void NotificationProducer_DoWork(AJ_BusAttachment* busAttachment) { uint32_t notifications = checkForAsyncNotificationToSend(); if(notifications & CFN_SensorNotification) { notificationContent.numTexts = NUM_TEXTS; textToSend[0].key = langEng; textToSend[0].value = sensorPositiveNotificationString; notificationContent.controlPanelServiceObjectPath = NULL; // set non-null ObjectPath when we want to popup some dialog on smartphones // notificationContent.controlPanelServiceObjectPath = getNotificationActionObjPath(); AJNS_Producer_SendNotification(busAttachment, &notificationContent,

AJNS_NOTIFICATION_MESSAGE_TYPE_INFO, AJNS_NOTIFICATION_TTL_MIN, NULL);

}

Page 14: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

2.6.4. AllJoyn 通信処理タスクの実装

ソースファイル ServerSample.cを作成し、AllJoyn通信処理タスクのメインループ(AJ_Main関数)を実

装します。

(手順 2.1①にてダウンロードしたサンプルソースコードから、フォルダ SensorLight にこれらのファイル

をコピーしてください。)

メインループは定型処理であるため、以下のサンプルソースをコピーして一部変更するだけで実装する

ことができます。

C:¥Freescale¥Freescale_MQX_4_1¥

demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥ACServerSample¥ACServerSample.c

変更する部分は、機器名・バージョン・製造者名等の表示文字列および、アイコンデータなどです。

アイコンデータの画像ファイル形式は、PNG 形式です。

2.6.5. I/O 処理タスクの実装

「IoT センサーライト・デモ」では、人感センサの読み取り処理および、LED 電球調光用の PWM 信号出力

のデューティ比変更処理などの I/O 処理は AllJoyn 通信処理とは別のタスクで 50ms 毎に実行していま

す。

ソースファイル pwm.c を下記のフォルダに作成し、I/O 処理用のタスクを実装します。

C:¥Freescale¥Freescale_MQX_4_1¥demo¥aj_slight¥alljoyn¥aj_sp140-141mqx¥src

また、タスクのエントリポイントを MQX RTOS に登録するため、以下の 2 ファイルを編集してください。

C:¥Freescale¥Freescale_MQX_4_1¥demo¥aj_slight¥alljoyn¥aj_sp140-141mqx¥src¥aj_tasks.c

C:¥Freescale¥Freescale_MQX_4_1¥demo¥aj_slight¥alljoyn¥aj_sp140-141mqx¥inc¥aj_tasks.h

(手順 2.1①にてダウンロードしたサンプルソースコードから、これらのファイルををコピーしてください。)

Page 15: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

2.7. ビルドおよび実行 ① IAR Embedded Workbench for ARM のプロジェクトから、以下の既存サンプルソースコードを除去

してください。

ACNotificationProducerSample.c

ACServerSample.c

ControlPanelGenerated.c

ControlPanelProvided.c

ControlPanelSample.c

EventsAndActionsSample.c

※下図画面例を参考に操作を行ってください。

これら 6個のファイルを、それぞれ右クリック→「オプション」を開き「ビルドから除外」をチェックします。

Page 16: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

② プロジェクト ServicesSamples に実装したソースファイルを追加してください。

ControlPanelGenerated.c

ControlPanelProvided.c

ControlPanelSample.c

SensorNotificationProducer.c

ServerSample.c

pwm.c

Page 17: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

③ プロジェクト ServicesSamples のプロパティを開き、

「C/C++コンパイラ」→「プリプロセッサ」→「シンボル定義」から EVENTS_AND_ACTIONS を削除

してください。

④ BSP, PSP, ServicesSample の順にプロジェクトをビルドしてください。

⑤ ビルドしたファームウェアを手順 2.2 で用意した「動作確認用ハードウェア」に書き込み、実行してくだ

さい。

具体的な手順は「GT202KITS 開発環境セットアップ手順書」に記載の「デバッガ(OpenSDA J-Link )

の設定と、デバッグの開始手順」を参照してください。

⑤ Android 端末を用意し、アプリ「Dashboard for Alljoyn」をインストールしてください。

https://play.google.com/store/apps/details?id=org.alljoyn.dashboard

⑥ 「GT202KITS デモソフト操作手順書」に記載の「AllJoyn デモの操作手順」を参考に、実装した機能

の動作を確認してください。

EVENTS_AND_ACTIONS の定義を削除

Page 18: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

3. ソースコードの構成 IoT センサーライト・デモのソースコード構成を下図に示します。

AllJoyn Thin-Core ライブラリを使って AllJoyn Service を実装しています。

bsp_frmdk22f120m: MQX RTOSの FRDM-K22Fボード BSP

(board support package) GT202 Wi-Fiデバイスドライバ など psp_frmdk22f120m: MQX RTOSのカーネル Cortex-M4依存コード など

AJ_Target: RTOS・デバイス依存処理部です。 この部分は、使用する RTOS・マイコンに合わせて実装する必要があります。 Wi-Fi (GT202)と AllJoyn ライブラリのイ

ンタフェース MQX RTOSタスクのエントリポイント 不揮発メモリアクセス、乱数生成など、

AllJoynライブラリの低レベル I/O処理

「IoTセンサーライト・デモ」の I/O処理

SampleApps/SensorLight: 本ドキュメントの手順で実装したカスタム

アプリケーション(AllJoyn Service)です。 SampleApps/AppsCommon カスタムアプリケーションの内容によらな

い、共通処理です。

AJ_Core AllJoyn Thin-Core ライブラリ AJ_Services/Common, ControlPanel, Config, Notification, Onboarding: ControlPanel, Config, Notification,

Onboarding等の標準 Alljoyn Serviceを提供します。

Page 19: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

4. AllJoyn フレームワークに関する追加情報 ここでは、AllJoynフレームワークを使用した IoT機器設計の参考のため、IoTセンサーライト・デモにおける

AllJoyn フレームワークの使用について補足します。

4.1. AllJoyn に関する技術情報、ソフトウェアの入手方法 AllJoyn Framework は Allseen Alliance が提供するオープンソースソフトウェアです。

技術情報(アーキテクチャ、API 等のドキュメント)、ソースコードの入手方法については、Allseen Alliance

の Web サイトをご参照ください。

https://allseenalliance.org/

Windows10 では、AllJoyn が標準 API の一部として提供されます。

MSDN で API、開発ツールの使用方法等を参照できます。

4.2. Thin-Core ライブラリと Standard-Core ライブラリの差異について

AllJoyn Framework は Thin-Core と Standard Core の 2 種類のライブラリが提供されます。

これらの主要な差異は以下の通りです。

Standard-Core Thin-Core

スマートフォン・PC など、リソースに余裕がある機

器向け

マイコン等、リソースが限られる機器向け

(各種 RTOS)

※Linux, Windows 等でも動作可能

AllJoyn Router を搭載します。

同一 OS 上に複数の AllJoyn アプリ (クライア

ント・サービス)を動作させることが可能です。

AllJoyn Router を搭載しません。

同一 OS 上で複数の AllJoyn アプリを動作さ

せることができません。

同一 LAN 上の他の機器に搭載されている

AllJoyn Routerを経由しないと、通信が行えま

せん。

クラウド等へのゲートウェイ機能を持たせることが

可能です。

同一 LAN 内の通信のみ可能です。

クラウド等とのインタフェースは、他の AllJoyn 機器

上のゲートウェイ機能を経由して行います。

IoT センサーライト・デモでは、Thin-Core ライブラリを使用しています。

Page 20: IoT センサーライト・デモ」 ソフトウェアの実装手順sp.chip1stop.com/sp/wp-content/uploads/2015/04/20150722...2015/07/22  · demo¥aj_slight¥allseen¥services¥base_tcl¥sample_apps¥SensorLight

4.3. ネットワーク構成に関する留意事項

① IoTセンサーライト・デモはThin-Coreライブラリを使用しているため、AllJoyn Routerを搭載していま

せん。このため、同一 LAN 上で動作している Standard-Core 搭載機器上の AllJoyn Router を経由

しない限り他の AllJoyn 搭載機器との通信が行えない仕様となっています。

AllJoyn Thin-Core Library を利用した IoT ソリューションの開発にあたってはこの点にご留意いただ

き、以下の点を考慮するようにしてください。

同一 LAN 上に最低 1 台の Standard-Core 搭載機器を用意する

AllJoyn Router は常時電源 ON とするか、通信が必要な時に起動できるよう設計する

IoT センサーライト・デモの場合、Android タブレット上の AllJoyn Router を経由して、タブレット上で

動作している AllJoyn クライアント (Dashboard for AllJoyn)と通信しています。

② クラウド対応など、外部ネットワークとの通信を行う場合は、Standard Core ライブラリ搭載機器上に

ゲートウェイ機能を設け、クラウド側の仕様に合わせてゲートウェイを実装する必要があります。

この場合のソフトウェア構成としては、下図のような形態が考えられます。

Gateway Agent のソースコード等は下記にて入手可能です。

https://wiki.allseenalliance.org/gateway/gatewayagent