見出し画像

[Lilygo T-SIM7080G-S3]ATコマンドとドキュメント

前回までの記事の通りに進んでいれば、ATコマンドのお試し環境が構築されていることでしょう。今回は、実際のATコマンドに触れながら、ドキュメントの見方について触れていこうと思います。

【注意】
・記事内での入出力は、VScodeのモニターを基準としてます。
・機器の固有情報等は、[XXX]で伏せます。
・文書はすべて英語表記のものを基準とします。

モニター環境でATコマンドを入れてみる

ATコマンドは”AT"から始める、通信モジュール用のコマンドです。
基礎となる”AT”はモジュールが生きているかどうか、程度の確認用コマンドです起動したらはじめに実行し、OKが返ってくるかどうかを確認しましょう。なお、大文字小文字ともにOKです。

at
OK  <--正常ならOKが返ってくる
 
at+
ERROR  <--なにか間違いがあればERRORが返ってくる

ATコマンドのマニュアル例

GitHubの"datasheet"フォルダ内に、SIMCOM社からの最新版がおいてあります。ダウンロードしたZIPファイルにも含まれていますので参照してください。
これらの正式なファイル名は例えば
[SIM7070_SIM7080_SIM7090 Series_AT Command Manual_V1.05]ですが、
説明では長いので、先頭のモジュール名と末尾のバージョンを省いて
私の記事では、[AT Command Manual]と表記します。

■AT Command Manual
SIM7080Gで利用可能なすべてのATコマンドが記載されています。
慣れればこれ1つで大丈夫です。

■HTTP(S)_Application Note
各Application Noteは[〇〇機能の使い方]的な内容がまとめられています。
ATコマンド自体は上記のコマンドマニュアルと同じです。
このファイルの場合、HTTP(S)通信用をする場合のコマンドと流れが記載されています。【気温センサーで読み取った数値をWeb上のAPIにJSON形式でPOSTする】場合など、このファイルを見るとわかりやすいと思います。

■GNSS_Application Note
GNSSは一般的に言うとGPSです。
位置情報を測定する命令が記載されています。

■FS_Application Note
File SystemのFSです。フラッシュメモリに読み書き出来ます。
T-SIM7080Gはボードに搭載されたフラッシュメモリとTFカードにファイル保存ができます。通信用のセキュリティ証明やGPS衛星の補助ファイルなどを読み書きする際に使います。

他にも機能はありますが、とりあえず「こんな事ができそうで、これを見たらわかるのかなぁ」程度にふんわりと抑えておいてください。

Googleレンズを使って読むべし

英語が堪能でない場合、Googleレンズの翻訳機能をおすすめします
AIの画像認識機能と翻訳機能のコラボ機能がタダなんて、恵まれた世の中になったものです。ありがたや。

スマホのカメラに収めるだけで和訳してくれます。

ATコマンドでわかりにくかった所

個人的に、理解するまで時間がかかった概念的な部分?をメモっておきます。マニュアルに書いてあるのか無いのかもよくわかりませんでした。

■コマンドの種類は 確認・設定・実行が別

以下はGPSの電源に関するコマンドとそれぞれの意味です。
これはON/OFFだけですが「1~4の中から1つ設定」みたいな状況だと「設定後はOKじゃなくて設定状況の一覧を出してくれよ」なんて、思ってしまいます。

AT+CGNSPWR=?  <--コマンドについての説明
+CGNSPWR: (0-1) <--0から1の状態が存在します。
注:(0:OFF,1:ON)を表します
OK

at+cgnspwr? <--現在の状態確認
+CGNSPWR: 0 <--0:OFFです
OK

AT+CGNSPWR=1 <--状態を1に設定
OK <--コマンド送信成功

at+cgnspwr? <--現在の状態確認
+CGNSPWR: 1 <--1:ONです
OK

次はSORACOMのSIMカードでLTE通信するときの流れから一部抜粋。

AT+CPIN?  <--SIMカード状況の「確認」
+CPIN: READY <--準備完了
OK

AT+CGDCONT=1,"IP","soracom.io" <--アクセス先や通信方法を「設定」
OK

AT+CGAUTH=1,3,"sora","sora" <--アクセス用のID/PASSを「設定」
OK

(中略)
AT+CNACT=0,1 <--接続を「実行」
OK

+APP PDP: 0,ACTIVE <--ここではじめて接続される

実際はこの他にもいくつか設定があり、それらを一気に実行する流れですが、APもIDもパスも設定したのに、なんで繋がらないの?みたいなときは「実行」コマンド後のエラーを確認してみると良いと思います。

同系列(?)のコマンドが干渉し合うことがある

例えば前述のGNSS電源について、電源をONするコマンドとGPS情報を取得する命令文を書くとこうなります。

AT+CGNSPWR=1 <--電源をONにする

AT+CGNSINF
+CGNSINF: 1,,20241111044949.000,XX.XXXXXX,XXX.XXXXXX略(Xは、緯度経度)

これには、別の命令文も存在します
>>アプリケーションノートより抜粋

AT+SGNSCMD=1,0 <-- GNSSの電源を入れて全力で1回だけ測定する

OK

+SGNSCMD:  <--しばらくしてから結果が出る
2,05:29:31,31.22213,121.35575,16.62,40.15,30.6
9,0.0,0.0,0x16dfc3dca78,311

結論から書くと、電源ON+INF命令は「ずっとやり続ける」ことが得意で、SGNSCMDは「今やれ!」が得意なのですが、こういう2つ命令が有る場合は、相互干渉することがあります。

こういう場合、片方の系統で最後まで面倒を見ることが必要になります。

AT+SGNSCMD=1,0 <-- GNSSの電源を入れて全力で1回だけ測定する
OK

+SGNSCMD:  <- 結果が帰ってくる
2,05:29:31,31.22213,121.35575,16.62,40.15,30.6
9,0.0,0.0,0x16dfc3dca78,311

AT+CGNSPWR? <--電源状態を確認
+CGNSPWR: 0 <--OFF状態

AT+CGNSPWR=1 <--CGNSPWRで電源をON
ERROR <-エラーが出る

AT+SGNSCMD=0 <--SGNSCMDでの電源OFF命令 
OK <--正常終了

AT+CGNSPWR=1 <-- CGNSPWRで電源ON命令
OK <--正常終了

細かい違は不明ですが、SGNSCMD系で電源OFFまでしないと、SGNSPWRコマンドを受け付けなくなります。どちらもマニュアル上では同じPOWER ON/OFFとしか書いていませんが。

さて。ここまでくれば、あとはArduinoなりPythonなり、ChatGPTに作ってもらえば、なにか動き始めます。SIMカードが無くてもWi-FiやBlueToothは使えるので、自宅の無線LANにつなげて遊んでみるのもいいかもしれませんね。

この記事が気に入ったらサポートをしてみませんか?