SMK製Sigfox Breakout Board (EM-WF931-02F) を使ってみる

技術情報

SMKからSigfox Breakout Board (EM-WF931-02F)がリリースされています。

20191210-technical-01.jpg

WF931というSigfoxモジュールをベースとした評価ボードで、SONYのSPRESENSEとピン互換があります。こちらにSPRESENSE Arduino用のサンプルコードもあるので、SPRESENSEをお持ちの人は簡単に試してみることができるでしょう。
ここでは、SPRESENSEを持っていない方(でも、Arduinoならあるよ)向けの使用方法をまとめます。

Devkitとしてデバイスを登録する

EM-WF931-02FもDevkitとして登録されていますので、こちらを参考に登録してもらえれば、1年間の無償回線込みでお使いいただけます。

ハードウェア構成

EM-WF931-02Fは、WF931モジュールとチップアンテナが内蔵されていますが、半田ジャンパーで外部アンテナに切り替えることも可能です。
外観とピン配置は下図のようになっており、まず簡単に通信を確認するだけであれば、CN1_1(GND)とCN2_3(VDD)で電源供給、CN1_2(RX0)とCN1_3(TX0)でATコマンド制御、あとは、CN1_6(Reset)ピンに対して、起動時にリセットをかけた方が良いと思います。

20191210-technical-02.jpg

Arduinoと接続

手持ちのArduino(ここではArduino Uno)と下図のように配線します。

20191210-technical-03.jpg

参考に配線例を下記に示します。

EM-WF931-02FArduino Uno
CN1_1 GND
CN1_2(RX0) D9
CN1_3(TX0) D8
CN1_6(RESET) D2
CN2_3(VDD) V3.3

Arduinoスケッチサンプル

上記配線にあわせたサンプルスケッチは下記の通りとなります。Software Serialのポートやリセット用のPIN(PIN_RESET)に関しては、ご自身の配線にあわせて変更していただければ結構です。
このサンプルでは、デバイスIDとPACコードを表示、その後、メッセージをSigfoxクラウドに送信する例となっています。

WF931.c
#include  SoftwareSerial mySerial(8, 9); // RX, TX
#define PIN_RESET 2 
void setup() {
  Serial.begin(9600); // PC-Arduino間のシリアル
  while (!Serial) {;}
  mySerial.begin(9600); // ソフトウェアシリアル(Arduino-EM-WF931-02F間)

  // Configure reset pin
  pinMode(PIN_RESET, OUTPUT);

  // Do reset
  digitalWrite(PIN_RESET, LOW);
  delay(1000);

  // Release reset
  digitalWrite(PIN_RESET, HIGH);
  delay(1000);
  result();

  atcommand("AT$ID?");
  atcommand("AT$PAC?");
  atcommand("AT$SF=0123456789ABCDEF");
}

void atcommand(String cmd){
  mySerial.write("0x00");
  delay(50);
  Serial.println(">" + cmd);
  mySerial.println(cmd);
  delay(100);
  result();
}

void result(){
  char c;
  if (mySerial.available()) {
    do{
      c = mySerial.read();
      Serial.write(c);
      if(c==0xFF){
        Serial.println("Error!");
        return;
      }
    }while(c!='\r');
    // for LF
    Serial.write(mySerial.read());
  }
}

void loop() {
  if (mySerial.available()) Serial.write(mySerial.read());
  if (Serial.available()) mySerial.write(Serial.read());
}

ATコマンドを投げる前に"0x00"を送ってあげるのが、この評価ボードのマナーなのかと思います。(定かではありませんが、0x00なしでは、ATコマンドを受け付けませんでした。)

ATコマンド例

EM-WF931-02FもSigfoxの標準的なATコマンドを受け付けるようですが、AT?コマンドは何も返してきませんでした。

ATコマンド内容
AT$ID? デバイスIDの取得
AT$PAC? PACコードの取得
AT$SB バイトメッセージ送信コマンド
AT$SF メッセージ送信コマンド

通信に成功すれば、SigfoxクラウドのDevice-Messages画面で受信メッセージを確認することができます。

EM-WF931-02Fの入手方法

フルタカパーツオンラインで取り扱いがあるようです。