nRF9160をATコマンドだけで制御してみよう
2024.07.11(2025.01.07 更新)

こんにちは。
加賀デバイスのNordic Teamです。
NordicのnRF91シリーズは一つのチップの中にアプリケーションMCUとモデムを統合しているため、ワンチップでネットワークへ接続出来ることが特徴となっていますが、別のMCUからATコマンドを入力して動作するような構成も実現可能です。
UARTでATコマンドを入れるだけで制御可能です。
送受信するデータ量が多い場合はハードウェアフローを使用することをお勧めします。

今回のコラムではnRF9160 DKを使用したATコマンドの事例をご紹介したいと思います。
◢◤準備
nRF9160はブランク(プログラムが書き込まれていない状態)で出荷されます。そのためATコマンドの評価をするためにNordicが用意しているサンプルプロジェクト:Serial LTE Modem(以降SLM)を使用します。
SLMのサンプルプロジェクトはNordicのHPからダウンロードすることが可能です。
nRF9160 DK application and modem firmware
この記事を書いている時の最新バージョンは”2024-03-13_af2b60d2″となります。

ダウンロードしたZIPファイルの中の”nrf9160dk_fw_2024-03-13_af2b60d2\img_app_bl”フォルダにある“nrf9160dk_serial_lte_modem_2024-03-13_af2b60d2.hex”を使用します。

nRF9160への書き込みはnRF Connect for DesktopのProgrammerを使用します。
nRF Connect for Desktop:Download
nRF Connect for Desktop:ドキュメント
Programmerを使用することでModem Firmware(以降MFW)やApplication Firmwareを書き込む事が可能です。

nRF9160 DKの準備はこれで以上となります。
あとはパソコン側の設定となります。
ATコマンドの確認はnRF connect for Desktopの”serial terminal”を使用します。
*他のターミナルソフトでも代用可能です。
serial terminalの場合であればCOMポートは自動で選択されます。nRF9160 DKのリセットボタンを押した時に”Ready”が表示されるの確認したり、”AT”と入力して”OK”と返ってくれば接続成功です。

”Ready”が表示されなかったり、”OK”が返ってこない場合は違うCOMポートを選択して試してみて下さい。
serial terminal以外のターミナルソフトを使用される場合は少し注意が必要です。
SLMが書き込まれたnRF9160 DKとPCを接続するとCOMポートが3つ表示されます。

nRF9160 DKのUARTのポートをパソコンがどの順番で認識したかによって、ATコマンドで使用出来るCOMポートが変わってきます。
COMポートの設定は下記となります。

COMポートを1つずつ開き、nRF9160 DKをリセットした時に”Ready”が表示されるの確認したり、”AT”と入力して”OK”と返ってくるCOMポートを探します。

”Ready”が表示されたり”OK”が返ってくるCOMポートが分かったら準備完了です。
◢◤nRF91シリーズで使用出来るATコマンド
nRF91シリーズで使用できるATコマンドは大きく分けて3種類あります。
AT+XXX:標準的なATコマンド
AT%XXX:Nordic独自のATコマンド
AT#XXX:SLMのサンプルプロジェクトみで使用可能なATコマンド
nRF91シリーズのMFWではAT+XXXとAT%XXXの両方のコマンドに対応しています。
nRF9160で使用可能なATコマンド
nRF91Xで使用可能なATコマンド
nRF91Xで使用可能なテスト/検証用ATコマンド
AT#XXXはSLMのアプリケーション部分で独自に作ったATコマンドとなり、SLMのみで使用可能です。
SLMで使用可能なATコマンド
今回のコラムではMFWが対応しているAT+XXXとAT%XXXのいくつかのコマンドをご紹介したいと思います。AT#XXXについては次回のコラムで投稿する予定です。
※紹介するATコマンドはMFW v1.3.6に対応したものとなります。
新しいMFWがリリースされたら対応しているATコマンドに変更がある可能性はあります。
◢◤ATコマンドを使用する上での注意事項
ATコマンドのドキュメントで、いくつかのATコマンドに下記のような注意書きがあります。
The command configuration is stored to NVM approximately every 48 hours and when the modem is powered off with the +CFUN=0 command.
この文章が記載されているATコマンドはその設定内容が48時間ごと、もしくはAT+CFUN=0を実行するたびにFlashメモリに保存されます。
設定値が保存されるため毎回そのATコマンドを実行する必要はなくなりとても便利な機能ですが、その設定値が保存されるたびにFlash MemoryのWrite/Eraseの動作が発生します。
nRF9160であればFlash MemoryのWrite/Eraseの耐性はMAX:10,000回と決まっていますので、頻繁にAT+CFUN=0を実行するようなプログラムにならないようにご注意いただければと思います。
nRF9160のFlash MemoryのWrite/Erase耐性
上記のようにいくつかのATコマンドでは設定値がFlash Memory保存されますが、その設定値を出荷時の状態に戻せるATコマンドもあります。

以前まではうまく接続出来ていたけど、いろいろなATコマンドを試している中で急に接続が出来なくなってしまった、、、といったような時は一度お試しいただいてもよいかもしれません。
また、使用するのを注意して頂きたいATコマンドがあります。
このコマンドを実行するとMFWのダウングレードが出来なくなります。
量産移行してMFWのダウングレードを防止したいときなどには有効ですが、開発中に様々なMFWのバージョンを試したい場合にはご注意ください。
では早速いくつかのATコマンドをご紹介していきたいと思います。
◢◤情報確認コマンド
チップやSIMなどの情報が確認できるATコマンドがいくつかあります。
AT%HWVERSION:チップのハードウェアバージョン確認

AT+CGMR:MFWのバージョン確認

AT+CGSN:チップのIMEIの確認

SIMの情報を入手するにはSIMへの電源供給が必要なため、AT+CFUN=1 もしくはAT+CFUN=41を実行してからご確認ください。
AT+CIMI:SIMのIMSIの確認

AT%XICCID:SIMのICCIDの確認

◢◤ネットワーク接続設定
nRF91シリーズを使用してネットワーク接続に参考となりそうなATコマンドについて紹介します。
〇SIM設定
使用するSIMに合わせて下記コマンドで設定を行います。
AT+CGDCONT:PDPやAPNの設定
AT+CGAUTH:ユーザー名やパスワードの設定
SIMによってはAT+CGAUT(ユーザー名やパスワード)が不要なところもあります。弊社が所有しているSIMの例を示します。




〇キャリアとBANDの指定
あらかじめキャリアやBANDを指定しておくことで不要なサーチ時間をなくし、接続までの時間を短縮出来る可能性があります。
AT+COPS:キャリア設定

日本であればDocomo:44010、KDDI:44051、SOFTBANK:44020などの接続先を指定します。
同じSIM/同じキャリアを使い続ける場合であれば特に問題にはなりませんが、SIMを変えたり接続先のキャリアを変更する場合は指定が必要となります。
nRF9160で日本で認証が取れている周波数は、LTE-M:BAND1,3,8,18,19、NB-IoT:BAND1,3,8,19となります。
Global and regulatory certifications
また、nRF9160 DKを使用して評価する場合は、使用するBANDに注意が必要です。
nRF9160 DKのアンテナはP822601を使用していますが、BAND1およびBAND3の周波数帯では利得が3dBiを超えてしまい、電波法の規制により使用できないため日本では698-960MHz(BAND8,18,19)の範囲でしか使用できません。
Antenna usage declaration
そのため、使用するBANDを指定する必要があります。
AT%XBANDLOCK:BANDの指定

〇PSMやeDRXの設定
PSMやeDRXについてはNordicのDevAcademyの”Cellular IoT FUndamentals”に説明がありますのでご参照いただければと思います。
PSMのTAUやActive time、およびeDRXのeDRX CycleやPagin time windowsをATコマンドで指定します。
AT+CPSMS:PSMのTAUとActive timerの時間を設定
AT+CEDRXS:eDRX Cycleの時間を設定
AT+PTW:Paging time windowの時間を設定

ただし、キャリアによってPSMやeDRXで設定出来る範囲が決まっているらしく、上記コマンドで設定したからといってその値が実際に設定出来ているとはかぎりません。
上記ATコマンドを入力して”OK”が返ってきたとしても、それはあくまでもモデム側がコマンドを受け付けただけであって、基地局とのやりとりで実際に設定出来ているかは別となります。
そのため、実際に設定が反映されているかAT%XMONITORなどで確認が必要となります。
AT%XMONITOR:モデムと基地局との接続状況の確認

〇消費電力の最適化
AT%XDATAPRFL:ネットワークのサーチ時間やSIMのシャットダウン動作などの設定が可能

パラメータレベルが0から4まで設定が出来て、レベル0が一番低消費電力になりやすい設定となります。
SIMによってはこの設定行うことでeDRX期間中にシャットダウン動作となり、バッテリー駆動製品などでは有効なコマンドとなります。
AT%XDATAPRFLの設定は、実際にはAT%PERIODICSEARCHCONFを設定していることになります。詳細は各コマンドをご参照いただければと思います。
AT%REDMOB:LTE idle mode時のセルの入れ替えなどを制限

この機能は常に静止しているような製品には有効ですが、トラッカーなど製品が移動するような用途では逆に電流値が増大する可能性があります。
〇接続設定
AT%SYSTEMMODEでLTE-M/NB-IoT/GNSSの使用有無と優先順位を設定します。
AT%XSYSTEMMODE:nRF9160のシステムモード選択

最後にAT+CFUN=1を実行することでネットワークへの接続を開始します。
AT+CFUN:モデムの機能選択

接続を遮断する場合もAT+CFUNコマンドを使用しますが、コラム冒頭にも書きましたが、CFUN=0を実行するとFlash MemoryへのWrite/Eraseの動作が発生するため注意が必要です。
ネットワークを遮断する場合はAT+CFUN=4であればFlash MemoryへのWrite/Eraseの動作は発生しません。
◢◤ネットワークにうまく接続できない時に参考となるATコマンド
正常にネットワークに接続出来ればよいのですが、そうでない時も発生します。
そういった時にネットワーク側で何が起こっているのかある程度通知してくれるATコマンドも準備されています。
基地局とうまく接続出来ないときや、基地局までは接続出来ているが、その先に接続出来ない時などは下記のATコマンドを試してみてください。
AT+CESQ:現在の電波強度
AT%CESQ:電波強度が変化したとき通知
AT+CEREG:ネットワークのステータス通知
AT+CNEC:ネットワークからのエラーコードの通知
AT+CMEE:ネットワークの切断理由の通知
AT+CGEREP:パケットドメインのイベント通知
AT%MDMEV:モデムのイベント通知
また、上記ATコマンドを使用しても何が起きているか分からない場合は、モデム側の通信ログを見ることが出来るModem Traceの機能を使って実際に何が起きているのか確認する事も可能です。
具体的な使用方法は別のコラムで説明していますので、ご使用されたい場合はご参考にして頂ければと思います。
Nordic nRF91シリーズ LTE通信ログの取得方法
上記コラムの説明ではプログラムのビルドが必要となっていますが、”nrf9160dk_fw_2024-03-13_af2b60d2\img_app_bl\debug”フォルダにある“nrf9160dk_serial_lte_modem_debug_2024-03-13_af2b60d2.hex”を使用して頂ければModem Traceの機能を使用することが可能となります。

◢◤RFテストコマンド
RFのテスト用のコマンドも用意してあるので、出荷時の機能確認も可能です。
AT%XRFTEST(データ受信):データの受信評価

AT%XRFTEST(データ送信):データの送信評価

◢◤最後に
いつくかのATコマンドを紹介してきましたが、これ以外にも数多くのATコマンドが用意されていますので、お時間のある時にでもご確認いただければと思います。
また、ここまで紹介してきたATコマンドはMFWで対応しているATコマンドのみとなりますが、SLMではHTTPやMQTTを制御するコマンドや、MCU周辺機能であるGPIOやTWI(I2C)を制御するコマンドなどが用意されています。
これらについてはまた別のコラムでご紹介したいと思います。
今後もNordicの紹介及びコラムにて色々な情報を公開致しますので是非ご確認ください。
また、Facebookでも随時情報を公開しておりますので合わせてご確認ください。
Nordic コラム一覧
nRF Cloud その2 -アカウント管理-
関連記事