[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につなげて遊んでみるのもいいかもしれませんね。
この記事が気に入ったらサポートをしてみませんか?