STMicroelectronics 社製 STM32L0 LoRa Discovery Kit (以下、Discovery Kit) のセットアップ方法を紹介します。SORACOM Air for LoRaWAN の全体像やユーザーコンソールの使いかたは、SORACOM Air for LoRaWAN を始める を参照してください。
操作を始める前に準備が必要です (クリックして確認してください)
(1) STM32L0 LoRa Discovery Kit を準備する
(2) ソラコム向け Discovery Kit パッケージのダウンロード URL を確認する
Discovery Kit に付属していた案内を参照してください。
準備完了ステップ 1: Discovery Kit の受け入れをする
Discovery Kit の利用開始にあたっては、ユーザーコンソールの「発注」画面で受け取り処理が必要です。ユーザーコンソールにログインし、受け取り確認ボタンをクリックしてください。
ユーザーコンソールで受け取り確認ボタンを押すと、Discovery Kit がアカウントに登録されます。受け取り確認ボタンが押されない場合、ソラコムから発送後 3 日で自動的にご発注時のアカウントに登録されます。LoRaWAN デバイスには基本料金はありませんが、サービスの利用状況に応じて料金が発生します。 LoRaWAN デバイスをご発注時とは別のアカウントに登録することはできません。
ステップ 2: Discovery Kit の開発環境を準備する
本製品は開発環境として Keil の MDK-ARM を利用します。 あらかじめ以下の要件を満たす PC に、必要なソフトウェアをインストールしてください。
PC 要件
- Windows 7/8/8.1/10 (Linux、MAC OS の PC は不可)
- CPU: ペンティアム互換
- RAM: 最低 1 GB
- HDD: 2 GB 以上の空き容量
- USB メモリ接続可 (セキュリティソフト無効)
- インストール時に管理者権限が必要です。
本資料では mbed による開発環境については割愛します。
ST-Link Utility のインストール
ST-Link Utility では、LoRa ディスカバリ・ボードに搭載された ST-LINK / V2-1 デバッガを利用して Flash メモリの書込み/消去/アップロード/ダウンロードが実行できます。また ST-LINK / V2-1 デバッガに必要な Windows デバイスドライバーもインストールされます。
STSW-LINK004 - STM32 ST-LINK utility - STMicroelectronics から ST-LINK Utility のインストーラをダウンロードしてインストールしてください。
STSW-LINK004 - STM32 ST-LINK utility - STMicroelectronics の「Get Software」に表示されている をクリックし、画面の指示に従って ST.com の MyST へログインすると、ダウンロードできます。
Keil MDK-ARM のインストール
以下の URL より Keil MDK-ARM をダウンロードしてインストールを行ってください。
Keil MDK-ARM v5.22 以降が必要です。古いバージョンの MDK-ARM をインストール済みの場合は、今回使用する MDK-ARM を古いバージョンの MDK-ARM とは、別のディレクトリにインストールすることを推奨します。
上記の Keil の Web サイトに記載されている STM32F0、STM32G0、STM32L0 用のシリアル番号 (*1) を使用して製品をアクティブにしてください。未アクティブ状態では、コンパイル可能サイズに制限があります。
- (*1) 製品のシリアル番号 (PSN) は上記のサイトの下部に表示されます。デバイスに付属していた案内に記載されていたシリアル番号の有効期限が切れていた場合も、上記のサイトに表示されたシリアル番号 (PSN) を利用してください。
アクティベーション方法:
インストールした MDK-ARM のアイコン上で右クリックし、
をクリックします。→ の順にクリックします。
「License Management」画面が表示されます。
をクリックします。
(下図 1) をクリックします。
続けて、製品登録を行います。
をクリックして、 に、シリアル番号 (PSN) を入力して連絡先情報を入力し、最後に をクリックします。
数分後にメールでライセンス ID コード (LIC) が登録したメールアドレス宛に送信されます。
送信された LIC を「License Management」画面の
(下図 2) に入力して、 (下図 3) をクリックします。
MDK-ARM デバイスパックのインストール
Keil MDK-ARM をインストール後、「Pack Installer」の実行についてポップアップが表示されます。Pack Installer を実行すると、必要なデバイスのサポートパックがインストールされ、MDK-ARM 上で特定のデバイスファミリ向けの開発がスタートできます。
図の右下にある青の更新パラメータ (%表記) が 100%になるのをお待ち頂いてから、該当のデバイスパックをインストールします。必ず更新パラメータが 100% まで到達しててから作業を行ってください。 100% に到達した後、画面左にある Device ベンダー一覧から STMicroelectronics を選択すると、右側の画面にインストール可能なパッケージが表示されます。
Pack Installer で、以下の 3 つのデバイスパックをインストールしてください。
- ARM.CMSIS
- Keil.STM32F0xx_DFP
- Keil.STM32L0xx_DFP
更新が完了しても該当の製品ファミリが表示されない場合、以下より Keil.STM32F0xx_DFP と Keil.STM32L0xx_DFP をダウンロードしてください。
https://www.keil.com/dd2/pack/
- Keil.STM32F0xx_DFP: STMicroelectronics STM32F0 Series Device Support and Examples
- Keil.STM32L0xx_DFP: STMicroelectronics STM32L0 Series Device Support and Examples
次図のように、Keil.STM32F0xx_DFP と Keil.STM32L0xx_DFP の右側のアイコンが緑色になり「Up to date」と表示されていれば無事デバイスパックがインストール完了です。
「Pack Installer」のポップアップを閉じても、MDK-ARM を起動後に表示される以下のアイコンをクリックすると、再度「Pack Installer」を表示させることができます。
MDK-ARM 日本向けコンパイルオプションの追加
MDK-ARM を起動し、"Options for Target" ボタンをクリックします。
"C/C++" タブをクリックし、Processor Symbols → Define 部分に以下の定義を追加します。
STM32L072xx,USE_B_L072Z_LRWAN1, USE_HAL_DRIVER,REGION_AS923, REGION_AS923_JAPAN, APPKEY_USE_TRNG
既に設定されている場合は、追加しないでください。
ターミナルソフトウェアのインストール
このページでは Tera Term を利用した解説を行います。下記サイトよりダウンロードしてインストールしてください。
https://teratermproject.github.io/
ソラコム向け Discovery Kit パッケージのダウンロード
STM32L0 LoRa Discovery Kit 製品に付属の資料に記載されている URL よりソラコム向け Discovery Kit パッケージをダウンロードしてください。このパッケージには、日本の周波数運用 (AS923) に対応した LoRa プロトコルスタックと複数のサンプルプログラムが含まれています。必ずこのパッケージを利用してください。ダウンロードした zip ファイルを任意のフォルダに解凍しておきます。
ソラコム向け Discovery Kit パッケージのダウンロード URL は、STM32L0 LoRa Discovery Kit 製品に付属の資料に記載されています。
ステップ 3: Discovery Kit をセットアップする
まず、Discovery Kit の SMA コネクタに付属のアンテナ を接続します。続いてデバッグ用の USB コネクタとお手持ちの PC を USB ケーブル (micro-B) で接続します。PC がボードを認識すると、コネクタの横の LED (LD5) が (点滅ではなく) 点灯します。以上でセットアップは完了です。
ステップ 4: Discovery Kit でデータを送信する
LoRaWAN ゲートウェイの準備
LoRa でデータを送信するには LoRaWAN ゲートウェイ (以下、GW) が必要です。ソラコムが提供する GW (所有 or 共有) を用意してください。SORACOM LoRa Space も利用できます。
サンプルプログラム
ステップ 2 でダウンロードしたパッケージを確認すると以下のフォルダにサンプルプログラムが保存されています。
..\Lora_soracom_rev1\Projects\Multi\Applications\LoRa
- AT Master: 外部の LoRa モデム (AT スレーブ) を AT コマンドで制御するための AT マスタのアプリケーション・サンプル
- AT Slave: UART で接続された外部ホスト (AT マスタ) からの AT コマンドで制御される LoRa モデムのサンプル
- HelloLED:LED の点滅を確認するアプリケーション・サンプル
- End_Node: LoRa ネットワークに接続するエンドノードの簡単なアプリケーション・サンプル
- PingPong: 2 つの LoRa エンドノードを使用した簡単なアプリケーションサンプル
試しにサンプルプログラムを使用して LoRa ネットワークへデータを送信してみましょう。
..\Lora_soracom_rev1\Projects\Multi\Applications\LoRa\End_Node\MDK-ARM\B-L072Z-LRWAN1
上記のフォルダに保存されている Lora.uvprojx
をダブルクリックすると Keil MDK ARM が起動します。
プロジェクトのビルド
- Project > Build Target または画面左上の Build アイコンをクリックします。
- プロジェクトをビルドすると、IDE はファイルの関連付けを行います。
- その後、main.c ファイルを展開し、Comissioning.h を開きます。
- Flash > Download または画面左上の Download アイコンをクリックします。以上で Build されたバイナリが Discovery Kit へ書き込まれます。
Tera Term の設定
Tera Term を使用してデバッグ出力を監視します。 次の設定を使用します。
- ポート:STLink が表示されている COM port を選択
- ボー・レート:115200 baud
- データ: 8 ビット
- パリティビット:無し
- ストップビット:1
- フロー制御:無し
以上で出力準備ができましたので、リセットボタン (黒のボタン、B2) を押して先ほど書き込んだプログラムを実行してください。
ターミナル上での出力確認
本プログラムでは LoRa ネットワークへの接続方式=OTAA になっていますので、リセット後の最初に JOIN 処理が行われます。
下記のように JOIN REQUEST 送出後、LoRa ネットワークへの接続が成功すると、JOINED というメッセージが表示されます。(ネットワーク、GW の通信状況によっては、接続が成功するまでに複数回 JOIN REQUEST を送信する場合があります。)
その後デバイスは定期的にサンプルデータを送信します。(Default では 10 秒間隔) Tx Done と表示されていてば、デバイスからは正常に LoRa パケットを送出できたことを意味します。Rx は LoRaWAN における RX1/Rx2 を意味します。特に下りのデータがない場合は Rx はそのまま満了するため rxTimeout が表示され、下りの受信 window はクローズされます。本サンプルプログラム (EndNode) ではセンサ非搭載の場合は null のセンサデータ (0x00000000000000fe) が送信されます。
SORACOM ユーザーコンソール (Harvest) 上での受信確認
では実際に送信されたデータが GW を経由して受信できているか確認してみましょう。
LoRaWAN デバイスの設定をします。
詳しくは、ステップ 1: LoRaWAN デバイスの設定をする を参照してください。
SORACOM Harvest Data を使って受信確認をします。
詳しくは、ステップ 2: SORACOM Harvest Data を使って疎通確認する を参照してください。
正常に受信されていれば下記のように Harvest Data にデバイスから送信されたデータが表示されます。
以上でサンプルプログラムによるデータ送信確認は終了です。
送信間隔の変更
先ほど Build した Project の main.c を開いてみましょう。
87 行目の #define APP_TX_DUTYCYCLE 10000
は送信間隔が 1000ms (10s) であることを意味しています。それでは間隔を 15s に変更するため、#define APP_TX_DUTYCYCLE 15000
に変更して再度 Builld → Download → リセットしてみましょう。今度は送信間隔が 15s 間隔に変更されていることが確認できます。
ステップ 5: Discovery Kit でデータを受信する
データの受信については以下のガイドを参照して、ユーザーコンソール (または SORACOM API) でダウンリンクデータの設定を行ってください。
応用編 3:ダウンリンク通信機能を使ってデバイスでデータを受信する
ユーザーコンソールでダウンリンクデータの設定を行うと、設定されたデータはソラコム Network Server 内にセットされ、次の Uplink 通信が来るのを待ちます。以下のように「ユーザーコンソールで送信したデータ」を Rx window で受信できていれば成功です。
応用編: カスタマイズ
LoRaWAN に関連するパラメータの変更方法を紹介します。
Build された Project に保存されている Comissioning.h
、hw_conf.h
、RegionAS923.h
を修正すると、各種設定を変更できます。
各ファイルの変更は MDK-ARM で行うことを強く推奨します。(MDK-ARM での再読み込み操作や、文法チェックといった手間とミスを軽減するためです。)
ファイル名 | MDK-ARM 上のパス |
---|---|
Comissioning.h | Project: Lora → mlm32l07x01 → Projects/End_Node 等 → main.c |
hw_conf.h | Project: Lora → mlm32l07x01 → Projects/End_Node 等 → main.c |
RegionAS923.h | Project: Lora → mlm32l07x01 → Middlewares/Lora/Mac/Regions |
下記のように main.c 等から Comissioning.h がツリーとして構成されていない場合は、一度「Project → Build」を行い、依存関係を解決するようにしてください。
パラメータの内容は以下のとおりです。
- Commisioning.h 内の DevEUI/AppEUI/Appkey のコードについては一切の修正を加えないでください。別の値に書き換えてしまうと二度とソラコム LoRaWAN ネットワークに JOIN できなくなります。その他パラメータについても EIRP や LBT など、変更内容によっては電波法違反になる可能性があります。パラメータ変更は、無線有識者が行ってください。
- ST-Link Utility 他による「Erase Chip」といった初期化処理は行わないでください。当社より出荷した製品には先の注意書きにも記載した DevEUI 等のパラメータがすでに書き込まれた状態で出荷されており、初期化処理などで消去してしまうとソラコム LoRaWAN ネットワークに JOIN するための情報が失われてしまうためです。(ダウンロード等の転送処理で消去されることはありませんので、通常の利用においては問題とはなりえませんのでご安心してお使いください。)
- 本作業によるいかなる不具合、生じる不利益について当社では一切の責任を負いません。
トラブルシュート
「ダウンロード」で失敗する
コンパイル後、バイナリをボードへ転送する「ダウンロード」を実行した際に、下記のように失敗する場合があります。
表示が若干違うかもしれませんが、ダウンロードに失敗していることには変わりありません。
対策
これはダウンロードに使用するツールが違っているために発生します。ダウンロードには ST-Link Debugger を使用するに指定します。
手順は以下のとおりです。
MDK-ARM の "Options for Target" ボタンで表示される設定画面から「Debug」タブの「Use」で ST-Link Debugger を選択し、その後「Settings」ボタンをクリックします。
次の画面では「Debug Adapter」が ST-LINK/V2-1 になっていることと、「SW Device」の SWDIO に何かしらのデバイス名が表示されていれば正常です。認識できていない場合は "No ST-LINK detected" と表示されます。
STM32L0 LoRa Discovery Kit を接続しているのに "No ST-LINK detected" と表示されてしまう場合は「Target Com」を SW から JTAG に変更し、再度 SW に戻して再認識させてみてください。
以上の手順で、SWDIO にデバイスが表示されれば成功していますので、OK ボタンを押して設定画面を閉じ、改めてダウンロードを行ってください。