LoginSignup
2
1

More than 1 year has passed since last update.

Spresense SDK環境でUART ATコマンドベースのデバイスを制御する

Posted at

はじめに

UARTシリアル通信を使ってATコマンドのようなテキストを送受信して制御するようなデバイスは世の中にたくさんありますが、Spresense SDK環境下で、これらのデバイスを簡単に制御し動作を確認する方法を見つけたので記事に残しておきます。

CU terminal application

Spresense SDKの中にcuターミナルアプリケーションが入っているのでそれをそのまま使用します。

コンフィグレーション

menuconfigを起動する
$ cd spresense/sdk
$ ./tools/config.py default -m

Application Configuration ---> System libraries and NSH Add-Ons ---> CU minimal serial terminal を有効にします。
image.png

CU minimal serial terminal のメニューからシリアルデバイス名やボーレート値のデフォルトを設定することができます。ここで設定する値は、あくまでデフォルト値であって、cuコマンドオプションを使って、あとから変更することも可能です。Spresenseでは、UART2を使用することが多いので、ここでは Default serial device/dev/ttyS2に変更しています。

cu-menu.png

毎回、menuconfigから設定して使用するのは面倒なので、Spresense SDKでコンフィグレーション情報を保存する方法を参考に、設定したコンフィグレーションをファイルに保存しておきます。

mkdefconfig.py
$ ./tools/mkdefconfig.py examples/cu

次回からは、config.pyで次のように指定してコンフィグできるようになります。

config.py
$ ./tools/config.py examples/cu

ビルド

ビルド、書き込みを行います。

ビルド&書き込み
$ make -j
$ ./tools/flash.sh -b 230400 -c /dev/tty.SLAB_USBtoUART nuttx.spk
// macOSを使用した例になっているのでシリアルポートは適宜変更してください

実行方法

デバイス接続

ここでは例として、Bluetoothデバイスモジュール ZS-040 を制御します。
cu-menu.png

次のように結線します。
cu-menu.png

Spresense ZS-040 説明
Vout VCC 電源5V
GND GND
RX TXD IO3.3Vなので拡張ボードのジャンパは3.3Vを選択
TX RXD

cuコマンド実行

minicomを起動して、nshプロンプトからcuコマンドを実行します。

minicom
$ minicom -D /dev/tty.SLAB_USBtoUART
// macOSを使用した例になっているのでシリアルポートは適宜変更してください
nsh
nsh> cu -h
Usage: cu [options]
 -l: Use named device (default /dev/ttyS2)
 -e: Set even parity
 -o: Set odd parity
 -s: Use given speed (default 115200)
 -r: Disable RTS/CTS flow control (default: on)
 -c: Disable lf -> crlf conversion (default: off)
 -f: Enable endless mode without escape sequence (default: off)
 -?: This help
nsh>

/dev/ttyS2シリアルデバイスへボーレート9600で接続します。
前述したコンフィグレーションでデフォルトのシリアルデバイスとして/dev/ttyS2を指定している場合は、-l /dev/ttyS2 は省略可能です。

nsh
nsh> cu -l /dev/ttyS2 -s 9600 -r
// ここで入力した文字をUART2デバイスへ送信します。
// 改行コードは Ctrlキー + j を入力します。
// ここにUART2デバイスから受信した文字列が表示されます。
// cuアプリを終了するときは、~(チルダ)のあとに.(ピリオド)を入力すると終了します。
  • AT を入力すると、"OK" が返ってきます。
  • AT+HELP を入力すると、ATコマンドのHELPが表示されます。

簡単にATコマンドによる制御ができました。実行した様子がこちらです。
スクリーンショット 2022-08-14 15.08.49.png

(番外編) ZS-040 Bluetooth シリアル通信

AT+NAMEを入力すると、"+NAME="デバイス名が返ってきます。
デバイス名が空の場合はデフォルト名が使われるようで私がもっているデバイスの場合は"BT04-A"でした。

AT+PINを入力すると、"+PIN=1234"のようにPINコードが返ってきます。

  1. HostPCからBluetoothデバイスへ接続します。
  2. PINコード入力を求められるので”1234”を入力します。
  3. デバイス名に”/dev/tty.BT04-A”が現れるので、9600 baudで接続します。
$ minicom -D /dev/tty.BT04-A -b 9600

このターミナルからBluetoothモジュールを介してSpresenseと文字列のやり取りをすることができます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1