act0..4
最初に試すシンプルなact(アクト)
MWSDK/Act_Samples
ディレクトリには、actのサンプルプログラムを格納しています。以下には、目的別のアクトを紹介します。
act0..4
無線機能などを使わないごくシンプルな例です。actの基本構造が理解できます。
I2Cセンサーを接続し、スリープによる簡潔動作を行いながら無線パケットを送信する、無線センサーの実装例です。
BRD_I2C_TEMPHUMID
TWELITE で無線センサーを実装するための代表的な要素(シンプル中継ネット <NWK_SIMPLE>
の利用・インタラクティブモード <STG_STD>
、I2Cセンサーの取り扱い Wire
、スリープによる間欠動作など)が含まれます。
無線パケットを送信、または送受信するサンプルですが、各々少し違った視点で実装されています。
Scratch
UARTから1バイトコマンドを受けて、送信などを行うシンプルなコードです。
Slp_Wk_and_Tx
ステートマシンを用い、スリープを用いた間欠動作で、スリープ復帰→無線送信→スリープを繰り返します。
PingPong
一方から他方にパケットを送信し、受信した他方がパケットを送り返すサンプルです。送信と受信についての基本的な手続きが含まれます。
WirelessUART
UART入力をserparser
を用いてアスキー形式を解釈してから、これを送信します。
独自の受信側親機アプリケーションを実装するときに参照してください。
Parent-MONOSTICK
専ら受信のみを行い、シリアルポートへ受信結果を出力します。このサンプルの無線パケットで、親機向け(0x00
)や子機ブロードキャスト(0xFE
)とアドレス設定しているものは受信できます。またインタラクティブモード<STG_STD>
をactに追加するための手続きが含まれます。
Rcv_Univsl
ユニバーサルパケットレシーバ (TWENETレイヤーツリーネットワーク, App_Twelite
, act
, … など) のサンプルコードです。また、コンテナやアルゴリズムにEASTLライブラリを使用しています。
インタラクティブモードを使用するアクトの解説には大まかな流れを記しています(ここでは上述の BRD_I2C_TEMPHUMID
を引用します)。どのサンプルの解説も大きな差はありません。
BRD_I2C_TEMPHUMID
I2Cセンサーデバイスの読み書きコマンドを実行し I2C センサーから得られた計測値を無線送信します。またインタラクティブモード<STG_STD>
をactに追加するための手続きが含まれます。
Settings
インタラクティブモード<STG_STD>
のより高度なカスタマイズを行います。詳細はコードを参照ください。
内蔵ペリフェラルや外部センサーデバイスからセンサー情報を得るサンプルです。
BRD_APPTWELITE
ディジタル入力、アナログ入力、ディジタル出力、アナログ出力を用いた双方向通信を行っています。またインタラクティブモード<STG_STD>
をactに追加するための手続きが含まれます。
BRD_I2C_TEMPHUMID
I2Cセンサーデバイスの読み書きコマンドを実行し I2C センサーから得られた計測値を無線送信します。またインタラクティブモード<STG_STD>
をactに追加するための手続きが含まれます。
PulseCounter
パルスカウンター機能を用い、スリープ中も含め入力ポートで検出したパルス数を計数し、これを無線送信します。
PAL_AMB_behavior
ビヘイビアを用いた例です。PAL_AMBでは温湿度センサーはライブラリ内部のコードが呼ばれますが、このサンプルでは温湿度センサーのアクセスのための独自の手続きも含まれます。
TWELITE PAL には標準的なPALアプリが書き込まれていますが、PALアプリを用いずアクトによる記述を行うことができます。MWXライブラリには、PALで使用するセンサーを動作させるための標準的な手続きが用意されています。
各種PAL基板用のサンプルです。PAL基板上のセンサー値を取得し、送信し、スリープします。
PAL_AMB
PAL_MOT-single
PAL_MAG
以下は応用例で、上記のアクトより少し複雑な記述になっています。
PAL_AMB_usenap
は、数十msかかるセンサーの動作時間にTWELITEマイコンを短くスリープさせ、より省電力を目指すサンプルです。PAL_AMB_behavior
は、ビヘイビアを用いた例です。PAL_AMBでは温湿度センサーはライブラリ内部のコードが呼ばれますが、このサンプルでは温湿度センサーのアクセスのための独自の手続きも含まれます。PAL_MOT_fifo
は、加速度センサーのFIFOおよびFIFOの割り込みを用いて、サンプルを中断することなく、連続的に取得し無線送信するためのサンプルです。PAL_MOT
アクトが利用できます。軽微な修整が必要となる場合があります。
PAL_MOT-single
PAL_MOT_fifo
は、加速度センサーのFIFOおよびFIFOの割り込みを用いて、サンプルを中断することなく、連続的に取得し無線送信するためのサンプルです。BRD_ARIA
は、TWELITE ARIA を動作させるためのアクトです。BRD_I2C_TEMPHUMID
は、I2C センサー利用のためのテンプレートですが、実装例として TWELITE ARIA で利用する SHT40 センサー用のコードが含まれます。PAL_AMB
用のアクトを修整することで利用できます。Unit-*
は機能やAPIの紹介を目的としています。
最新版のコードや MWSDK バージョン間の修正履歴を確認する目的で Github にソース一式を置いています。以下のリンク先を参照してください。
アクトのサンプル中で以下の項目は共通の設定項目になり、以下で解説します。
const uint32_t APP_ID = 0x1234abcd;
const uint8_t CHANNEL = 13;
const char APP_FOURCHAR[] = "BAT1";
サンプルアクト共通として以下の設定をしています。
アプリケーションIDとチャネルはともに他のネットワークと混在しないようにする仕組みです。
アプリケーションIDが異なる者同士は、チャネルが同じであっても混信することはありません。ただし、別のアプリケーションIDのシステムが頻繁に無線送信しているような場合はその無線送信が妨害となりますので影響が認められます。
チャネルは通信に使う周波数を決めます。TWELITE無線モジュールでは原則として16個のチャネルが利用でき、通常のシステムでは実施しないような極めて例外的な場合を除いて、他のチャネルとは通信できません。
サンプルアクト共通の仕様として、パケットのペイロード(データ部)の先頭には4バイトの文字列(APP_FOURCHAR[]
)を格納しています。種別の識別性には1バイトで十分ですが、解説のための記述です。こういったシステム特有の識別子やデータ構造を含めることも混信対策の一つであるといえます。
最初に試すシンプルなact(アクト)
テンプレートコード
スリープ起床時にパケットを送信する
親機アプリケーション(MONOSTICK用)
パケットを打ち返す
デジタル・アナログ信号伝送
I2Cセンサーデバイスによるデータ送信
TWELITE ARIAを使ったサンプル
環境センサーパルを使ったサンプル
環境センサーパルを使ったサンプル
環境センサーパルを使ったサンプル
磁気センサーパルを使ったサンプル
加速度センサーパルを使ったサンプル
加速度センサーパルを使ったサンプル
パルスカウンターを使ったサンプル
シリアル通信を行います。
様々なパケットを受信します
単機能の動作確認サンプル