暑いです。暖かいではなく暑いです。そんな気温に昨日はなりました。また大規模な磁気嵐が発生し、IonoProbは真っ赤っかな表示になっております。ハイバンドもいまいちですね。
そんなこともあり、最近流行のChatGPTを使ってArduinoでCI-Vからのデータを受取、I2CのLCDに周波数を表示するソースコードを作ってもらいました。
これがその結果です。
ICOM CI-Vはシリアル通信を利用しており、ArduinoのSerialライブラリを使うことで通信することができます。また、I2C接続のLCDは、ArduinoのWireライブラリを使って制御することができます。以下のサンプルコードは、ICOM IC-7300トランシーバーと通信し、その周波数をI2C接続のLCDに表示するものです。
“`
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
Wire.begin();
lcd.init();
lcd.backlight();
}
void loop() {
Serial.write(“FA?\n”);// 周波数の取得をリクエスト
delay(100);// 応答が返ってくるまで待つ
while (Serial.available() > 0) {
char c = Serial.read();
if (c == ‘;’) {
String freq_str = Serial.readStringUntil(‘;’);// 周波数を文字列として取得
float freq = freq_str.toFloat() / 1000000.0; // MHzに変換
lcd.setCursor(0, 0);
lcd.print(“Freq: “);
lcd.print(freq, 2);// 2桁で表示
lcd.print(” MHz “);
}
}
delay(1000);// 1秒間隔で更新
}
“`
なお、ICOM CI-Vの接続には専用のケーブルが必要であり、そのケーブルはArduinoのシリアルポートと接続する必要があります。接続方法については、ICOMのマニュアルなどを参照してください。
IC-7300は持っていないので、IC-7100で試しました。
凄いじゃないですか。条件さえ提示すればAIが勝手にソースコードを作ってくれるんです。これを見たときは素晴らしいと思ったのですが、実際にコンパイルして使用してみるとLCD表示には何も表示されませんでした。
ソース見ていて気がつきました。当然ですよね、CI-Vで最初に送るコマンドを送っていないのですから、リグの制御はできていないしコマンド打っていないのだからコマンド返ってこずに表示もできません。
ちょっとガッカリしました。
自分で組んだソースではこのように動作しております。しかし、たまに表示がおかしくなるので、その辺を直さなければいけないのですがね。
I2CでLCD表示を言う要求をしたらこんなソースが来ましたが、もう一度要件定義をしっかりしてChatGPTにリクエストしてみたいと思います。
新しいアンテナ切替器をICOM BUSからCI-Vに変更しようとしておりますので、その部分のプログラムで参考にしようとして、流行のChatGPTを使ってみようと言う気になりました。
ChatGPTは何も知識がなくても、条件さえしっかり出せばソースコードを書いてくれるので非常に助かります。今回のCI-Vの制御部分はいまいち上手くいかないので、助けを求めた次第です。
凄い時代になったものですね。