【作業メモ】Quectel社のLTE通信モジュールEC21の使用方法


記事の概要

Quectel社LTE通信モジュールEC21-Jの使用方法のメモです。

EC25-Jや同社製の他通信モジュールについても適用できる点が多いと思います。

メモなので随時更新します。

モードの種類

  • Normal Operation
    • 待機
      • ネットワークを設定し、通信可能な状態
    • 通信
      • ネットワーク接続している状態。消費電力はデータ転送レートによる
  • Minimum Functionality Mode
    • 消費電力節約のために、RF機能とUSIM機能を無効にする
  • Ariplane Mode
    • 消費電力節約のために、RF機能を無効にする
  • Sleep Mode
    • 多くの機能を無効にして消費電力を最小にする
  • Power Down Mode
    • 電源を落とし、機能停止する

モードへの遷移方法

Sleep Mode

Sleep modeに遷移するには以下の手順に従う。

  1. AT+QSLK=1 コマンドをUART通信で送信して、Sleep modeを許可する
  2. DTR端子にHigh入力を保持する

Sleep modeから復帰するには以下のようにする。

  • DTR端子にLow入力を保持する

Minimum Functionality Mode

Minimum Functionality Modeに遷移するには以下の手順に従う。

  • AT+CFUN=0 コマンドをUART通信で送信する

Ariplane Mode

Ariplane Modeに遷移するには以下の手順に従う。

  • AT+CFUN=4 コマンドをUART通信で送信する

Minimum Functionality Mode / Ariplane Modeからの復帰

Minimum Functionality Mode もしくは Ariplane Modeから復帰するには以下の手順に従う。

  • AT+CFUN=1 コマンドをUART通信で送信する

再起動

設定を有効にしたまま再起動を行う。

  • AT+CFUN=1,1 コマンドをUART通信で送信する

電源ON/OFF

PWRKEY端子は電源のON/OFFスイッチになる。

  • PWRKEY端子に100msec以上のLOW期間を持つパルスを入力することで、電源がON/OFFする

もしくは、電源OFFにするだけならコマンド入力でもできる。

  • AT+QPOWD コマンドをUART通信で送信することで、電源OFFする
    • AT+QPOWD=0:緊急電源OFF
    • AT+QPOWD=1:通常電源OFF

電源ONしてから、ネットワークを使用可能になるまでは13秒待たされる。

リセット

  • RESET_N端子に150msec以上、460msec以下のLOW期間を持つパルスを入力することで、リセットする

リセットは、AT+QPOWD コマンドもしくはPWRKEY端子による電源OFFが失敗した場合に行うこと。

UTC時刻の取得

  • AT+QLTS コマンドをUART通信で送信する
$ AT+QLTS
+QLTS: "2020/09/15,05:03:56+36,0"
  • AT+CCLK? コマンドをUART通信で送信する
$ AT+CCLK?
+CCLK: "20/09/15,05:04:39+00"

GNSS

GNSSはGPSを含む衛星測位システムの総称です。
GPSだけではなく、みちびきなどを併用することで、GPSだけでは位置測定できない場所でも位置測定が可能になります。

GNSS起動

  1. AT+QGPSCFG コマンドでGNSSの設定を行う
  2. AT+QGPS=1 コマンドでGNSSを起動する

GNSS終了

  • AT+QGPS=0 コマンドでGNSSを終了する

もしくは

  • AT+QGPSEND コマンドでGNSSの設定を行う

AT+QGPS コマンドで<fixcount>を設定することで、設定時間経過時に自動終了させることもできる

GNSS位置計測

  • AT+QGPSLOC? コマンドで位置情報を取得できる。

GNSS起動時間

GNSSの起動時間は、GNSSがCold startかWarm startかHot startかで異なる。
Cold startなどの意味は以下のQ2を参照。
https://www.gpsdgps.com/qa.htm

また、XTRA Dataをダウンロードしているか、していないかでもGNSS起動時間は異なる。
qualcomm社の提供するXTRAデータをダウンロードすることで、起動後の位置計測に要する時間が短縮される。
XTRAの詳細は以下を参照。
https://www.qualcomm.com/news/releases/2007/02/12/qualcomm-introduces-gpsonextra-assistance-expand-capabilities-standalone

  • Cold Start
    • XTRAなし:35秒
    • XTRAあり:18秒
  • Warm Start
    • XTRAなし:26秒
    • XTRAあり:2.2秒
  • Hot Start
    • XTRAなし:2.5秒
    • XTRAあり:1.8秒

XTRAデータダウンロード

XTRAデータをダウンロードしてからのGNSS起動するには、例えば以下のように行う。

AT+QGPSXTRA=0
AT+QHTTPCFG="contextid",1 or  AT+QHTTPCFG="requestheader",0
AT+QHTTPURL=40,80
http://xtrapath1.izatcloud.net/xtra2.bin
AT+QHTTPGET=80 
AT+QHTTPREADFILE="UFS:xtra2.bin",80
AT+QGPSXTRA=1
AT+QGPSXTRATIME=0,"2020/11/11,11:11:11",1,1,5
AT+QGPSXTRADATA="UFS:xtra2.bin"
AT+QGPSXTRADATA?
AT+QGPS=1

実際のファームウェアでは、AT+QGPSXTRATIME を実行直前に、AT+QGPSCFG を実行し、それで取得した時刻データを使用している。

状態

SIMの確認

  • AT+CPIN? コマンドをUART通信で送信する
$ AT+CPIN?
+CPIN: READY

OK

デバイス情報の確認

  • ATI コマンドをUART通信で送信する

電波強度の確認

  • AT+CSQ コマンドをUART通信で送信する

1番目の引数はRSSI、2番目の引数はdBm。
値が99の場合は、検出不可を意味している。

$ AT+CSQ
+CSQ: 22,99

OK

ネットワーク

ローミングの有効化

  • AT+QCFG=“roamservice”[,<roammode>[,<effect>]] コマンドをUART通信で送信する

  • roammode:roam serviceのモード

    • 1:roam service無効
    • 2:roam service有効
    • 255:自動
  • effect:いつ有効化するか

    • 0:UE reboot後に有効化
    • 1 :コマンド実行直後に有効化

例)直ちにroam serviceを有効にする場合

$ AT+QCFG="roamservice",2,1
OK

有効な基地局の検索

  • AT+COPS=? コマンドをUART通信で送信する
$ AT+COPS=?
OK
+COPS: (3,"441 00","441 00","44100",7),(1,"440 00","440 00","44000",7),(1,"KDDI","KDDI","44051",7),(1,"KDDI","KDDI","44050",7),(1,"JP DOCOMO","DOCOMO","44010",7),(3,"440 11","440 11","44011",7),(1,"SoftBank","SoftBank","44020",7),,(0-4),(0-2)

結果は以下のフォーマットを持つ。

+COPS: (<stat> ,<oper (in <format>=0)>,””,<oper (in <format>=2)>)

+COPS: [list of supported (<stat> ,<oper (in <format>=0)>,,<oper (in =2)> )s][,,(list of supported <mode>s),(list of supported<format>s)]

  • <stat>:operator availability
    • 0 - unknown:不明な基地局
    • 1 - available:利用可能な基地局
    • 2 - current:現在の基地局
    • 3 - forbidden:使用できない基地局

基地局の登録

自動登録

  • AT+COPS=0 コマンドをUART通信で送信する

手動登録

  • AT+COPS=1[,<format>[,<oper>[,<Act>]]] コマンドをUART通信で送信する

operは基地局(Operator)。

  • mode
    • 0:自動モード。 <oper>は省略
    • 1:手動モード。 <oper>に<Act>で指定した形式で基地局を設定
    • 2:登録解除
    • 3:<format>のみを設定
    • 4:自動で登録し、それに失敗した場合に、手動で登録する。
  • format
    • 0:<oper> は16文字
    • 1:<oper>は短縮形
    • 2:<oper>は識別番号

例)手動かつ番号で基地局を指定

$ AT+COPS=1,2,"44010"
OK

MQTT通信

1例として、SORACOM Beamサービスを利用してGCPサーバとMQTT通信でPub/Subしてみる

OPEN

AT+QICSGP=1,1,"soracom.io","sora","sora",0
AT+QIACT=1
AT+QMTOPEN=0,"beam.soracom.io",1883 
AT+QMTCONN=0,"projects/vigilant-router-xxxxxx/locations/asia-east1/registries/xxxx/devices/SOMENAME" 

SUBSCRIBE

AT+QMTSUB=0,1,"/devices/SOMENAME/commands/#",0

PUBLISH

文字数を指定しない場合

AT+QMTPUB=0,0,0,0,"/devices/SOMENAME/events"
{"Hello":"World1"}

最後にCtrl+zでPublish開始する。
マイコンなどでは、0x1aを送信すれば、Ctrl+zを入力したことになる。

文字数を指定する場合

AT+QMTPUBEX=0,0,0,0,"/devices/SOMENAME/events",18
{"Hello":"World2"}

Configuration

GCPなどに登録したデータを読み出す場合にはsubscribeコマンドと類似した以下のコマンドを用いる。

AT+QMTSUB=0,1,"/devices/SOMENAME/config",0

このコマンドを実行すると、例えば以下のように設定したデータTestConfiguration,01234567890が受信できる。

AT+QMTSUB=0,1,"/devices/SOMENAME/config",0
OK

+QMTSUB: 0,1,0,0

+QMTRECV: 0,0,"/devices/SOMENAME/config","TestConfiguration,01234567890"

一度データを受信すると、コマンドを再送信してもデータ受信できないのでご注意すること。
Configurationのデータに更新があるか、一度サーバと切断して、再接続すると、コマンド送信によりデータを再受信できるようになる。

GCPのConfiguration設定は、IoT Coreでデバイスの「レジストリ詳細」を開き、「構成を編集」からデータ入力画面に進むことができる。

参照

追記メモ

  • 2021/07/19
    • Configuration追加