Sigfox Shield for Arduinoをロシア（RC7）モードで使ってみる

新たな[Sigfox Operator](https://www.sigfox.com/en/coverage)がロシアに加わりました。[Energo](https://energo.capital/eng)という会社です。この会社のホームページを見る限りでは、ラトビアやリトアニアでサービスをしている[0G Baltics](http://0g-baltics.com/)という会社と関係がありそうです。
それはさておき、ロシアが加わったことにより、今までRC1～RC6の無線コンフィグレーションであったところに、RC7が加わりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172313/4ab3cb01-7a5a-21f0-0b40-40ce8ea6a8d4.png)

#RC7とは
[Sigfox Buildサイト](https://build.sigfox.com/sigfox-radio-configurations-rc)に各リージョンのRC定義が載っています。RC7は、欧州(RC1)の規格とほぼ同じで、上り周波数が欧州の868.130MHzに対して、868.8MHzと少しずれているだけです。
ですので、送信周波数を変更することができるATコマンドが通るRC1向け開発ボードがあれば、RC7環境をエミュレートすることができます。

#Sigfox Network Emulator (SNE)とは
Sigfox社が提供しているゲートウェイエミュレータです。USBドングルタイプのSDRで、送受の周波数も設定で変更できるため、各国RC向けのデバイステストにも使えるものとなっています。[こちら](https://qiita.com/ghibi/items/320b258a878fb5a84d66)に使用方法を載せています。

#RC7をSNEで試してみる
##準備
下記のものを準備してください。

- [Sigfox SDR Dongle](https://www.digikey.com/product-detail/en/sigfox/SDR-USB100M/1895-1000-ND/7930762): 上記SNE用のUSBドングルです。
- [Sigfox Shield for Arduino (UnaShield)](https://www.kccs-iot.jp/solution/product/device10/): RC3用ですが、出力がほぼ同じ（アンプが要らない）のでRC7にも対応可能です（おそらくLBT機能は残ると思いますが）
- Arduino Uno

![IMG_4070.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172313/f9772bed-ac4c-f45c-9154-f2339faa100a.jpeg)
RC7の確認にあたっては、日本国内で電波を発信することは違法になるので、電波が外に漏れないように注意してください。

##Sigfox Network Emulatorの設定
###RADIO設定
RC7はSigfox Network Emulatorのデフォルト設定にはないので、Radio Configurationで`Other`を選択した後、Uplink center frequency (Hz)を`868800000`、Downlink center frequency (Hz)を`869100000`、Uplink bit rateを`100`bpsに設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172313/4368addc-bbd0-35aa-f43d-ac29ba8eafea.png)

###DEVICES設定
メッセージを受信するデバイスのDevice IDをIdentifierに入力してください。Nameはお好きな名前を入れていただければ結構です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172313/c7e931bd-759c-7e34-3584-0828870e4725.png)

###CALLBACKS設定
もし、ご自身で立ち上げているアプリケーションサーバにメッセージを送りたければ、CALLBACK設定をしてください。（ここでは割愛します）

##UnaShieldからRC7でメッセージを送信する
そのまま動くサンプルスケッチは[こちら](https://github.com/sigfox/sigfox-emulator-russia/blob/master/hello-russia.ino)からダウンロードして使ってください。
UnaShieldに搭載するSigfoxモジュールのRX/TXピンに対して、SoftwareSerialでATコマンドを送り、周波数変更をしています。
使われているATコマンドは下記のとおりです。
`AT$IF=868800000` — RC7上り中心周波数
`AT$DR=869100000` — RC7下り中心周波数
`ATS410=1` — Public keyモードにする
`ATS302=15` — 送信出力設定
`AT$WR` — 設定保存
あとは、`AT$SF`コマンドでメッセージを送るだけです。念のため、ポイントとなるコード部分だけピックアップしておきます。

```sample.c
#include <SoftwareSerial.h>

#define rxPin 5
#define txPin 4

// set up a new serial port
SoftwareSerial Sigfox =  SoftwareSerial(rxPin, txPin);

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);

  if(DEBUG){
    Serial.begin(9600);
  }

  // open Wisol communication
  // define pin modes for tx, rx:
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  Sigfox.begin(9600);
  delay(100);
  
  sendCommand("AT$IF=868800000", "UL Frequency set: ");
  sendCommand("AT$DR=869100000", "DL Frequency set: ");
  sendCommand("ATS410=1" ,"Public key: ");
  sendCommand("ATS302=15" ,"Set output power to max: ");
  sendCommand("AT$WR", "Save config: ");
}
```

#メッセージ受信を確認する
無事、受信できた場合は、下図のように受信メッセージがSNEのMESSAGES画面上で確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172313/d3c54aae-dc63-2432-8218-cef7e3afc596.png)

[Sigfox Japan KCCS](https://qiita.com/organizations/sigfox)
[Twitter @ghibi](https://twitter.com/ghibi)