Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

sigfox
IoT向け無線ネットワーク Sigfoxを日本国内で構築運用
https://www.kccs-iot.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away