manahiyoの気まぐれ

備忘録を兼ねたブログです。

ChatGPTのプラグインでtinySA-ULTRAを操作してみた

はじめに

以前からChatGPTで会話だけでなく、何か外部の機器を操作でないものかと考えていました。先日発表された「Function Calling」を使うことで外部とのやり取りができるということで、試してみました。ただ、この場合は一つのプロンプトに対して1回しか関数が呼ばれないようで、まとめて指示ができないという、いまいちな結果でした。

そんなか先日waitlistに登録していたプラグイン開発の通知が届き、プラグインであればいろいろ融通が利きそうであることから、この機会にやってみました。

今回はローカル動作での実験レベルですが、いろいろ応用がありそうです。

ここではChatGPTからtinySA-ULTRAにUSB経由でコマンドを送り、電波測定をさせてみます。

www.tinysa.org

プラグインの作り方を学ぶ

下記にopenAIのチュートリアルがあり、web上でもたくさん試している人がいたので情報も豊富です。

platform.openai.com

サンプルのtodoプロジェクトをベースに改造をしていきました。

はじめは周波数設定のコマンドのファンクションを作るといったことをやっていましたが、途中からコマンド自体からChatGPTに考えてもらったほうが楽ということに気が付き、作るのは下記2つのファンクションにしました。

・tinySAにコマンドを送る

・tinySAの画面をキャプチャする

本来はシリアル通信も環境によりポートが違ったりするのでいろいろほかにも必要ですが、まずは実験的というところで最小限です。

tinySAを操作してみる

コマンド情報をwebから得るために、WebPilotのプラグインをONにしています。

では測定内容を指示します。

回答はこちら。ちゃんとコマンドも送ってくれています。

デバッガで見ると実はコマンドの書式が間違っていて、設定ができていません。コマンドも一部不要など、この辺りはいつもの通り指摘が必要です。

それを指摘したうえで、FM放送の信号を見るために70M-100Mに設定してもらいました。

今回はちゃんとtinySAの周波数が70M-100Mに設定され、マーカーがピークになっています。

やってる感を出すのに、どうしてもキャプチャ画像をChatGPTの回答に出したかったのですが、初めはやり方がわからず、すこし苦労しました。下記を参考にして解決しました。わかってしまえば簡単ですね。

github.com

ちょっと応用

せっかくChatGPTを使っているので、測定するだけでなく、どこのFM放送局か調べられるのではないかと試しました。ただ直接依頼しただけではちょっと難しいようでした。

そこでFM放送局の周波数が書いてあるサイトを提示したところ、特定してくれました。

感想

現状ではChatGPTの応答が遅く、手で操作したほうが早いので、今すぐ実用になるかというと微妙かもしれません。ただ、測定器とChatGPTの連携により次のようなメリットが考えられます。

  • とにかく指示が楽。曖昧だったり間違えることもありますが、プログラムのように厳密でないので、文法を怒られることもありません。「さっきと同じ手順で、とか、もう一回」といった言い方で指示できるのはほんとにアシスタントという感じです。
  • 細かい設定内容がメニューのどこにあるかわからずに探すのに時間がかかったりよくします。マニュアルをChatGPTに読ませておくことでこんな苦労は不要になります。
  • 例えばスプリアスを確認したいといった抽象的な依頼もChatGPTが手順から考えてコマンドまで落とし込んで勝手にやってくれそう。
  • ChatGPTが翻訳してくれるので、言語の壁がない。ちなみにこのプラグインは英語ですべて定義していますが、上記の通り日本語で使えます。
  • 上記の放送局検索のように、測定器の枠を超えて、あらゆるものをつなげることができる。ここはアイデア次第でしょうか。

 

これは将来便利になりそうです。もちろん機器に対する知識があることが大前提ではありますが。。。

 

下記に動画追加しました。英語でやってみましたが、コマンドの生成は英語で直接指示したほうが精度はいいようです。

youtu.be

 

追記2

前回の動画を作成した後、ブラウザの拡張機能で音声入力ができることに気が付き、試しました。もう測定器も音声でコントロールができる時代ですね。ただ、あっという間にGPT4の回数制限にかかってしまうのがなんとも厳しいです。。。

youtu.be