LoginSignup
3
3

More than 5 years have passed since last update.

Arduino M0ベースのSigfoxモジュールを触ってみた

Last updated at Posted at 2018-06-02

RC3(日本)対応のArduino + Sigfoxボードとして台湾のMight Electric社がリリースしたMTDuinoを触ってみました。

MTDuino-SFM2CWW001

MTDuinoは、Atmel SAMD21 32-bit Cortex-M0コアとSigfoxモジュールを搭載したArduinoボードで、大きさは、67mm x 25mmとなっています。カタログはこちら(GitHub)からダウンロードしてください。対応周波数に920MHz帯は書かれていませんが、あります。(RC3を指定してもらうと良いかと)
IMG_2272.jpg
microUSB端子が付いていますので、こちらからPCと接続して開発という感じになります。

Arduino IDEの設定

Arduino IDEのボードマネージャでArduino SAMD Boards(32-bits ARM Cortex-M0+)をインストールしてください。
image.png

MTDuinoとPCを接続、Arduino IDEで
- ボード:Arduino M0 Pro (Native USB Port)
- シリアルポート: COMx (Arduino M0 Pro (Native USB Port))
- 書込装置: Atmel-ICE
と設定します。
arduino_mtduino.png

Arduinoプログラミング

ユーザーマニュアル及びサンプルコードはMight社がGitHubにアップしていますので、こちら(https://github.com/Mighty-Net/MTDuino)からダウンロードして使ってもらえばよいですが、そのままではSigfoxメッセージ送信コマンドでエラーになってしまう可能性があるので、その場合は下記コードをお試しください。

SIGFOX_Send_initial_RF.ino
#include <Arduino.h>                  // required before wiring_private.h
#include "wiring_private.h"           // pinPeripheral() function
int LED_POW=3;                        // sigfox status LED pin D3
int RF_PWEN=5;                        // sigfox power control pin D5

unsigned long previousMillis = 0;    // Time Counter
const long interval = 2000;          // Unit: ms. 

void setup() {
  SerialUSB.begin(9600);         // Set Terminal Baudrate: 9600bps
  Serial1.begin(9600);           // Set sigfox Baudrate:9600bps
  pinMode(LED_POW,OUTPUT);       // Set LED_POW pin as output
  pinMode(RF_PWEN,OUTPUT);       // Set RF_PWEN pin as output
  digitalWrite(LED_POW,HIGH);    // Set LED_POW to High
  digitalWrite(RF_PWEN,HIGH);    // Set RF_PWEN to High, and Sigfox module power ON
  delay(3000);
  sigfox_atcommand_tx("AT$O=1,3\r");
  delay(100);
}
void loop()
{
  unsigned long currentMillis = millis();
   //sigfox AT Command
  if (currentMillis - previousMillis >= interval)
  {
    sigfox_atcommand_tx("AT$RCZ?\r");        //sigfox AT Command: get RCZ
    sigfox_atcommand_tx("AT$ID?\r");         //sigfox AT Command: Get ID
    sigfox_atcommand_tx("AT$PAC?\r");        //sigfox AT Command: Get PAC
    delay(100);

    previousMillis = currentMillis;
    sigfox_atcommand_tx("AT$SF=1234AB\r");     // Send Data to backend function
  }
}

void sigfox_atcommand_tx(char *wBuffer)   
{
  Serial1.print(wBuffer);                    // Send Data to backend                 
  sigfox_atcommand_rx();                     // Get feedback and show on Terminal function
}

void sigfox_atcommand_rx()
{
  char temp;
  while(Serial1.available() <= 0);
  while(Serial1.available() > 0)
  {
    temp = Serial1.read();
    SerialUSB.print(temp);
    delay(10);
  }
}

最後に、使用しているSigfox ATコマンドを説明しておきます。

ATコマンド 説明
AT$RCZ? モジュールのRC確認(日本ではRC3)
AT$ID? SigfoxデバイスIDの確認
AT$PAC? Sigfox PACコードの確認(工場出荷時の情報であり、一度でもSigfoxクラウドにデバイス登録するとPACは切り替わります
AT$SF=... データ送信(最大12バイトを16進表記)

Sigfox Japan KCCS

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3