記事の概要
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に遷移するには以下の手順に従う。
-
AT+QSLK=1
コマンドをUART通信で送信して、Sleep modeを許可する - 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起動
-
AT+QGPSCFG
コマンドでGNSSの設定を行う -
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でデバイスの「レジストリ詳細」を開き、「構成を編集」からデータ入力画面に進むことができる。
参照
-
【作業メモ】GPSロガーの作成
- 実際にLTE通信モジュールEC21Jを使用した実例を紹介しています
- EC21-JとSORACOM IoT SIMによりGoogle IoT CoreでMQTT接続を行うまでの全過程の記録
追記メモ
- 2021/07/19
- Configuration追加