この記事はrogy Advent Calendar 18日目の記事です。
どうも15ののも(@nomotech)です。
少し遅れてしまったけどみんなが起きるまではセーフだよね。
去年は自作エンコーダについて書きましたが、今年は自作シリアルモニタについて書きます。
AssistSerialMonitor
シリアルモニタとは
シリアルモニタとはマイコンなどから送られて来るserial通信をPC側で見るアプリです。
代表的なものだとteratermやMacだとscreenといったもので、ロボットや電子工作を作っている人はデバックに欠かせないものですよね。
このシリアルモニタは大抵送られてきたデータを表示する程度の機能しかありませんよね、そこで私はロボットのデバックがはかどるような機能を盛り込んだ自作のシリアルモニタを開発したわけです。
AssistSerialMonitor
概要
- シリアル通信のlogを表示したり、データをもとにプロットしたりできます。
- 受信だけでなく送信もでき、logはtxt形式で保存することができます。
- chrome 拡張機能として作られたアプリです。chromeが使えるならばWindows,Mac,Linux環境を問わずに使うことができます。
- ソースコードはここです。
- MITライセンスです、自分用に改造して使ってみてください。
導入方法
-
- 1. ここからzipをdownloadしてきます。
-
- 2. 好きなところに展開します。
- 3. chromeで chrome://extensions/ を開きます。
- 4. デベロッパーモードにチェックを入れて、パッケージ化されていない拡張機能を読み込むで先ほっど展開したフォルダを選択する。
- 5. SerialMonitorが追加されたら起動を押す。
機能紹介
1.受信機能
- まずは標準的な受信機能です。
- シリアルポートとboudrateを設定してconnectを押すと接続されます。
- 接続してもポートが認識されていないときはboudrateの隣にあるリロードボタンを押します。
- データlogは下の枠内に表示され、自動スクロールされます。
- 前のデータを観たいときはスクロールすると上の方のデータをもう一度見ることができます。
- clearボタンでデータを削除することができます。
- 受信を止めたいときにはdisconnectボタンまたはstopボタンを押します。二つのボタンは連動していて機能は変わりません。
- 検索欄に文字列を入力すると受信データでmatchした文字列にHighlightを付けます。
- 正規表現での検索も可能です。
- 同時に二種類の検索をすることができます。
- HighLightの色も10色から選ぶことができます。
- option機能で受信したデータの数字部分を10進数から2進16進数に変換することができます。
- 文字列も含めて受信データをすべて2,10,16進数に変換することもできます。
- option機能として受信時のtimestampをミリ秒単位で表示することができます。
- saveボタンを押すことで名前を付けて保存することができます。
- デフォルトのファイル名は現在時刻になっていて、保存を連打しても名前かぶりをしないため急いでいるときに意味に便利です。
2.送信機能
- 受信だけでなく送信もすることができます。
- optionで2,10,16進数でも入力が可能です。
- 受信boxの下のoptionの中のshow send logを押すと、受信logの中に赤色の背景で送信logを表示させることができます。
- 送信データとそれに対するresponseを確認するのにべんりです。
3.グラフ機能
受信データをもとにvisualizeする機能です。
実装予定は
- 1.Map
- 2.折れ線グラフ
- 3.棒グラフ
- 4.円グラフ
Map
-
- まだ未完成です。
- 送信データを『r:x座標:y座標:角度(rad)』で送信するとmapに座標をvisualizeします。
- 初めの文字をr,b,y,gの四つから選択することでそれぞれ赤、青、黄色、緑のmarkerを動かすことができます。
- 4つまでのmarkerを同時に表示することができます。
- Rotateボタンを押すとmapを回転させることができます。
- 自分の見ている座標系を変えたいときに便利です。
折れ線グラフ
未実装
速度加速度をグラフで確認したいときに便利そう。
棒グラフ
未実装
円グラフ
未実装
今後実装予定の機能
-
-
-
- 自動保存機能
- 折れ線グラフ
- 棒グラフ
- 円グラフ
- mapの背景に任意の画像(フィールド図面とか)を表示できるようにする
- 受信データにmapに任意の図形を描画できるフォーマットを作る(ロボットが検知した障害物や壁とかを表示したい)
- 複数のシリアル通信を同時接続
-
-
などの機能追加を考えています。
これほしいと思う機能があればgithubのissueに追加してくれれば、気に入った機能に関しては実装します。
AssistSerialMonitorぜひ使ってください。
†明日†は shr_em君 の記事です。
chromeでシリアル通信できるのは画期的ですね(^^)
クラウド環境でPICやARMの開発をし、そのまま通信テストやロギングが出来ちゃうのは便利そうです。
早速リクエストなのですが、マイコンボードのRTCモジュールの時刻設定って地味にめんどいので、送信文字列中に時刻を挿入できる機能があると便利かもです(私は時刻合わせ専用の激安arduino互換機とポンコツ自作ソフトwを使ってます)。
例えば、”XX $TIME”(XXはコマンド文字で$TIMEは現在時刻の意味)って入力して送信ボタンを押すと、”XX 07:10:30″と送信されるような仕組みがあると嬉しい人がたくさんいると思います
(私だけだったらごめんなさい)。
よろしかったらご検討ください。
ではでは、皆様のもとに素敵なサンタさんが訪れますように
コメントありがとうございます
気が付かなくて申し訳ないです
近いうちに機能追加アップデートをする予定なので時刻フォーマット検討させていただきます
素晴らしいアプリですね!
リクエストなのですが、ロボットが自己位置推定した座標を送信してプロットする機能に、ある決められた区画(マイクロマウスの競技フィールドなど)をきちんと走行したかをみるために壁のプロット(例えば通信の初期化時)がグラフに反映されるとロボットの自己位置推定がきちんとできているかのデバッグが現場にいなくても確認できると思います。
よろしくお願いします。
はじめまして。
突然ではございますが、デジタルマーティングの分野に従事しております高梨と申します。
今回こちらの記事を拝見し、電子部品関係クライアントの一般記事の執筆、記事内での電子部品の紹介等をご依頼させていただければと思いご連絡させていただきました。
もしよろしければ詳細についてメールにてご説明をさせていただければと思っております。お忙しいところ恐れ入りますが、一度ご連絡をいただけましたら幸いです。
お返事心よりお待ちしております。
高梨 百合