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


前回記事①からの続きです。
今回は、「②: Sigfoxネットワーク通信の動作確認」をしてみます。

[①：セットアップ](https://qiita.com/ykawano/private/90fe568b64f6c7a11c8a)
②：Sigfoxネットワーク通信の動作確認
[③：クラウド利用のための設定例](https://qiita.com/ykawano/private/6d11d202cff5e995e45a)

![overview_2_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/0998e709-5197-c59a-4ba9-b80ed3dda549.jpeg)





# 6．動作確認


ネットワークの受信側（Sigfoxクラウド）の動作確認の前に、まずはデモ･キット単体の動作確認をします。２つのアンテナをそれぞれ接続し、GNSS用アンテナについてはできれば屋外、室内であれば少なくとも空の見える窓際に置いてください。
USBシリアル･インタフェース経由で確認するため、Teratermなどのターミナル･エミュレータ･ツールを事前にパソコンへインストールしてください。ここではTeratermを使います。
ダウンロードはこちらから:[Teraterm](https://ttssh2.osdn.jp/)


![icon.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/973e1add-e0cd-e6ae-dddd-ea8ce3500027.jpeg)


インストールが完了したら、デモ･キットをパソコンとUSB接続します。
Teraterm起動後、新規接続から「シリアル･ポート」を選択し、STM32 Nucleoボードに該当するCOMポートを選択します。STMicroelectronics STLink Virtual COM･･･と表示されているポートです。
その後、OKをクリック。


![teraterm_newconnection.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/ae2115d3-f24e-6451-1193-5c22e5f7db48.jpeg)


セットアップ→シリアル・ポートから、以下のように設定します。
Baud rate＝115200, Date=8bit, Parity=None, Stop bit=1

![teraterm_serialport.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/378f61e9-e088-8852-d488-ac64474c220e.jpeg)


STM32 Nucleoボードのリセットボタン（黒ボタン）を押して、以下のような出力が表示されればOKです。

![teraterm_resetStart_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/763e37e8-a922-6478-e8d7-00ceaa4b61bd.jpeg)



デフォルトでは、以下のイベント発生検出によりデータをSigfoxクラウドに送信します。
データ送信のトリガとなるイベント：

1．振動（キット本体を揺らす）
2．ユーザ・ボタン（青ボタンをプッシュ）

Sigfoxクラウドに送信されるデータは以下2種類です。1イベントにより送信するデータは1種類。イベント発生ごとに、2種類のデータを交互に送信します。

データ種類：
1．温度 / 湿度 / 大気圧データ（7Byte）
2．GNSSデータ（9Byte）

STM32 Nucleoボードのユーザ・ボタン（青ボタン）を押して以下のようなメッセージが出力されればOKです。
ボタンを押すごとに、温度 / 湿度 / 大気圧データとGNSSデータが交互に送信されるのが確認できます。


![teraterm_buttonx4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/e2dcc164-218b-e628-ff04-07057b1c7655.jpeg)


以上で、デモ・キット側からのデータ送信動作は確認できました。


## 送信時のデータ・フォーマットについて


このデモでは、送信データ（アップリンク・データ）について以下のような2種類のデータ・フォーマットがあります。送信順番は左側の「0」から。Sigfox上限の12 Byte内では全てのデータを1回で送れないため、センサ・データ用とGNSSデータ用に分けられています。データ種類の判別は総Byte数を参照してください。最後の1 Byteはどちらの場合でも共通のトリガ･マスク情報です。何のイベントに対してこのデータを送信させているかの判別に使えます。

### データ・フォーマット　2種

#### 7Byteデータ：MEMSセンサデータ（温度／湿度／大気圧、各2 Byte）

送信データ例（下段）： 01cf010727bc02

|0             |1          |2         |3         |4          |5         |6       |
|:------------:|:---------:|:--------:|:--------:|:---------:|:--------:|:------:|
| 湿度上位Byte |湿度下位Byte|温度上位Byte|湿度下位Byte|大気圧上位Byte|大気圧下位Byte|トリガーマスク     |
| 01        | cf        |01       |07       |27        |bc       |02       |

"01cf" --> 0x01CF = 463　→　46.3％
"0107" --> 0x0107 = 263　→　26.3℃
"27bc" --> 0x27BC = 10172　→　1017.2h
"02" --> 00000010 → ユーザボタン検出

#### 9Byteデータ：GNSS位置データ（経度／緯度、各4 Byte）

送信データ例（下段）： 021b16e0084fcff010

|0             |1          |2         |3         |4          |5         |6       |7         |8       |
|:------------:|:---------:|:--------:|:--------:|:---------:|:--------:|:------:|:--------:|:------:|
| 緯度Byte (MSByte)|緯度Byte|緯度Byte|緯度Byte (LSByte)|経度Byte (MSByte)|経度Byte|経度Byte   |経度Byte (LSByte)|トリガーマスク  |
| 02     |1b     |16     |e0      |08     |4f       |cf      |f0  | 10|

"021b16e0" -->  0x21b16e0 = 35,329,760　→　35.32976
"084fcff0" -->  0x84fcff0 = 139,448,304　→　139.448304
"10" --> 00010000 → ウェイクアップ（振動検出）

#### トリガーマスク（各送信最後の１Byte）：
１：イベント検出
０：無し

|bit7     |bit6     |bit5     |bit4      |bit3       |bit2      |bit1    |bit0    |
|:-------:|:-------:|:-------:|:--------:|:---------:|:--------:|:------:|:------:|
|温度     |大気圧    |湿度     |ウェイクアップ |ティルト |方向  |ユーザボタン |タイマ|

# 7．Sigfoxクラウドでの受信データ確認

次に、Sigfoxクラウドにデータが送信されているかどうか確認してみましょう。
[SIgfoxクラウド](https://backend.sigfox.com/auth/login)にログインし、**DEVICE**タグページから該当デバイスIDをクリック。
その後、左メニューから**MESSAGE**を開きます。
Data/Decodingの列にさきほど送信したデータ（Sending...の後の7Byteもしくは9Byteの16進数データ）が表示されていればOKです。


![sigfox_device_message.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/69fc22e3-b5a3-2852-31ac-eaf42b64f74e.jpeg)


以上で、正しく温度／湿度／大気圧および、GNSS位置情報が送信されたのが確認できました。




まだまだ長くなりそうなので、つづきは次回へ。
[Sigfoxを使った、温湿度・大気圧とGNSS位置情報を取得できるIoTキットを試してみる③](https://qiita.com/ykawano/private/6d11d202cff5e995e45a)