Pythonを用いて、組み込み装置の通信試験プログラムを作成しました
産業分野の装置では、外部端末との通信インタフェースとして、RS-232Cに代表されるシリアル通信やGPIB(General Purpose Interface Bus)が今でも用いられています。これまでは、フリーのターミナルソフトを駆使したり、専門家にVB.NETなどの開発環境下で動作する基盤部分を作ってもらい、それを改良して使いまわしたりなどしてきました。今回、自己研鑽を兼ねてデータ分析などの分野で人気のPythonを用いて、生成AIの力を借りながらシリアル通信とGPIBの両方に対応できる通信試験プログラムを作ってみました。後々、広く使ってもらうことを想定するとGUIから操作出来ると良いなと思い、以下の本で取り上げられている、TKEasyGUIという拡張パッケージ(フリー)を用いてGUIの作成にも挑戦しました。
題名:Pythonでつくるデスクトップアプリ
著者:クジラ飛行机
ISBN:978-4-8026-1473-3
システム構成は次のようになります。エクセルシートを制御する拡張ライブラリ(openpyxl)をインポートし、Excelシートに保存された、通信の設定情報や送信コマンドをインポートし、データを送信後に装置から戻り値をシートに保存します。Windows11搭載のPCで動作しますが、Linuxにも対応してますので、Raspberry Pi5を使って安価なシステムを使って構築することも可能です。(linux-gpibドライバのインストールがちょっと大変らしく後日報告します。)
作成したGUIの例を以下に示します。Windows11搭載のPCにPythonの開発環境(IDLE)をインストールし、TkEasyGUI、pyvisa、pyserial、openpyxlといった拡張ライブラリをインポートしています。図はシリアルポートを介して接続した計測器に対して連続してコマンドを送信し、受信した結果を順次GUIに連続表示したものです。このプログラムは、Raspberry Pi5のLinux環境下でも動作すること(COMポートの設定を若干変更ました)を確認しており、汎用性の高いこともわかりました。
プログラム作成に際して、生成AI(今回使用したのはGemini)にサポートしてもらいました。困りごとを正確にプロンプトに落とし込めば、高い精度で解決策を導いてくれることが分かったことも大きな成果でした。また、Raspberry Pi5にはGPIOを持っているので、I2CやSPI I/Fを介してIoTデバイス等からデータを直接を入出力したり、ロータリーエンコーダによるステージの制御もできますので、小型機器の制御に応用できると考えております。小型機器の制御に関するご要望がありましたらお知らせください。対応させてもらいます。

システム構成図の例

GUIの例(シリアル通信プログラム)