2023年6月11日日曜日

Raspberry Pi UART接続(ログイン)時の操作メモ



背景

uart接続でRaspberry Piにログインするときの操作を毎度忘れて調べ直しているので記事にまとめます。

使ったもの


Raspberry Pi側の設定

bootfsパーティションのconfigファイルに下記の行を足すとuartログイン可能になります。
/boot/config
enable_uart=1

Raspberry Piへの接続

GPIOの外側の角から3番目からGND、TX、RXなので、それらをUSB-UARTのGND、RX、TXに繋ぎます。
UARTはRX(受信)<->TS(送信)で繋ぎます。



ログインに使うシリアル通信プログラム

uart接続して矢印操作をしたりviなどでファイルを開くと\r信号が送られてきてカーソル位置を変えようとするのですが、\rなどの解釈に対応していないシリアル通信プログラムだと表示が崩れて解読が困難になります。
自分が確認した中で良さそうだったプログラムと操作方法を紹介します。

他に良さそうなプログラムがあれば、教えていただけると嬉しいです。

Linuxの場合: screen

シリアル通信関係の記事で目にすることが多いscreenを使うと、\rを期待通りに解釈してくれて矢印操作やviでのファイル編集を難なくこなせます。
今まで存在は知っていたものの、開いた後の閉じ方操作が分からなくて避けていました。
忘れたときのために基本の操作方法をここに残します。

インストール
sudo apt install -y screen

接続
Raspberry Piのuartは115200bpsで最初は開かれているので、それで開きます。
9600bpsで開いて何回か通信すると、Raspberry Pi側が通信速度を変えてくれるのか通信可能になりますが、出力が多いと動作がガタつくので115200bpsがお勧めです。
screen /dev/ttyUSB0 115200

終了
Ctrl-a の後 k ->  y

一時離脱
Ctrl-a の後 z

離脱した画面に復帰
screen -r

参考:
RPi Serial Connection

Windowsの場合: TeraTerm

TeraTermとはssh接続したりシリアル接続したりできるWindows向けのプログラムです。
下記のサイトからインストーラーをダウンロードできます。
この記事ではteraterm-4.106.exeを利用しました。

https://osdn.net/projects/ttssh2/releases/

シリアル接続は開く際に通信速度が選べないので、まずはポートだけ指定して開きます。


開いたら 設定 -> シリアルポート を選んで設定画面を開きます。


スピードを115200にして「現在の接続を再接続」を押すと、115200bpsでポートを開けます。


ログイン

USB-UARTをRaspberry Piに接続した状態でシリアル通信プログラムを開き、エンターを何回か押すと下記のようにログイン画面が出てきます。
OSに設定したユーザーにログインしてください。
raspberrypi login: 

ログイン後に画面の大きさを合せる

ログイン後の標準の表示領域は24x80で、シリアル通信プログラムを広くしていてもその区画内で描画が折り返されます。


resizeというコマンドでシリアル通信プログラムで開いている画面の大きさに表示を合わせられます。

resizeは標準では入っていないのでaptでインストールして使います。
sudo apt install -y xterm

インストールできたらresizeコマンドを実行すると描画領域が表示している大きさに合います。
resize


参考:
Raspbian terminal does not support console-resize
resize

ログイン後の画面に色を付ける

ログイン後の標準画面ではほとんど色付けされてない画面が表示されます。
下記のコマンドを実行するとssh接続やモニタを繋げてログインした時のように色づきます。
export TERM=xterm-256color; source ~/.bashrc


参考:
[メモ] RaspberryPi へ シリアル接続時の画面サイズとか変更(USB-UARTケーブルでPCから)

おわり

\rが処理されるシリアル接続プログラムでrapsberry piのuartログイン画面を開き、コマンドで表示画面の大きさに描画領域を合わせと色付けができました。
sshログインしたときと遜色ない表示を有線接続でも実現できて嬉しいです。

参考

RPi Serial Connection
Raspbian terminal does not support console-resize
resize
[メモ] RaspberryPi へ シリアル接続時の画面サイズとか変更(USB-UARTケーブルでPCから)

0 件のコメント :