はじめに
UARTシリアル通信を使ってATコマンドのようなテキストを送受信して制御するようなデバイスは世の中にたくさんありますが、Spresense SDK環境下で、これらのデバイスを簡単に制御し動作を確認する方法を見つけたので記事に残しておきます。
CU terminal application
Spresense SDKの中にcuターミナルアプリケーションが入っているのでそれをそのまま使用します。
コンフィグレーション
$ cd spresense/sdk
$ ./tools/config.py default -m
Application Configuration
---> System libraries and NSH Add-Ons
---> CU minimal serial terminal
を有効にします。
CU minimal serial terminal
のメニューからシリアルデバイス名やボーレート値のデフォルトを設定することができます。ここで設定する値は、あくまでデフォルト値であって、cuコマンドオプションを使って、あとから変更することも可能です。Spresenseでは、UART2を使用することが多いので、ここでは Default serial device
を/dev/ttyS2
に変更しています。
毎回、menuconfigから設定して使用するのは面倒なので、Spresense SDKでコンフィグレーション情報を保存する方法を参考に、設定したコンフィグレーションをファイルに保存しておきます。
$ ./tools/mkdefconfig.py examples/cu
次回からは、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 を制御します。
Spresense | ZS-040 | 説明 |
---|---|---|
Vout | VCC | 電源5V |
GND | GND | |
RX | TXD | IO3.3Vなので拡張ボードのジャンパは3.3Vを選択 |
TX | RXD | ↑ |
cuコマンド実行
minicomを起動して、nsh
プロンプトからcu
コマンドを実行します。
$ minicom -D /dev/tty.SLAB_USBtoUART
// macOSを使用した例になっているのでシリアルポートは適宜変更してください
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> cu -l /dev/ttyS2 -s 9600 -r
// ここで入力した文字をUART2デバイスへ送信します。
// 改行コードは Ctrlキー + j を入力します。
// ここにUART2デバイスから受信した文字列が表示されます。
// cuアプリを終了するときは、~(チルダ)のあとに.(ピリオド)を入力すると終了します。
-
AT
を入力すると、"OK" が返ってきます。 -
AT+HELP
を入力すると、ATコマンドのHELPが表示されます。
簡単にATコマンドによる制御ができました。実行した様子がこちらです。
(番外編) ZS-040 Bluetooth シリアル通信
AT+NAME
を入力すると、"+NAME="デバイス名が返ってきます。
デバイス名が空の場合はデフォルト名が使われるようで私がもっているデバイスの場合は"BT04-A"でした。
AT+PIN
を入力すると、"+PIN=1234"のようにPINコードが返ってきます。
- HostPCからBluetoothデバイスへ接続します。
- PINコード入力を求められるので”1234”を入力します。
- デバイス名に”/dev/tty.BT04-A”が現れるので、9600 baudで接続します。
$ minicom -D /dev/tty.BT04-A -b 9600
このターミナルからBluetoothモジュールを介してSpresenseと文字列のやり取りをすることができます。