温湿度・大気圧とGNSS位置情報をSigfox通信で取得できるIoTキットを試してみた①

STマイクロエレクトロニクスの汎用32bitマイコン開発ボード[「STM32 Nucleoボード」](https://www.st.com/ja/ecosystems/stm32-nucleo.html#products)と、温湿度・大気圧 ＋ GNSS（*）位置情報検出用ソフトウェア[「FP-ATR-SIGFOX1」](https://www.st.com/ja/embedded-software/fp-atr-sigfox1.html)を使い、Sigfox通信でデータ取得できるか試してみます。
（*Global Navigation Satellite System : 全地球航法衛星システム）

Sigfoxにも位置情報サービスはありますが、GNSSではより高精度の位置情報を取得可能です。
~~FP-ATR-SIGFOX1はお試し用のソフトウェアなので、ハードウェア以外（ソフトウェアおよび登録、通信費）はすべて無料で使えます~~。DevKit（開発キット）向けの1年間の無償回線利用サービスは2022年に終了しています。
最終的には、取得した温度などのセンサ･データとGNSS位置情報をクラウドに上げるところまで試してみます。


全体の構成は以下の通りです。
本記事では、下記「①: セットアップ」について、組立およびソフトウェアの設定（＋Sigfoxネットワークの初期設定）をメインに説明します。
①：セットアップ
[②：Sigfoxネットワーク通信の動作確認](https://qiita.com/ykawano/private/815ed033c09874e771c2)
[③：クラウド利用のための設定例](https://qiita.com/ykawano/private/6d11d202cff5e995e45a)
![overview_1_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/787aa4fc-2ef2-9344-5e50-91d93f383340.jpeg)







# 1．ハードウェアの準備

【用意するもの】

①　STM32 Nucleoボード：[NUCLEO-L073RZ](https://www.st.com/ja/evaluation-tools/nucleo-l073rz.html)
②　Sub-GHz トランシーバIC [「S2-LP」](https://www.st.com/content/st_com/ja/products/wireless-transceivers-mcus-and-modules/sub-1ghz-rf/s2-lp.html#design-scroll)搭載のSTM32 Nucleo機能拡張ボード：[X-NUCLEO-S2868A1](https://www.st.com/ja/ecosystems/x-nucleo-s2868a1.html) もしくは [X-NUCLEO-S2868A2](https://www.st.com/ja/ecosystems/x-nucleo-s2868a2.html)（\*1）
③　GNSS*測位ICモジュール搭載のNucleo機能拡張ボード：[X-NUCLEO-GNSS1A1](https://www.st.com/ja/ecosystems/x-nucleo-gnss1a1.html#resource)
④　MEMSセンサを搭載したNucleo拡張ボード：[X-NUCLEO-IKS01A2](https://www.st.com/ja/ecosystems/x-nucleo-iks01a2.html) or [X-NUCLEO-IKS01A3](https://www.st.com/ja/ecosystems/x-nucleo-iks01a3.html)
⑤　パソコン（Windows10）
⑥　USBケーブル（USB-Mini）

4枚のボードおよび、パソコンとUSBケーブルを用意します。
\*1：Sigfoxネットワークを利用するためには、X-NUCLEO-S2868Axを事前に「**Sigfoxデバイス登録**」する必要があります。登録方法は[こちらの記事](https://qiita.com/ykawano/items/5705f2f55eb106ea8ad1)で紹介していますが、少し時間がかかります。なお、既に登録設定済みのボードがあればそのまま流用可能です。



![101_board_all.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/b60b6edd-5ddd-6b8a-4297-e09e409cbf55.png)




オプションとしてBluetooth® Low Energyモジュール搭載のSTM32 X-Nucleo機能拡張ボード[(X-NUCLEO-IDB05A1)](https://www.st.com/ja/ecosystems/x-nucleo-idb05a1.html)を追加することで、動作中のセンサ・スレッショルドを変更することもできますが、この記事では取り上げません。傾き検知やオリエンテーション（方向検知）をトリガにしたデータ送信ができるようになります。

## 各種ボードの設定について
### ジャンパ設定

上記③以外はデフォルト設定で使用するため、過去の使用で設定変更されている場合は、デフォルト設定に戻してください。 
③X-NUCLEO-GNSS1A1については、以下の通りジャンパ変更が必要です。

ジャンパ・オフ（オープン）: J3, J5, J6, J7, J8, J11, J12, J13
ジャンパ・オン（クローズ）: J2, J4, J9, J10, J14, J15

![gnssBoard_jumper_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/189861e7-9631-05e9-10f9-f0263bb02f96.jpeg)


なお、デフォルト設定から変更する場合、以下5か所のジャンパ変更操作でOKです。
J3外す→J2へ移動（UART_RXをD1/RXピンへ（STM32_PA2））
J13外す→J10へ移動（SYS_RESETn→D9/PWMピンへ（STM32_PC7））
J11外す（I2C_CLOCKを非使用（D15/SCLピンを空ける））
J12外す（I2C_CLOCKを非使用（D14/SDAピンを空ける））
J6外す（PSS非使用（D6/PWMピンを空ける））


### 接続構成

STM32マイコンと各機能拡張ボードの主要ICとの接続インタフェースは下図のようになります。

![block_fp-atr-sigfox1_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/2f44d5dd-fa36-fad5-47d8-478b5abc1b1d.jpeg)



# 2．ソフトウェアの準備
## STM32CubeProgrammerのインストール
（既にインストール済みであればスキップしてください）

初めてパソコンでSTM32 Nucleoボードを使用する場合、STM32CubeProgrammer（旧ツール：ST Link Utility）をインストールしてCOMポート･ドライバなどを入手します（この記事ではSTM32CubeProgrammerは使用しませんが、ドライバなどが必要になります）。
このツールはSTM32マイコンにファームウェア・プログラムを書き込む際に必要です。OSプラットフォームによって複数用意されているので、該当するものを選択してください。

ダウンロードはこちらから: [STM32CubeProgrammer](https://www.st.com/ja/development-tools/stm32cubeprog.html)
![stweb_stm32cubeprog.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/05caa8ba-e1b7-074e-f692-c00659b8c109.jpeg)

ダウンロード･ファイルを解凍した後は、実行ファイルを起動して案内にしたがってインストール。



## 動作用ソフトウェアの入手
### デモ用プログラム・ファイルのダウンロード
STのウェブサイトからソフトウェア･ファイルをダウンロードします。

ダウンロードはこちらから: [FP-ATR-SIGFOX1](https://www.st.com/ja/embedded-software/fp-atr-sigfox1.html)
![stweb_fp-atr-sigfox1_download.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/a331c8fd-181c-ca0a-00e8-4d87f6dd9600.jpeg)




### ファイルの確認

ダウンロードしたファイルを解凍すると、そのまま統合開発環境用の作業フォルダができあがります。**Projects**フォルダから階層を下っていくと、**binary**フォルダ内に今回使用するデモ用プログラム･ファイル（バイナリ・ファイル）が用意されています。手持ちのボード構成に応じて、使用するSTM32用のバイナリ・ファイルを確認しましょう。

保管場所例（NUCLEO-L073RZ）：
Drive:...\STM32CubeFunctionPack_SIGFOX1_Vx.x.x\Projects\STM32L073RZ-Nucleo\Applications\Sigfox\AssetTracker\Binary

使用するバイナリ・ファイル（ハードウェア構成違いによりいくつか用意）

![files_bin_L0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/1007d7b9-d7f6-da0c-506a-afb05b26ce80.jpeg)


### パソコンに接続して書き込み・・・でもその前に。

次に、STM32 NucleoボードのSTM32マイコンにソフトウェアを書き込む流れとなりますが、X-NUCLEO-S2868Ax（Sigfoxボード）を初めて使う場合、次の「３．Sigfoxネットワークの設定・登録」に進んでください（すでに設定が完了している場合は、スキップして「４．接続」へ）。

# 3．Sigfoxネットワークの設定・登録

Sigfoxネットワークを利用するためには、**ボード毎に発行されるID/PAC（登録ボードのID番号 / 認証コード）**を入手してSigfoxクラウドに登録する必要があります。おそらくこの作業が一番面倒ですが、以下の記事を参考にしてID/PACを取得・セッティングしてください。すでに設定済みのX-NUCLEO-S2868Axボードがあれば、そのまま流用可能です。

1. [STM32マイコン開発ボードを使った、Sigfox評価環境を試してみた（１／２）](https://qiita.com/ykawano/items/5705f2f55eb106ea8ad1)
→記事内すべての作業が必要
2. [STM32マイコン開発ボードを使った、Sigfox評価環境を試してみた（２／２）](https://qiita.com/ykawano/items/b2ab9e1afccc26421cc2)
→Sigfox.buyの完了まで（～４．Sigfoxデバイス登録まで）での作業が必要

![sigfox_buy.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/709247e8-1a13-3cba-dbc3-2df7a6f053b4.jpeg)


YouTube video: [Sigfox ST side registration](https://www.youtube.com/watch?v=JD6UE7ekRxE)

登録完了後、Sigfoxクラウド側で正しく見えていることが確認できたら次に進みます。

# 4．接続
## ファームウェアの書き込み

まず、「動作用ソフトウェアの入手」でダウンロード＆解凍したFP-ATR-SIGFOX1の作業フォルダを開いておきます。パソコンにSTM32 NucleoボードをUSB接続すると、ドライバが正常であれば「NODE_XXXX」といったデバイスが認識されるはずです。
最初に確認した、書き込みたいファイル（バイナリ。*.bin）を対象のSTM32 Nucleoボードへドラッグ & ドロップ。ここでは「NUCLEO_L0_ALL_IKS01A2.bin」というプログラム･ファイルを「NODE_L073RZ」へコピーするだけでOKです。


保管場所例（NUCLEO-L073RZ）：
Drive:\...\STM32CubeFunctionPack_SIGFOX1_Vx.x.x\Projects\STM32L073RZ-Nucleo\Applications\Sigfox\AssetTracker\Binary

![filecopy_sigfox1FW_073.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/372c2194-0a32-1c3c-8e4a-f22649f378f1.jpeg)




## 組み立て

下図のように４つのボードを接続します（Arduinoコネクタどうしで接続）。STM32 Nucleoボードを一番下側にして、残りの拡張ボード（X-NUCLEO）を上に積み上げていくイメージです。拡張ボードの接続順番は特に気にしなくても問題ありません。

![boards_setup_073.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/a79b3c86-af8a-e5b1-6877-b8eb2bc66c88.jpeg)




## ボードをパソコンへ接続＆アンテナを接続

STM32 NucleoボードのUSBコネクタ（CN1）とパソコンをUSB-miniケーブルで接続します。
GNSSアンテナもここで接続して下さい。

![board_antenna_073.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/82fb1a4e-0558-83d0-20f1-8046c2582ca4.jpeg)



以上でセットアップ完了です。


長くなりましたのでつづきは次回へ。
[温湿度・大気圧とGNSS位置情報をSigfox通信で取得できるIoTキットを試してみた②](https://qiita.com/ykawano/private/815ed033c09874e771c2)