Monarch DevKit UnaMKRをArduinoモードで使う

技術情報

先にこちら(Monarch対応開発キット - UnaMKR -)をお読みください。
また1年間無償回線の契約方法がわからない場合は、こちら(Sigfox Devkit(開発キット)を1年間の無償回線で利用する)を見てください。

ここでは、UnaBiz社のMonarch対応開発キットUnaMKRの動作モードのひとつであるArduinoモードの使い方を説明します。
UnaMKRは、Arduino MKRZEROとピン互換があり、MKRZEROからの電源供給、13/14ピンのUARTで内部通信モジュールの制御を行っています。

ファームウェアの更新(必要に応じ)

UnaMKRの工場出荷時は、Arduinoモードになっていますが、Embedモードに切り替えて使っていた場合は、Arduinoモードに変更するためのファームウェア更新が必要です。
ファームウェアをArduinoモード(ないしModemモード)に切り替える方法を説明します。

  1. ST社のBlueNRG Flasher utilityをダウンロードし、インストールします。
  2. UnaMKRの電源を切ります。(全てのUSBケーブル、電源ケーブルが外されていることを確認します)
  3. UnaMKRがArduino MKRZEROに接続されていないことを確認します。
  4. 各ジャンパ(Jumpers)を下記の通り切り替えます。このJ11は電源取得の変更(USB or Arduino PIN)、J6とJ7はUARTのTX/RXの変更(USB or Arduino PIN)、J10はファームウェアの書き込み許可を与えるものです
      - J10: ON
      - J11: RIGHT
      - J7: RIGHT
      - J6: RIGHT
  5. UnaMKR用のUSBドライバ(CP210x USB to UART Bridge VCP Drivers)をダウンロードし、インストールします。(既にインストール済みの場合は必要ありません)
  6. UnaMKRとPCをMicroUSBケーブルで接続します。(UnaMKRが立ち上がります)
  7. UnaBiz社GitHubのfirmwareフォルダをダウンロードしておきます。
  8. firmwareフォルダ内の"burnFw.bat"を実行し、該当ファームウェア"Arduino_Modem_v000x.bin"を選択することにより、UnaMKRのファームウェアが書き変わります。

BATファイルの注意事項

上記1.でインストールしたBlueNRG Flasher utilityをburnFW.batから呼び出すことになりますが、2020年8月時点でのBlueNRG Flasher utilityのバージョンがburnFW.bat内に記載されているものと異なります。
BATファイルの"# Start to Program Application"のところで、BlueNRG Flasher Lancuer.exeがご自身の環境とっていない場合は書き換えてください。下記は、現時点での最新版(BlueNRG-X_Flasher_Launcher.exe)に合わせています。

burnFW.bat
IF EXIST "BlueNRG-X_Flasher_Launcher.exe" (
  copy "%file%" UnaMKR.bin
  echo on
  BlueNRG-X_Flasher_Launcher.exe flash -address 0x10040000 -f "UnaMKR.bin" -all -UART -verify -l
) ELSE IF EXIST ".\flasher\BlueNRG-X_Flasher_Launcher.exe" ( copy "%file%" UnaMKR.bin echo on .\flasher\BlueNRG-X_Flasher_Launcher.exe flash -address 0x10040000 -f "UnaMKR.bin" -all -UART -verify -l
) ELSE IF EXIST "%userprofile%\ST\BlueNRG-X Flasher Utility 4.0.0\Application\BlueNRG-X_Flasher_Launcher.exe" ( cd "%userprofile%\ST\BlueNRG-X Flasher Utility 4.0.0\Application" copy "%file%" UnaMKR.bin echo on BlueNRG-X_Flasher_Launcher.exe flash -address 0x10040000 -f "UnaMKR.bin" -all -UART -verify -l
)

UnaMKRをArduinoモードで使う

ジャンパ設定

Arduinoモードでは、数の通り、J11:LEFT, J7:LEFT, J6:LEFT, J10:OFFにジャンパします。

technical0827-01.png

Arduino MKRZEROと接続

UnaMKRにSigfox用アンテナ(必要な場合はBLE用アンテナ)を接続し、Arduino MKRZEROと接続します。下図のような形になるはずです。

technical0824-02.jpeg

その後、PCとマイクロUSBケーブルで接続すると、緑色LEDが点灯します。(もし、LEDが点灯しない場合は、ジャンパ接続等を確認してください。)

Arduino IDE設定

[ツール]_[ボード]メニューから、Arduino MKRZEROを選択します。

technical0827-03.png

シリアルポートはMKRZERO接続時に割り当てられたCOM番号を指定します。

UnaMKR用ライブラリを使用する

  1. GitHub (UnaBiz/UnaMKR)にアクセスし、[Code]_[Download ZIP]でライブラリをダウンロードします。
  2. Arduino IDEの[スケッチ][ライブラリをインクルード][.ZIP形式のライブラリをインストール...]メニューをクリック
  3. ダウンロードしたファイルを選択
  4. [ファイル]_[スケッチ例]にUnaMKRが追加されていることが確認できます。

内蔵センサ用ライブラリを使用する

UnaMKRには、BOSCHの温湿度、気圧、ガスセンサBME680とFloraの加速度、地磁気センサLSM303が内蔵されており、下記ライブラリを使用することで、簡単にセンサデータを扱うことができます。

サンプルスケッチを動かす

[ファイル][スケッチ例][UnaMKR]からDemo_Sigfox-AllSensorsを選択します。
そのまま、コンパイル及びマイコンボードに書き込んでも動きますが、UnaMKRのZone(Radio Configuration)は工場出荷時には日本向けになっていません。void setup()内にmy_mkr.setZone(3);を追加し、RC3に設定してからSigfoxメッセージを送信するようにすべきです。

スケッチ実行後、UnaMKRのボタンを押すと、各センサからデータを読み取り、Sigfoxメッセージを送信することを確認できます。

Interrupt detected: Button 
AT$ZONE?
3
  * RC = 3
  * Temperature = 30.60 *C
  * Humidity = 63.35 %
  * Pressure = 1011.64 hPa
  * Air Quality = 0.00 kOhms
  * Acc (X,Y,Z)[mg] = (  -58, -299, 1131)
  * Mag (X,Y,Z)[mGauss] = ( -103,  -66, -498)
  * Visible: 383
  * Infrared: 104
  * Reed Switch: 0

[Payload 0] 058FC6ED546B130BF47000AD
[Payload 1] 068FF6FFAFCF2318BFA0301C
[Payload 2] 033278443000083017F000E1
[Payload 3] 0830068000000000000000E7

SigFox uplink... 
AT$SF=058FC6ED546B130BF47000AD,0
OK
AT$SF=068FF6FFAFCF2318BFA0301C,0
OK
AT$SF=033278443000083017F000E1,0
OK
AT$SF=0830068000000000000000E7,0
OK
AT$SLEEP
OK
Done

他にもリードスイッチの切り替えやタイマによる送信トリガもあるようですので、お試しください。