シリアルモニタを作った!!
🧑🏻‍💻

シリアルモニタを作った!!

Tags
Myserial
Software Development
Published
February 7, 2022

Introduction

Arduinoやmbedを使っていると、大多数の人がマイコンからシリアル通信で文字列を受け取ってコンソールとして表示すると思います。
みなさんはどうやってシリアルデバッグしていますか?
毎回ArduinoIDEを開いてシリアルモニタ使っていたり??でも起動が重いじゃないですか。
📌
軽くてバッファがそれなりにある都合のいいシリアルモニタツールが欲しい
そう思ったので自分でツールを作りました。

背景

Arduino IDEにはシリアルプロッタが標準搭載されて便利ですよね。しかしPlatformIOなどで開発している人はそもそもデフォで都合のいいシリアルモニタついてないです。欲しい。
  • ArduinoIDEでシリアルデバッグしてもいいけどArduinoIDEを開くのにはかなり時間がかかる
  • terminal.appを使えば起動は早いけどusbmodemで始まるポート名入力するのがめんどくさい
  • Serialer使いやすいけどバッファが少ない気がする(勝手にすみません)

作ったもの

Myserialというアプリケーション(ツール・スクリプト)を作りました。
これはターミナルアプリで実行するタイプのシリアルモニタです。
モニタのために重いArduino IDEを開きたくない人にオススメします。
フォーマットはASCI/BIN/OCT/HEXに対応しています。CSV出力もできます。
notion image

使い方

0. Pythonを入れましょう(3系をお勧めします)

pyenvをおすすめしたい

1. GitHubからファイルをダウンロード

詳しく
  1. GItHubに移動
  1. ダウンロード
notion image
実行しやすいディレクトリにダウンロードしたファイルたちを移動
  • 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'
notion image
パスを通し直した後に以下のコマンドを実行するとMyserial.pyが実行されると思います。
myser
notion image

CSV出力

ファイル名とCSVファイルの保存名を決めます
notion image
# 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の勉強にもなりました。
ぜひ使ってください!!!

難しい言葉

  • 相対パス
  • ディレクトリ
  • コマンドラインツール
  • エイリアス