LoRaWANシステムインパッケージを使用した長距離ワイヤレス接続設計の高速化

著者 Stephen Evanczuk

Digi-Keyの北米担当編集者 の提供

低コスト、長距離、低電力のワイヤレス接続を必要とするリモートセンシングアプリケーションにおいて、LoRa技術はBluetoothやWi-Fiなどの代替技術よりも人気があります。しかし、コスト効率に優れた方法で迅速にLoRa設計を実装することで、一般的なIoTシステムの制限された電力バジェットを超過せずに、通信範囲とデータレートを最大化することが求められており、設計者はRF設計の微調整に苦戦しています。

シリコンベンダー各社はLoRaベースの設計を高速化するために、長距離接続用ニアドロップインソリューションとして、完全なシステムインパッケージ(SiP)モジュールと関連LoRaWANソフトウェアスタックを開発しています。

この記事は、LoRaアプローチを簡単に説明した後、適切なハードウェアおよびソフトウェアソリューションと、設計者がそれらを使用して設計を迅速に進める方法を紹介します。

長距離IoTネットワーク

LoRa(long-rangeの略)とは、超効率的、低コスト、低電力、プロプライエタリ、スペクトラム拡散を特徴とする無線方式のことです。LoRaは電池駆動のセンサや他の低電力アプリケーションに対応できるため、Wi-FiやBluetoothの範囲外で動作するIoTアプリケーションに最適です。LoRaベースの設計は、数キロに広がる広大なネットワークに対してセキュアな接続を確実に提供しつつ、小さな電池で数年間動作可能です。

LoRaWANはメディアアクセス制御(MAC)層であり、ネットワークの動作を定義し、データレート(標準で最大50Kビット/秒)を設定するLoRa無線インターフェースの上位に位置します(『LoRaWAN第1部:IoTで15kmワイヤレスと10年の電池寿命を実現する方法』を参照)。LoRaWANの広域ネットワークアーキテクチャは、スター型ネットワークトポロジで動作し、ゲートウェイを使用して複数のエンドデバイス間(IoTセンサやホストサーバなど)でメッセージをリレーします(図1)。LoRaWANの代替MAC層を活用することで、LoRa無線を個別に使用することはできますが、インターフェースはLoRaWAN仕様に準拠しません。

LoRaWAN仕様の図

図1:LoRaWAN仕様は、エンドデバイスとネットワークサーバ間の認証付き暗号化通信を実現します。また、ゲートウェイを使用して、クラウドまたは専用環境でエンドデバイスとの長距離接続とネットワークホストとの広域接続をブリッジします。(画像提供:LoRa Alliance)

このアーキテクチャでは、エンドデバイスとホストサーバはゲートウェイデバイスを経由して通信します。これらのゲートウェイデバイスは、通信ブリッジとしてシンプルに機能するよう構成できます。ホストサーバとの通信では、ゲートウェイは従来の接続オプション(Wi-Fi、Ethernet、セルラーなど)を使用します。エンドデバイスとの通信では、ゲートウェイはSemtech独自のLoRa物理(PHY)層の機能に依存し、サブギガヘルツ(GHz)帯を使用して信頼性の高い長距離接続を実現します。どちらの場合も、LoRaWANはAES暗号化によりエンドツーエンド通信を保護します。AES暗号化は、本番環境と試運転環境を問わず、またはover-the-air(OTA)アクティベーションを通じて作成可能なネットワークセッション/アプリケーションセッションキーを使用します。

LoRaWANネットワークではエンドデバイスとの通信はすべて双方向ですが、LoRaWANプロトコル仕様では3種類のエンドデバイスクラスが定義されています。これらのクラスは、開発者が消費電力と待機時間の間で実質的なバランスを維持するのに役立ちます。クラスAのエンドデバイスは、各送信後の2つの短いダウンリンク受信ウィンドウの間に、受信のみ可能です。レシーバをアクティブにする期間を制限することにより、クラスAデバイスはIoTセンサなどの電力に制約のあるデバイスで大いに役立ちます。クラスBは、クラスAと追加受信ウィンドウを組み合わせます。したがって、このクラスは、Rx消費電力の増加という代償を払ってでも、より少ない待機時間でホスト要求に応答する必要があるIoTアクチュエータデバイスに適しています。最後のクラスCデバイスは、オープン受信ウィンドウがほぼ連続しており、LoRaWANゲートウェイでの使用に最適です。

LoRaWANのハードウェアプラットフォームおよびソフトウェアシステムを構成する際に、セキュリティ、電力低減、長距離接続を最適化しようとすると、無数の詳細な事項に対応しなければならなくなり、開発が遅延する場合があります。しかし、Microchip Technologyのハードウェアとソフトウェアは、LoRa技術を展開するためのニアドロップインソリューションとして、LoRaWANネットワークの実装を簡素化します。

低電力統合ソリューション

MicrochipのSAM R34/35システムインパッケージ(SiP)モジュールは、低電力のArm® Cortex®-M0+、Semtech SX1276トランシーバ、フラッシュ、RAM、特別な低電力(LP)RAM、および一般的にセンサシステムで必要とされる各種周辺機器の包括的なセットをすべて提供します(図2)。SAM 34/35では、カスタム構成が可能なロジックモジュールだけでなく、マルチチャンネル12ビットA/Dコンバータ(ADC)、アナログコンパレータ、およびさまざまなシリアルインターフェース(I2CやSPIなど)に対応するようにプログラムされた複数のシリアル通信モジュールを利用できます。SAM R34/R35 SiPの違いは、R35はR34に含まれるUSBインターフェースを提供しないという点だけです。その違いを除き、6 x 6ミリメートル(mm)SAM R34/35モジュールは3つの異なるメモリ構成において同じ仕様です。

  • ATSAMR3xJ16BT-I/7JX、64Kバイトのフラッシュ、8KビットのSRAM、4Kバイトの低電力SRAM付き
  • ATSAMR3xJ17BT-I/7JX、128Kバイトのフラッシュ、16KビットのSRAM、8Kバイトの低電力SRAM付き
  • ATSAMR3xJ18BT-I/7JX、256Kバイトのフラッシュ、32KビットのSRAM、4Kバイトの低電力SRAM付き

Microchip Technologyが提供するSAM R34/R35システムインパッケージモジュールの図

図2:Microchip TechnologyのSAM R34/R35システムインパッケージモジュールは、低電力のArm Cortex-M0+プロセッサコア、Semtech SX1276トランシーバ、メモリ、および複数の周辺機器(SAM R35のUSBを除く)を提供します。(画像提供:Microchip Technology)

SiPモジュールは低電力アプリケーション向けに設計されており、ソフトウェアで選択可能な複数のオプションを利用することで、アクティビティが少ない期間の電力を低減させることができます。開発者は、SAM R34/R35が2つの異なる性能レベルで動作するように設定できます。高性能レベル(PL2)では、デバイスコアが最高電圧で動作するため、デバイスのクロック速度も高速化します。低性能レベル(PL0)では動作周波数が抑えられ、コアの電圧のそれに応じるため、全体の消費電力も低減されます。

開発者は同じ性能レベルでデバイスの電力モードをプログラムで切り替えることもできます。アイドルモードの消費アンペアは4.5ミリアンペア(mA)に抑えられ、短期間のピーク需要でもTxで最大28mA、Rxで最大10.3mAという性能を誇ります。開発者は、このモジュールをスタンバイモードに設定して、アクティビティを維持するために特別にプログラムされたものを除き、すべてのクロックおよび機能をオフにすることにより、モジュールの消費電力を1.4マイクロアンペア(µA)まで低減できます。さらに、このモジュールはSleepWalking動作をサポートします。これにより、選択した周辺機器がプロセッサから独立してイベントに応答して動作し、必要な場合にのみプロセッサをウェイクアップするようになります。このモジュールをスリープモードに設定して、消費アンペアを790ナノアンペア(nA)に抑えることで、長時間の非アクティビティ期間に消費する電力を低減できます。Microchipは、内部SPIバスのハイインピーダンスが原因で準安定の状態になるため、デバイスをオフ状態にしないよう警告しています。

設計実装

このモジュールには統合機能があるため、ハードウェアのインターフェース要件はシンプルです。開発者は、SAM R34/R35 SiP用のデカップリングコンデンサ以外に、Skyworks Solutions のSKY13373などの信号スイッチ、および送信/受信RF信号経路を完成させるのに必要な受動部品を追加するだけで済みます(図3)。

Microchip Technologyが提供するSAM R34/R35モジュールの図(クリックして拡大)

図3:開発者がMicrochip TechnologyのSAM R34/R35モジュールを使用する場合、RF信号経路や関連するRFスイッチ(Skyworks SolutionsのSKY13373など)に必要な部品に加えて、いくつかの追加部品が必要です。(画像提供:Microchip Technology)

Microchip TechnologyのDM320111 SAM R34 Xplained Pro評価キットを使用することにより、開発者はこれらのシンプルな追加ハードウェア要件でさえ考慮する必要がなくなります。開発者は、このキットを使用することで、すぐにSAM R34の評価を開始したり、ハードウェアリファレンス設計をカスタムデバイス用に拡張したりできます。

Microchipは、SAM R34/R35モジュールファームウェアとサンプルソフトウェア(Atmel Studio 7統合開発環境で入手可能)を組み合わせることにより、ソフトウェア開発を高速化するのにも役立ちます。SAM R34/R35 SiPは、統合されたSemtech SX1276 LoRaトランシーバおよびPHY上に構築されており、内蔵Microchip LoRaWAN Stack(MLS)により認証済みLoRaWAN実装を提供します(図4)。

Microchip LoRaWAN Stack(MLS)の図

図4:Microchip LoRaWAN Stack(MLS)は、一連のアプリケーションプログラミングインターフェース(API)により、MAC、PHY、固定記憶域、電源管理用のファームウェアサービスを開発者に提供します。(画像提供:Microchip Technology)

デバイスドライバおよびコアモジュールのMicrochip Advanced Software Framework(ASF)に基づいて、MLSファームウェアは以下の各サービス用にアプリケーションプログラミングインターフェース(API)を提供します。

  • LoRaWAN MAC層機能を提供するLoRaWAN MAC
  • LoRaトランシーバへのアクセスを提供するLoRaWAN無線層(TAL)
  • フラッシュメモリにサービス層を提供して、MLSパラメータを取得するためのアクセス時間とアクセスサイクルを削減する永続データサーバ(PDS)
  • 非アクティブ期間中にプロセッサをスリープモードに設定する電源管理モジュール(PMM)
  • ハードウェア仕様からコードを隠蔽するハードウェア抽象化レイヤ(HAL)
  • タイマライブラリ
  • プロセッサリソースを異なるモジュールに割り当てるスケジューラ

API機能を使用することにより、開発者はモジュール機能のあらゆる側面を細かく制御できます。たとえば、モジュールをスリープモードに設定するために、開発者はPMM API機能(PMM_Sleep())を呼び出します。これは、スリープ時間、スリープモード(アイドル、スタンバイ、スリープ、またはオフ)、および完了コールバック機能を含むスリープ要求構造という形式で記述されます(リスト1)。一般的に、開発者は各タスクの終了後にアプリケーション内でこの機能を呼び出します。たとえば、MicrochipのASFディストリビューションにはサンプルエンドデバイスアプリケーションが含まれ、無限ループ内でこのアプローチを使用します(リスト2)。各MLS APIは、MLSファームウェアサービスに同様のエントリポイントを提供します。

コピー /* Structure of sleep request */ typedef struct _PMM_SleepReq_t {        /* Sleep time requested to PMM.Unit is milliseconds */        uint32_t sleepTimeMs;     /*  Sleep Modes */        HAL_SleepMode_t sleep_mode;        /* Callback from sleep request */        void (*pmmWakeupCallback)(uint32_t sleptDuration); } PMM_Sleep 

リスト1:MicrochipのAdvanced Software Framework(ASF)ディストリビューションではサンプルソフトウェアが提供されています。このサンプルでは、Microchip TechnologyのSAM R34/R35モジュールをスリープ状態に設定するのに使用するこのコードのような、主な設計パターンとデータ構造が示されています。(コード提供元:Microchip Technology)

コピー   ...while (1)     {               serial_data_handler();         SYSTEM_RunTasks(); #ifdef CONF_PMM_ENABLE         if (false == certAppEnabled)         {             if(bandSelected == true)             {                 PMM_SleepReq_t sleepReq;                 /* Put the application to sleep */                 sleepReq.sleepTimeMs = DEMO_CONF_DEFAULT_APP_SLEEP_TIME_MS;                 sleepReq.pmmWakeupCallback = appWakeup;                 sleepReq.sleep_mode = CONF_PMM_SLEEPMODE_WHEN_IDLE;                 if (CONF_PMM_SLEEPMODE_WHEN_IDLE == SLEEP_MODE_STANDBY)                 {                     deviceResetsForWakeup = false;                 }                 if (true == LORAWAN_ReadyToSleep(deviceResetsForWakeup))                 {                     app_resources_uninit();                     if (PMM_SLEEP_REQ_DENIED == PMM_Sleep(&sleepReq))                     {                         HAL_Radio_resources_init();                         sio2host_init();                         /*printf("\r\nsleep_not_ok\r\n");*/                     }                 }             }         } #endif     }   ... 

リスト2:Microchipのサンプルソフトウェアは、開発者が複数のAPI呼び出しを使用して、非アクティブ期間中にMicrochip TechnologyのSAM R34/R35モジュールを低電力状態に戻す方法を示しています。(コード提供元:Microchip Technology)

Studio 7または個別にASFディストリビューションを通して入手可能なサンプルコードは、LoRaWANアプリケーション実装におけるMLS API呼び出しの包括的な使用例を提供します。エンドデバイス実装のデモは、重要かつ高度な操作を示しています。これには、以前に保存したMLS属性およびパラメータを永続データサーバ(PDS)サービスから取得してデバイスを初期化する操作などが含まれます(リスト3)。他のサンプルソフトウェアは、開発者による詳細なLoRaWAN性能特性の分析を可能にする一連のテストルーチン、およびそれらの値の抽出に使用できるMLS API呼び出しを提供します。MicrochipのソフトウェアサンプルをSAM R34 Xplained Pro評価キットと組み合わせて使用することにより、開発者は一般的なLoRaWAN操作およびMicrochipファームウェアサービスの詳細を短期間で習得することができます。

コピー /*********************************************************************//** \brief    Initialization the Demo application *************************************************************************/ void mote_demo_init(void) {     bool status = false;     /* Initialize the resources */     resource_init();        /* Read DEV EUI from EDBG */        dev_eui_read();        startReceiving = false;     /* Initialize the LORAWAN Stack */     LORAWAN_Init(demo_appdata_callback, demo_joindata_callback);     printf("\n\n\r*******************************************************\n\r");     printf("\n\rMicrochip LoRaWAN Stack %s\r\n",STACK_VER);     printf("\r\nInit - Successful\r\n");       status = PDS_IsRestorable();     if(status)     {         static uint8_t prevBand = 0xFF;         uint8_t prevChoice = 0xFF;         PDS_RestoreAll();         LORAWAN_GetAttr(ISMBAND,NULL,&prevBand);         for (uint32_t i = 0; i < sizeof(bandTable) -1; i++)         {             if(bandTable[i] == prevBand)             {                 prevChoice = i;                 break;             }         }         memset(rxchar,0,sizeof(rxchar));         sio2host_rx(rxchar,10);         printf ("Last configured Regional band %s\r\n",bandStrings[prevChoice]);         printf("Press any key to change band\r\n Continuing in %s in ", bandStrings[prevChoice]);           SwTimerStart(demoTimerId,MS_TO_US(1000),SW_TIMEOUT_RELATIVE,(void *)demoTimerCb,NULL);     }     else     {               appTaskState = DEMO_CERT_APP_STATE;         appPostTask(DISPLAY_TASK_HANDLER);     } } 

リスト3:Microchipのエンドデバイスサンプルアプリケーションのスニペットでは、デバイス初期化に関連した基本的な設計パターンが示されています。これには、可能な場合に永続データサーバ(PDS)からLoRaWAN属性を復元(PDS_IsRestorable())する操作などが含まれます。(コード提供元:Microchip Technology)

結論

LoRa技術は、電池駆動のIoTセンサ向けの長距離接続という新しいニーズに対処するのに最適です。ただし、今までは、ハードウェアおよびソフトウェアサブシステムの開発の大部分が開発者に委ねられていました。Microchip SAM R34/R35 SiPモジュールは、ハードウェアとファームウェアを統合し、以前のアプローチでは避けることができなかった数多くの詳細な設計要件を効果的に排除します。Microchip LoRaWANベースのハードウェアおよびソフトウェアと組み合わせて使用することにより、開発者は電池駆動のIoTデバイスおよび低電力ゲートウェイを迅速に実装できます。これにより、クラウド内または専用環境内のホストサーバとのセキュアな長距離通信を実現できます。

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。

著者について

Stephen Evanczuk

Stephen Evanczuk氏は、IoTを含むハードウェア、ソフトウェア、システム、アプリケーションなど幅広いトピックについて、20年以上にわたってエレクトロニクス業界および電子業界に関する記事を書いたり経験を積んできました。彼はニューロンネットワークで神経科学のPh.Dを受け、大規模に分散された安全システムとアルゴリズム加速法に関して航空宇宙産業に従事しました。現在、彼は技術や工学に関する記事を書いていないときに、認知と推薦システムへの深い学びの応用に取り組んでいます。

出版者について

Digi-Keyの北米担当編集者