生成型AIでArduino-NANOの MLA用ATUのスケッチを作ってみた
しばらく遠ざかっていたが、生成型AIが賢くなっているという話を聞いて、Arduino NANOのスケッチが描けるか試してみた。 今回はChatGPT、Copirot を無料アカウント状態で使用した。 今、製作しているMLA用のチューナを題材にした。
DDS内蔵で信号発生し(パワー微少で調整)、真空バリコンをステッピングモータで調整して、VSWR最小点にチューニングする。 信号発生、モーター制御、最良VSWR調整である。
さて何処まで出来るか以下の機能仕様書もどき?を作成して投げてみた。
=================================================
1.バリコンをモーターで回してアンテナを自動チューニングするコントローラを作ります。
2.マイコンはArduino-NANOを使います。
3.調整用信号発生DSSモジュール、ステッピングモータコントロールモジュール、LCD表示モジュール(16字x2行)、を繋ぎます。
4.ポートの割り付けは以下の通りです。
5.LCDモジュール SCL:A5, SDA:A4
6.DSSモジュール AD9833使用 SCK:D13, SDATA:D11, FSYNC:D10
7.周波数設定はロータリーエンコーダを使う:CLK:D6, DATA:D5。 桁切替えは押しボタンスイッチ:D7
8.動作周波数はKHz単位でLCDに表示する。変更できる桁にカーソル表示をする。動作周波数範囲は1MHz~9MHzの範囲である。XXXX.X kHz と表示する。変更可能のの桁は100kHzと0.1kHzの二箇所のみで良い。LCD上段に周波数、下段に動作状態 を表示する。
9.ステッピングモーターコントローラに CW信号でCW回転、CCW信号でCCW回転、いずれもLowでアクティブ。10msec単位の信号で回転する。連続させれば回転を続ける。20秒以上は連続動作させないこと。高速/低速制御はD4で切替。Hi:低速。動作方向をLCD表示する。CW:> CCW:<
10.VSWR反射信号強度を0~5V電圧で入力する。A1ポート。0.3V以下を目標にチューニングする。
11.バリコンの回転位置をポテンショメータ電圧で入力する。A7ポート。0.2V~4.8Vで動作限界とし、これを越えて制御しないこと。
【動作】
1.チューニングしている間はDSS周波数は変えられない。
2.アイドリング中に周波数の設定ができる。
3.スタートトリガボタン:D3 lowでチューンスタート。TUNE中はTUNINGと表示。
4.2秒以上長押しでチューン放棄。チューン動作放棄。放棄時のVSWR値で、 TUNE:VSWR 値を表示して,アイドリングに戻る。
5.スタートしたら、回転方向を探るため微少回転させてみてVSWRが下がる方向に回転スタートする。この時も動作(回転)限界を踏み越えないこと。
6.VSWRが0.5V以下ではモータ速度を低速にして微調整動作とすること。
7.回転位置リミット値を踏み越えないこと。A7:0.2/4.8V
8.VSWR値が0.5V以下にならずに下降から上昇に転じたらその反転位置あたりを微調整して最良値を探る。
9.VSWRが0.5V以下にならないときはもう一度TUNE動作して同じであれば放棄する。
10.VSWRが0.3以下になったらその周辺で1往復して最良値を探ってTUNE終了する。最後まで探り続けなくて良い。
こんな感じでARDUINO-NANOのスケッチを作ってみてください。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
【ChatGPT】での結果
十数秒?でスケッチ第一弾が出力された。 百数十行のスケッチが出来てきた。(これは驚きだった)
ところがいくつかの機能が実装されてないと言うので、全部書いたとおりに実装して,コメントも詳しく入れてとお願い・・。
1分もかからず出力された。コメント付きで約240行。見やすいフォーマットになっていて,プログラムのモジュール化もできている。機能仕様の理解も正当に出来ている。 ロジックも分かり易い。(けっこうやるじゃん・・・)
ざっとスケッチを見た限り、動きそうな?気がする。
で、気を良くして同じ問題をCopirotに投げてみた。
【Copirot】での結果
これは数十秒で第一弾スケッチが出てきたが、これもいくつかの機能が入っていないと言うので、全部実装してと、お願いした。
コメントも入れるようにお願いした。 エラーが出たとか言いつつ勝手に2,3度やり直していたみたいだが、Pythonで書いちゃったとかトンチンカンなコメントがあったりして、最後に出てきたスケッチは170行程度のもの。
かなり小間切れのモジュールになっていて、仕様書で書いたことは項目としてはスケッチには入っているようだが、ロジカルな流れとして、全体が動くような気がしないと感じる。 (いまいちという感じかなぁ・・・)
モータの制御もどうも抜けがあるようだ。
押しボタンだけでモータが動くと理解せず、ステッピングモータライブラリを引っ張り出してきた。(仕様書が甘かった?)
このままでは多分動作しないであろう。
定数やピンの定義も抜けがあるように見える。(ChatGPTの方はこうした定義がきちんと整列して記述されたスケッチだ)
ここまでの勝負はChatGPTのぶっちぎり快勝。(一日の長と言うことか?)
出てくる質問が、ChatGPTの方が具体的で適確である。また次に何をしましょうかという提案が具体的で理にかなっている。
今回はコンパイルをしたり,逐行で動作を追ったりはしていない。
それぞれ得意分野とか、得意作業があるのでしょうが、HAMの電子工作などはどうもChatGPTが上手にこなすみたいだ。
添付ファイルは最後まで内容を追いつめては居ないが、何度かのやりとりの結果、出力されたスケッチの状況。
スケッチが描ける知識がなくてもとりあえずの流れや規模を理解するために、下書き程度にはなるということはわかった。
初めてコードを作ってもらったがそれなりに使える。与える情報に小さな抜けがあっても仕事はしてくれる。
大きな抜けがあれば聞いてくるみたいだ。あるいは無視してそこのスケッチは作らないのか?
何度やり直しをさせても文句は言わないのでありがたい。想像していたよりずっと使えるレベルであった。
最近のコメント