ChatGPTに相談しながら、簡易オシロスコープを作ってみた
なんとなく「オシロスコープ欲しいな」と思ったのですが、思いつきで買うにはちょっともったいないなと。
そんなときに思い出したのが、ノリで買ったまま活用せずに埃をかぶっていた Arduino LEONARDO。

最近よく調べ物に使っているChatGPTに尋ねてみると、「できますよ」とのお返事。
しかも方法の案まで提示してくれるので、「これ、指示通りに進めればオシロスコープ作れるんじゃね?」と思い、何にも知らないけれどチャレンジしてみることにしました。

なお、この記事では「こうすれば作れる」という詳細な手順までは書いていません。
どちらかというと「ChatGPTとやり取りすれば、こんなものまで作れるんですよ」という雰囲気でまとめています。
1.方向性を決めてみる
今回は、鉄道模型の電圧を対象(12V)として、WindowsPCで波形を確認することをゴールに設定しました。
基本的には、ArduinoでA/D変換してシリアル通信にてWindowsPCへ電圧のデータを送信するようです。
となると、WindowsPC側でも波形を表示する窓を用意する必要があります。
フリーソフトでもいいかなとも思ったんですが、Pythonってなんか聞いたことあるなと思い、Pythonを使った波形の描画にチャレンジしてみることにしました。

ただ、最初は「Arduino」としか書かなかったので家に転がっているLEONARDOでも大丈夫か心配になり確認したところ、可能であるとのお返事。性能の説明までしてくれました。

2.Arduinoにコードを書き込んでみる
まずは、電圧をArduinoにA/D変換してもらうためにコードを作成。
コードはもちろんChatGPTに書いてもらいました。知識ないもんね。
書いてもらったコードには説明も書いてあって後々の修正も可能だし、勉強にもなりますね。

Aruduino自体使うのは久々でAruduino IDEも持っていない状態でした。
使い方も完全に忘れてしまっていましたが、ChatGPTはアプリの使い方も説明してくれるため、サクッと進めることが出来ました。
そんなこんなで書き込みが完了。つないだまま放置します。

3.Pythonスクリプトを作ってみる
Pythonとはプログラミング言語の一つで、文法がシンプルで入りやすい言語だそうです。聞いたことはありますが手を出すのは初めてです。
ということで、インストールする段階から始まりました。

今回、pyserial + pyqtgraphを使用するそうで、ライブラリを色々とインストールする必要があります。
インストール方法はブラウザから落としてくるのではなく、コマンドプロンプトを使用していインストールを行いました。

苦労はしましたが、出たエラーとかうまく行かない場合の方法についてもエラーコードや状況を食べさせるとChatGPTは対案を提示してくれるので、ググって何とかしていた時代よりも格段に便利になったなと思いますね。
とはいえ、堂々巡りになることもしばしば…
そんなこんなで何とか必要なものを取り揃えることが出来ました。
Pythonってなんか仰々しいものなのかなと思ったんですが、とりあえずメモ帳さえあれば今回は戦えるようです。
ChatGPTに書いてもらったコードをメモ帳にペーストし、拡張子を.pyで保存するとスプリクトが完成するようです。

で、すぐに動くのかと思ったらそんなことはなく、立ち上げ後にすぐに落ちてしまう事象が発生。
ログを食べさせたら描いたコードが古かったとの返答があり、対案について提示してもらい修正。

無事、オシロスコープが立ち上がりました。なお、Aruduino IDEにAruduinoが繋がっている状態では立ち上がらないらしいので注意。
まだ、Aruduinoには何も繋いでないので0のあたりを波形がちょろちょろと動いていました。

グラフの見方は以下の通り。
横軸:秒(ms)
縦軸:電圧(V)
スケール:0〜15V で固定表示
4.回路を考えてもらう
Arduinoに直接12Vを流すと故障してしまうため、分圧が必要になります。
この分圧回路については、ChatGPTに書いてもらいました。

ということで、これを参考に組み立てるため、パーツ屋に抵抗を買いに行きました。
しかし、店頭に27kΩの抵抗が売っておらず、他の方法があるかChatGPTに聞くと、33kΩでも良いとのお返事をいただき33kΩに変更。

5.組み立ててみる
そして実際に組み立ててみました。
とりあえず、お試しなのでブレッドボードに差し込む形で組み立てています。
測定対象は TOMIXのN-600です。
N-600は廉価版のパワーパックながらPWM制御なので、ちょうど良いテスト対象です。
いきなり作った回路をArduinoに繋ぐのは怖いので、まずはパワーパックから分圧した電圧を測ってみました。
結果は 2.79Vでした。本当は2.6Vのはずだったんですが不思議ですね。

とはいえ、問題ない電圧値なので、Arduinoに接続しました。

一応、電圧を測定してPythonのスクリプトの定数を変更しておきました。

6.動作確認してみる
パワーパックに繋いでパワーパック側のボリュームを回すとちゃんと波形が表示されました。
けっこ嬉しい。
横軸縦軸はスプリクトを修正することで調整することが出来ます。




この状態だと一時停止できないので、一時停止できるように修正を依頼すると下記のようにコードを変更するよう提案がありました。
こちらを実装するとスペースを押す事で一時停止が出来るようになりました。

7.完成

目標を達成できたので、これで完成とします。
今回は家に転がっていたArduinoを使って、お金をかけずにオシロスコープを作ってみようと何となく始めたのですが、思いのほかうまくいきました。
ChatGPTに相談してみれば、いろんなことができるんじゃないかという期待も持てました。
これからも、いろいろチャレンジしていけたらと思います。
