以前にもこの機器については紹介している。PICを使って、CR2032のボタン電池のケースの中にピエゾ素子を組み込んだ胸骨圧迫心肺蘇生のタイミングを指示するものだった。小さくまとめることは出来たのだが音が小さく、実際の訓練では周囲の音が大きく使い勝手が良くなかった。そこでもっと大きな音が出るものに改造することにした。
ピエゾ素子をケースに入ったものにすることである程度の音量が確保できる。ピエゾ素子のケースと電池のケースでマイコンをサンドイッチにする構造を考えた。また、音だけでなく光によってタイミングを示すのが訓練には有効だったので、その機能も付加することにした。(聴覚に障害のある方への指導でも光は有効である)
今回はPICではなくATiniy202を使うことにする。プログラムは最初から作らなければならない。そこで、ネット上の生成AIに助けてもらうことにした。MSNのEdgeに組み込まれているCopilotというAIである。
「1分間に110回のタイミングを表示する機能を」というリクエストをするとすぐにスケッチを示してくれた。しかし、矩形波の発振でLEDがピカリ、ピカリと点滅するものだった。こちらの意図が伝わっていないようだ。Copilotとのやり取りを繰り返し、100ms音と光が出て445ms休止をするというスケッチにたどり着いた。1分=60000msなので110で割れば545ms毎に動作をすればよいのだ。このアルゴリズムでスケッチを書いていく。そしてArduinoIDEでコンパイルしnanoに書き込んで動作させるとしっかり1秒に110回のタイミングを示してくれた。
ところが202に書き込もうとするとコンパイルができない。いろいろエラーが出てしまい、AIに聞いてみると答えを返してくれた。使っている関数が202では使えないようだということになり、その関数を定義するという解決策も示してくれた。しかし、コンパイルが通らない。AIからは全体のスケッチが再度示され、これで通るはずだと言われてしまう。それまでキーボードから打ち込んで自分なりにスケッチを書きこんでいたのだが、AIの示してくれたスケッチをコピペしてみた。するとコンパイルが通ったのだ。気づかないうちに文法的なミスをしていたようだ。(笑い)
202に書き込む。記憶容量の37%程しか使っていない。動作を確認するとLEDは点滅するが音が出ない。ピンアサインが違うのだろうか。もう一度データシートを見直すとPORT PINとANALOG/DIGITALのPINでは番号が異なっていることに気づく。スケッチではdigitalWriteとanalogWriteを使っているのでPORT PIN の番号ではいけなかったのだ。接続を正して動作を確認することができた。
動作を確認するとLEDと音の出ている時間が若干長いように感じる。100msを50msに変更した。また、組み込みの際配線がしやすいように使用するピンの番号を変更し、予定していた形に組み上げることができた。
今回、生成AIに相談を繰り返すことで、スケッチのマニュアルを見ることなく作業を進めることができた。AIに分かるように問いかけることが難しい。そのためこちらが望むことをすぐに返してくれるわけではない。やり取りを繰り返す中で徐々にこちらの意図に近づいてくれる。やはりツールとして利用するという位置づけで活用すべきであろう。
小さなタイミング表示機ができあがった。巨大地震注意が出されたり自然災害の多発の中で防災への意識も高まっている。多くの人に救命救急講習が知られるようになってきている。このガジェットが訓練で活躍する機会も増えそうだ。