Introduction
Arduinoやmbedを使っていると、大多数の人がマイコンからシリアル通信で文字列を受け取ってコンソールとして表示すると思います。
みなさんはどうやってシリアルデバッグしていますか?
毎回ArduinoIDEを開いてシリアルモニタ使っていたり??でも起動が重いじゃないですか。
軽くてバッファがそれなりにある都合のいいシリアルモニタツールが欲しい
そう思ったので自分でツールを作りました。
背景
Arduino IDEにはシリアルプロッタが標準搭載されて便利ですよね。しかしPlatformIOなどで開発している人はそもそもデフォで都合のいいシリアルモニタついてないです。欲しい。
- ArduinoIDEでシリアルデバッグしてもいいけどArduinoIDEを開くのにはかなり時間がかかる
- terminal.appを使えば起動は早いけど
usbmodem
で始まるポート名入力するのがめんどくさい
- Serialer使いやすいけどバッファが少ない気がする(勝手にすみません)
作ったもの
Myserialというアプリケーション(ツール・スクリプト)を作りました。
これはターミナルアプリで実行するタイプのシリアルモニタです。
モニタのために重いArduino IDEを開きたくない人にオススメします。
フォーマットは
ASCI
/BIN
/OCT
/HEX
に対応しています。CSV出力もできます。使い方
0. Pythonを入れましょう(3系をお勧めします)
pyenvをおすすめしたい
1. GitHubからファイルをダウンロード
詳しく
- ダウンロード
実行しやすいディレクトリにダウンロードしたファイルたちを移動
- 僕の場合はホームディレクトリに配置しています
Myseria.py
requirements.txt
2. Myserial.py
を開いてデフォルト値を設定
csv_directory
は相対パスで指定してください。# Myserial.py default_baud = 115200 csv_directory = 'Desktop/' fileName = 'datalog'
3. ライブラリのインストール
シェルで以下を実行してください。
Macはterminal.appなどでどうぞ。
windowsはPowerShellとか?(詳しく知らない)
pip install -r requirements.txt
4. Myserial.py
の実行
一応python2.7xでもpython3系でも使えるようにしました🥺
シェルで以下を実行
python Myserial.py
5. baudrateを入力
--- Enter baudrate: 115200
6. 接続ポートの決定
--- Available ports: --- 1: /dev/cu.BLTH 'n/a' --- 2: /dev/cu.usbmodem14403 --- Enter port index or full name: 数値を入力
7. command + c
で終了
BIN,OCT,HEXでの読み取り
2進数で読み取る場合は
python Myserial.py bin
8進数で読み取る場合は
python Myserial.py oct
16進数で読み取る場合は
python Myserial.py hex
実行時のテキスト入力の省略
正直毎回python Myserial.pyと打ち込むのもめんどくさいので省略したいと思います。
Macの場合はシェルの設定で
.zshrc
や.bashrc
といったファイルがあると思います。それに以下の1行を追加します。alias myser='python Myserial.py'
パスを通し直した後に以下のコマンドを実行すると
Myserial.py
が実行されると思います。myser
CSV出力
ファイル名とCSVファイルの保存名を決めます
# Myserial.py csv_directory = 'Desktop/' # CSVファイルの保存先 fileName = 'datalog' # CSVファイルの保存名を決定
私はホームディレクトリ(
tomixrm/
)にMyserial.pyを配置していますが、デスクトップ(tomixrm/Desktop/
)にCSVの保存場所(csv_directory)を指定したいので上記のように書いています。CSVとして出力するには以下のように呼び出します
python Myserial.py csv
上記のエイリアス設定ができる場合は
myser csv
で実行できるはずです。
終わりに
作り始めたのは2019年(高校2年)でかなりの時間がたちました。
RCAPまででレベルアップしていったのでそこそこ便利なツールになったと思います。
Pythonの勉強にもなりました。
ぜひ使ってください!!!
難しい言葉
- 相対パス
- ディレクトリ
- コマンドラインツール
- エイリアス