1. はじめに
Tera Termを使って複数のArduinoとシリアル通信するとき,手動だと通信の確立とログ保存を台数分やらないといけないので煩雑です.
portとbaudrateを設定したTTLファイルを開けば通信の確立は容易ですが,ログ保存がやはり面倒です.
そのため,2台以上のArduinoに対して,
(1) シリアル通信確立
(2) ログ保存
が簡単にできるような方法をまとめました.
※厳密には開く順序があり数msのラグがあるかもしれませんが,今回はそこまでの精度を求めない人向けです.検証はまた後日.
2. 方法
(1) TTLファイルを用意
接続するArduinoの台数分,以下の内容を記載したTTLファイル(.ttl)を用意します.
メモ帳を開いて.txtを.ttlに書き換えるだけでOKです.
$USERNAMEはPCのユーザネームに変更してください.
; 日付取得 "2025-04-09"
getdate dateStr
;messageBox dateStr "今日の日付"
; 時刻取得 "15: 43: 21"
gettime timeStr
;messageBox timeStr "今の時刻"
; 年の取り出し(1〜4文字目)
strcopy dateStr 0 4 year
; 月の取り出し(6〜7文字目)
strcopy dateStr 6 2 month
; 日の取り出し(9〜10文字目)
strcopy dateStr 9 2 day
; 時 (:をファイル名に含めるとエラーが出るので注意)
strcopy timeStr 0 2 hour
; 分
strcopy timeStr 4 2 min
; 秒
strcopy timeStr 7 2 sec
; ファイル名構築
fileName = ""
strconcat fileName year
strconcat fileName month
strconcat fileName day
strconcat filename "-"
strconcat fileName hour
strconcat fileName min
strconcat fileName sec
; "_com4.log"を付ける(COMポート等に応じて適宜変更)
strconcat fileName "_com4.log"
; 保存するフルパス("download" フォルダに保存)
strconcat logPath "C:\\Users\\$USERNAME\\Downloads\\"
strconcat logPath fileName
; シリアル通信開始 /C:ポート /BAUD:ボードレート
connect '/C=4 /BAUD=9600'
; 通信確立したかチェック
if result = 0 then
messagebox 'COM4への接続に失敗しました' 'エラー'
end
endif
; ログ保存
logopen logPath
(2) バッチファイルを用意
以下の内容のバッチファイル(.bat)を用意します.
start
はexeを実行するコマンドです.
第1引数: ウィンドウにタイトルを付けられるのですが,不要なので""
にしています.
第2引数: ttermpro.exeが格納されているパス.
インストールされているteratermのバージョンやPC構成によってはttermpro.exeのパスが違うので,その場合は調整してください.
第3引数: /M=
の後は(1)で作成したTTLファイルのパスを記載してください.
@echo off
start "" "C:\Program Files (x86)\teraterm5\ttermpro.exe" /M=C:\Users\$USERNAME\Downloads\com4.ttl
start "" "C:\Program Files (x86)\teraterm5\ttermpro.exe" /M=C:\Users\$USERNAME\Downloads\com5.ttl
作成したバッチファイルを開くとTera Termが起動しシリアル通信を開始します.
そして設定したファイル名でログファイルが作成されます.
3. おわりに
これでバッチファイルを実行するだけでログファイルへの書き出しまで自動化されました.
めでたしめでたし.
ログ書き出しのタイミングを同期したい場合は,すべてのArduinon共通の外部トリガ用スイッチを設け,立ち上がった瞬間からSerial.println()
を開始すればいいと思います.