マルツTOP > APPLICATION LAB TOPページ > おすすめ技術記事アーカイブス > LoRaWAN SiPを使用した長距離ワイヤレス接続設計の高速化
LoRaWAN SiPを使用した長距離ワイヤレス接続設計の高速化
著者 Stephen Evanczuk 氏
Digi-Keyの北米担当編集者 提供
2019-02-27
マルツ掲載日:2019-06-10
低コスト、長距離、低電力のワイヤレス接続を必要とするリモートセンシングアプリケーションにおいて、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仕様に準拠しません。

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

図2:Microchip TechnologyのSAM R34/35 SiPモジュールは、低電力のArm Cortex-M0+プロセッサコア、Semtech SX1276トランシーバ、メモリ、および複数の周辺機器(SAM R35のUSBを除く)を提供します。(画像提供:Microchip Technology)
このモジュールには統合機能があるため、ハードウェアのインターフェース要件はシンプルです。開発者は、SAM R34/35 SiP用のデカップリングコンデンサ以外に、Skyworks Solutions のSKY13373などの信号スイッチ、および送信/受信RF信号経路を完成させるのに必要な受動部品を追加するだけで済みます(図3)。

図3:開発者がMicrochip TechnologyのSAM R34/35モジュールを使用する場合、RF信号経路や関連するRFスイッチ(Skyworks SolutionsのSKY13373など)に必要な部品に加えて、いくつかの追加部品が必要です。(画像提供:Microchip Technology)
結論
図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 R34/35では、カスタム構成が可能なロジックモジュールだけでなく、マルチチャンネル12ビットA/Dコンバータ(ADC)、アナログコンパレータ、およびさまざまなシリアルインターフェース(I2CやSPIなど)に対応するようにプログラムされた複数のシリアル通信モジュールを利用できます。SAM R34/R35 SiPの違いは、R35はR34に含まれるUSBインターフェースを提供しないという点だけです。その違いを除き、6×6mmのSAM R34/35モジュールは、3つの異なるメモリ構成において同じ仕様です。
・ATSAMR3xJ16BT-I/7JX、64KBフラッシュ、8KビットSRAM、4KB低電力SRAM
・ATSAMR3xJ17BT-I/7JX、128KBフラッシュ、16KビットSRAM、8KB低電力SRAM
・ATSAMR3xJ18BT-I/7JX、256KBフラッシュ、32KビットSRAM、4KB低電力SRAM
・ATSAMR3xJ16BT-I/7JX、64KBフラッシュ、8KビットSRAM、4KB低電力SRAM
・ATSAMR3xJ17BT-I/7JX、128KBフラッシュ、16KビットSRAM、8KB低電力SRAM
・ATSAMR3xJ18BT-I/7JX、256KBフラッシュ、32KビットSRAM、4KB低電力SRAM
図2:Microchip TechnologyのSAM R34/35 SiPモジュールは、低電力のArm Cortex-M0+プロセッサコア、Semtech SX1276トランシーバ、メモリ、および複数の周辺機器(SAM R35のUSBを除く)を提供します。(画像提供:Microchip Technology)
SiPモジュールは低電力アプリケーション向けに設計されており、ソフトウェアで選択可能な複数のオプションを利用することで、アクティビティが少ない期間の電力を低減させることができます。開発者は、SAM R34/35が2つの異なる性能レベルで動作するように設定できます。高性能レベル(PL2)では、デバイスコアが最高電圧で動作するため、デバイスのクロック速度も高速化します。低性能レベル(PL0)では動作周波数が抑えられ、コアの電圧のそれに応じるため、全体の消費電力も低減されます。
開発者は、同じ性能レベルでデバイスの電力モードをプログラムで切り替えることもできます。アイドルモードの消費電流は4.5mAに抑えられ、短期間のピーク需要でもTxで最大28mA、Rxで最大10.3mAという性能を誇ります。開発者は、このモジュールをスタンバイモードに設定して、アクティビティを維持するために特別にプログラムされたものを除き、すべてのクロックおよび機能をオフにすることにより、モジュールの消費電力を1.4μAまで低減できます。
さらに、このモジュールはSleepWalking動作をサポートします。これにより、選択した周辺機器がプロセッサから独立してイベントに応答して動作し、必要な場合にのみプロセッサをウェイクアップするようになります。このモジュールをスリープモードに設定して、消費電流を790nAに抑えることで、長時間の非アクティビティ期間に消費する電力を低減できます。Microchipは、内部SPIバスのハイインピーダンスが原因で準安定の状態になるため、デバイスをオフ状態にしないよう警告しています。
設計実装
設計実装
このモジュールには統合機能があるため、ハードウェアのインターフェース要件はシンプルです。開発者は、SAM R34/35 SiP用のデカップリングコンデンサ以外に、Skyworks Solutions のSKY13373などの信号スイッチ、および送信/受信RF信号経路を完成させるのに必要な受動部品を追加するだけで済みます(図3)。
図3:開発者がMicrochip TechnologyのSAM R34/35モジュールを使用する場合、RF信号経路や関連するRFスイッチ(Skyworks SolutionsのSKY13373など)に必要な部品に加えて、いくつかの追加部品が必要です。(画像提供:Microchip Technology)
Microchip TechnologyのDM320111 SAM R34 Xplained Pro評価キットを使用することにより、開発者はこれらのシンプルな追加ハードウェア要件でさえ考慮する必要がなくなります。開発者は、このキットを使用することで、すぐにSAM R34の評価を開始したり、ハードウェアリファレンス設計をカスタムデバイス用に拡張したりできます。
Microchipは、SAM R34/35モジュールファームウェアとサンプルソフトウェア(Atmel Studio 7統合開発環境で入手可能)を組み合わせることにより、ソフトウェア開発を高速化するのにも役立ちます。SAM R34/35 SiPは、統合されたSemtech SX1276 LoRaトランシーバおよびPHY上に構築されており、内蔵Microchip LoRaWAN Stack(MLS)により認証済みLoRaWAN実装を提供します(図4)。

図4:Microchip LoRaWAN Stack(MLS)は、一連のアプリケーションプログラミングインターフェース(API)により、MAC、PHY、固定記憶域、電源管理用のファームウェアサービスを開発者に提供します。(画像提供:Microchip Technology)
/* 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/35モジュールをスリープ状態に設定するのに使用するこのコードのような、主な設計パターンとデータ構造が示されています。(コード提供元:Microchip Technology)
図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)。
・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/35モジュールをスリープ状態に設定するのに使用するこのコードのような、主な設計パターンとデータ構造が示されています。(コード提供元: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/35モジュールを低電力状態に戻す方法を示しています。(コード提供元: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
}
.
.
.
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)/*********************************************************************//**
\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);
}
}
結論
LoRa技術は、電池駆動のIoTセンサ向けの長距離接続という新しいニーズに対処するのに最適です。ただし、今まではハードウェアやソフトウェアサブシステムの大部分の開発を開発者に委ねられていました。Microchip SAM R34/35 SiPモジュールは、ハードウェアとファームウェアを統合し、以前のアプローチでは避けることができなかった数多くの詳細な設計要件を効果的に排除します。
Microchip LoRaWANベースのハードウェアとソフトウェアと組み合わせて使用することにより、開発者は電池駆動のIoTデバイスや低電力ゲートウェイを迅速に実装できます。これにより、クラウド内や専用環境内のホストサーバとのセキュアな長距離通信を実現することができます。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。
このページのコンテンツはDigi-Key社より提供されています。
英文でのオリジナルのコンテンツはDigi-Keyサイトでご確認いただけます。
Digi-Key社の全製品は 1個からマルツオンラインで購入できます
ODM、OEM、EMSで定期購入や量産をご検討のお客様へ【価格交渉OK】
毎月一定額をご購入予定のお客様や量産部品としてご検討されているお客様には、マルツ特別価格にてDigi-Key社製品を供給いたします。
条件に応じて、マルツオンライン表示価格よりもお安い価格をご提示できる場合がございます。
是非一度、マルツエレックにお見積もりをご用命ください。






