AIの片隅で(39) Googleの生成AI、Gemini、ラズパイPicoタイマ割り込み1

Joseph Halfmoon

生成AI、Gemini様に「タイマで割り込みをするプログラムを書いて」とお願いしております。前回までに4機種のMCUについて試行。勝手判定ではGemini様の1勝2敗1引き分けデス。さて今回は人気者Raspberry Pi Picoに対してプログラムを書いてくださいとお願いしてみました。人気者だし勝利間違いなし?

AIの片隅で 投稿順index

※Google様の生成AI、Gemini(無料プランだけれども)を使ってソフトをコーディングしてもらっています。

前回までの星取り表

Googleの生成AI、Gemini様に各種シングルチップ・マイクロコントローラ(MCU、マーベルなんとかではないよ)ターゲットに「タイマで割り込みをするプログラムを書いて」とお願いしてます。Gemini様はソフトを書くのはかなりお得意に見えますが、ハード関係はちょっと不得手な様子もみられます。ハードに絡む「タイマ割り込み」は微妙。前回まで実験してきた機種とその老人の勝手判定は以下のとおりです。

    1. Arduino UNO R3、そのままコピペでArduino環境でビルドOK、実機上動作もOK、勝利
    2. Arduino UNO R4、「UNO R4」と出力されているけど、実際にはR3などのAVRマイコン向けのコードだった(R4はルネサスRA4。)当然ビルドも実行も出来ず、敗北
    3. STM32、ST社の純正開発環境STM32 Cube IDE向けに見えるソースを生成。ソースの「雰囲気」は出てるけれども、そのままコピペは無理。結局Cube IDEを自分で動かした方が早そう。敗北
    4. ESP32、Arduino環境(古いESP32のボードパッケージ装備)で動作しそうなソースを生成。しかし、当方手元のArduino環境は新しく、ESP32のHALライブラリの方が「進化」してしまっていたみたい。コンパイルからして不可。ただし互換性をとらず勝手にインタフェースを変更したベンダ側にも非がありと判定。引き分けとする。

こんな感じっす。基本的に「ネット上の情報」が厚い対象にはそれなりのご回答がいただける感じです。人気機種で人気の環境、よくあるコードであればそれないのコード。ただし最近出たばかりの機種とか、最近インタフェースが変わったとかいう対象についてはGemini様のお勉強が追い付いてないことが多いように思われます。また、他のソフトとかツール、ハードウエアを駆使するということになるとGemini様が自分で手を動かして確かめられるわけでもない(今は?)ので、的外れな回答になることもある。こんな感じでしょうかね。

プロンプトへの問いかけ

今回もプロンプトへの問いかけは茫漠としてます。

Raspberry Pi Picoで1ms毎にタイマで割り込みをするプログラムを書いて

です。ボード名称をハッキリ書いているので、まさかLinux搭載機の大きなラズパイ機向けコードを吐きだしたりしないでしょう。Pico限定でも開発環境はいろいろあり、Gemini様がどのような開発環境に対してコードを生成してくれるのか興味しんしん。

ご回答は当方の斜め上を行ってました。例によって3案を眺めることができるのですが、

回答3案全てで、C/C++とMicroPythonの2種類のソースが提案されている

当方としては、案1がC/C++だったら、案2がMicroPythonみたいな形を期待していたのですが、三案それぞれにC/C++とMicroPythonが併記されているという充実ぶりでした。なお、C/C++の方は標準のRaspberry Pi Pico開発環境(ライブラリ)用です。ラズパイ PicoにもArduino対応環境はあるのですが、今回はそちらの方は回答されませんでした。

3案といいつつ、合計6種のソースが入手できてしまったので、今回はMicroPython用に生成されたソース(スクリプト)をラズパイPicoの実機で動作させてみたいと思います。

MicroPython用に生成されたコードのまとめ

ざっくりまとめると以下のようです。

    • 案1 1ms毎割り込むが、割り込み確認の画面表示は割り込み1000回に一回の割合。実機上でフツーに動作する
    • 案2 1ms毎割り込むんで都度表示する。割り込み動作はしているが、表示頻度があまりに高いのか、キーボード割り込みを受け付けなくなる。スクリプトの中断不可。
    • 案3 ソースに挿入されているコメントは異なるが実際のコードは案2とまったく同じ。

結局、三案といいつつ、ソースは二種類。実行可能ということでは両方OKです。案2,3の方は不具合のようにも見えますが、Geminiへのプロンプト上は割り込まれた結果をどう表示せよ、といった指示をしていないのでGemini様の落ち度ではなく、当方の指示が茫漠としているためかと。そういえば、Gemini様は案3で以下のような補足をしてましたぜ。お見通し?A3note

実機実行確認に使用したMicroPythonのバージョンは以下です。RpicoMicroPythonVersion

案1のMicroPythonソースを実機上で実行した結果が以下に。A1result

ちゃんと割り込み1000回数えてメッセージを送ってきているみたい。

Gemini様はPythonお得意、MicroPythonも例外ではないっと。

AIの片隅で(38) Googleの生成AI、Gemini、ESP32にタイマ割り込みかけて へ戻る

AIの片隅で(40) Googleの生成AI、Gemini、ラズパイPicoタイマ割り込み2 へ進む