pySerial をコマンドラインで使う
Posted on Mon 11 March 2019 in misc

Raspberry Pi を操作するためにシリアル通信を使いたいと思います。たいした理由はありません。HDMI 接続のディスプレイをもっていないからです。
せっかく Python を使うので、 pySerial を使ってみたいと思います。
まず、 venv で仮想環境をつくって有効にしておきます。
その上で、 ドキュメントどおりに
pip install pyserial
これでインストールはされました。
とりあえずループバックで試したいので、USB シリアル変換アダプタを PC の USB ポートにつないで、TX と RX をつなぎます。
そうしておいて、 miniterm.py を起動します。
miniterm.py /dev/ttyUSB0 115200
するとエラーです。
could not open port '/dev/ttyUSB0': [Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0'
sudo を付けてみます。
sudo miniterm.py /dev/ttyUSB0 115200
エラーです。
sudo: miniterm.py: command not found
次のようにも起動できるので試します。
sudo python -m serial.tools.miniterm /dev/ttyUSB0 115200
エラーです。
/usr/bin/python: No module named serial.tools
デバイスファイルのパーミッションを変更すれば使えるかもしれませんが、めんどくさそうなのでやりません。そうすると、venv の上では動かないように思います。
venv なしで pySerial をインストールして動かしてみます。Ubuntu 18.04 では Python3 用の pip はインストールされていません。 python3-pip をインストールしておきます。
Ubuntu の場合は インストールに pip3 を使います。
pip3 install pyserial
デバイスファイルのパーミッションがないのは、さっきと同じなので sudo を付けてみます。
sudo miniterm.py /dev/ttyUSB0 115200
エラーです。
sudo: miniterm.py: command not found
これではどうか。
sudo python3 -m serial.tools.miniterm /dev/ttyUSB0 115200
起動しました。
--- Miniterm on /dev/ttyUSB0 15200,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
キーボードを叩くとターミナルに文字が表示されます。RX と TX をつないであるのでループバックします。つながっていないと何も表示されません。
動きはしましたが、Linux ではシステムが Python を使っていたりするので、仮想環境無しでパッケージをインストールするのはちょっといやな感じがします。目的は Raspberry Pi を操作することではあるので、他のソフトウェア、例えば minicom とかを使ってみようと思います。