2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M5Stack用SIM7080G搭載CAT-M/NB-IoT+GNSSユニットをIoT Connect Mobile Type Sでの動作検証

Posted at

はじめに

IoT Connect Mobile Type S というNTTコミュニケーションズが提供している通信回線を M5Stack用SIM7080G搭載CAT-M/NB-IoT+GNSSユニット で動かしてみます。
まずは、このモジュールで通信環境が整うかどうかがポイントになるので、今回は疎通確認までを記事にまとめました。

必要なもの

  • M5Stack用 SIM7080G搭載 CAT-M/NB-IoT+GNSSユニット(アンテナつき)


  • M5Stack Core2 IoT開発キット


  • IoT向けモバイルデータ通信サービス IoT Connect Mobile Type S のSIMカード

環境

  • PlatformIO
  • ライブラリ:TinyGSM

サンプルコード

main.cpp
// SIM7080用のモデムモジュール
#define TINY_GSM_MODEM_SIM7080

#include <M5Core2.h>
#include <TinyGsmClient.h>

// APN設定
const char APN[] = "mobiledata.ntt.com";
const char LTE_USER[] = "";
const char LTE_PASS[] = "";

TinyGsm modem(Serial2);
TinyGsmClient client(modem);

// モデムの初期化
void initSim(){
    // シリアル通信の開始
    Serial2.begin(115200, SERIAL_8N1, 33, 32);
    delay(6000);

    // モデムの初期化
    Serial.println("Initializing modem...");
    if(!modem.init())
    {
        Serial.println("Failed to restart modem.");
    }

    // モデムの情報を表示
    String modemInfo = modem.getModemInfo();
    Serial.println("modem.getModemInfo()");
    Serial.println(modemInfo);

    // SIMカードのチェック
    Serial.println("Checking SIM card...");
    if (!modem.getSimStatus()) {
        Serial.println("SIM card not inserted.");
        return;
    }

    // ネットワークモードと優先モードの設定
    const int NETWORK_MODE = 2;   // 2: Automatic, 13: GSM only, 38: LTE only, 51: GSM and LTE only
    const int PREFERRED_MODE = 1; // 1: CAT-M only, 2: NB-IoT only, 3: CAT-M and NB-IoT
    bool result;
    
    do {
        result = modem.setNetworkMode(NETWORK_MODE);
        Serial.println("Setting network mode to " + String(NETWORK_MODE) + ": " + (result ? "OK" : "NG"));
        delay(500);
    } while (!result);

    do {
        result = modem.setPreferredMode(PREFERRED_MODE);
        Serial.println("Setting preferred mode to " + String(PREFERRED_MODE) + ": " + (result ? "OK" : "NG"));
        delay(500);
    } while (!result);

    // ネットワークへの接続待ち
    Serial.println("Waiting for network...");
    if (!modem.waitForNetwork()) {
        Serial.println("Failed to connect to network.");
        return;
    }

    // ネットワークへの接続状態を表示
    Serial.println("Network connected: " + String(modem.isNetworkConnected()));

    // APNへの接続
    Serial.println("Connecting to APN: " + String(APN));
    if (!modem.gprsConnect(APN)) {
        Serial.println("Failed to connect to APN.");
        return;
    }

    // GPRSへの接続状態を表示
    Serial.println("GPRS connected: " + String(modem.isGprsConnected()));

    // SIMカード、IMEI、オペレーター、ローカルIP、信号強度などの情報を表示
    Serial.println("SIM CCID: " + modem.getSimCCID());
    Serial.println("IMEI: " + modem.getIMEI());
    Serial.println("Operator: " + modem.getOperator());
    Serial.println("Local IP: " + modem.localIP().toString());
    Serial.println("Signal quality: " + String(modem.getSignalQuality()));

}

void setup(){
    M5.begin(true, true, true, false);
    initSim();
}

void loop(){
    Serial.print(".");
    delay(5000);
    M5.update();
}

その他の注意点

  • SIMカードの方向
    表裏の両面もそうですが、カードの切り欠きの位置にも注意して下さい。
    自分だけかもしれないですが、それを間違えていて、しばらく苦戦していました。
    image.png

終わりに

個人的には、使うサービスはどこでも良いのですが、いろいろ選択できた方が自由度が高いので、IoT Connect Mobile Type Sで動作することが確認できたのは良かったです。
ここまで来ると、1NCEも使ってみたくなりますね。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?