Icom無線機用 外部Sメーター(CI-V + Arduino)
必要な部品と材料
- Arduino UNO × 1
- 単回転ポテンショメータ 10kΩ × 1
- 抵抗 10kΩ × 1
- 抵抗 4.75kΩ × 1
- ダイオード 1N4148 × 1
- コンデンサ 10µF × 1
- フェライトコア (ラウンドケーブル用) × 2
- 3.5mm (1/8インチ) コネクタ × 1
- Icomチューナーコネクタ (PC電源用コネクタを加工) × 1
プロジェクト概要
この回路は、Arduino UnoまたはNanoを使用して、Icom無線機にCI-Vコマンドを送信し、信号情報を要求し、応答を読み取り、変換してアナログ出力に表示します。ここにアナログ(アーソンバル型)Sメーターを接続できます。
電源はIcom無線機のアンテナチューナーポートから供給されます。お使いのIcomにチューナーポートがない場合は、+12V出力(最低200mA)を持つ他のポートやコネクタ、または外部DC電源を使用できます。
アンテナチューナーコネクタがない場合は、PC用電源コネクタを入手し、ニッパーで削ってIcomチューナーコネクタの形状に合わせることができます。
このプロジェクトはIcom IC-7000トランシーバー向けに設計されていますが、CI-Vポートを持つあらゆるIcom無線機に適応可能です。
一部のIcom無線機ではCI-V「00」ユニバーサルアドレスが使用できるため、コード内のCI-Vアドレスを変更せずに、あらゆるIcom無線機でこのコンバータを使用できます。
入力・出力ケーブルにフェライトコアを装着し、RF誘導を防止しています。Sメーターへの+12V DC供給は必須ではありません。メーターのバックライトやその他のオプション機能の電源として使用できます。
10kΩポテンショメータは、信号出力を減衰させ(ほとんどのアナログメーターには出力が高すぎるため)、強力なローカル信号(+60 dB)でフルスケールになるようにアナログメーターを校正するために使用します。
ArduinoをCI-Vインターフェースとして使用する類似プロジェクト:
コード
- Icom CI-V S-meter
Icom CI-V S-meter (C/C++)
// IC7300 Sメーター読み取り等のテストベッド
// by Luc Decroos - ON7DQ/KF0CR
// modified & adapted by Daniel VE2BAP, 2018-12-01
#include <SoftwareSerial.h> // IC7000との通信用
#define BAUD_RATE 19200 // CI-V速度
#define TRX_address (0x70) // HEX $70 = Icom IC-7000
//#define TRX_address ((byte)00) // $00: Icomユニバーサルアドレス(全無線機で動作)
// シリアル接続
// RX = Icom無線機 → Arduino: ピン2へ、4.7kΩ抵抗経由
// TX = Arduino → Icom無線機: ピン7へ、ダイオード1N4148経由、3.5mmコネクタ先端で10kΩプルアップ to Vcc (5V)
SoftwareSerial mySerial = SoftwareSerial(2, 7); // (RX, TX)
int readCounter; // 無線機から受信したバイト数カウント
int sMeterVal1; // 信号情報を含む最上位BCDバイト
int sMeterVal2 // 信号情報を含む最下位BCDバイト
int sMeterOut = 11; // 外部アナログSメーター接続ピン
void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, LOW); // LED(ピン13)を強制消灯
pinMode(2, INPUT); // IC7000からのCI-Vシリアル通信
pinMode(7, OUTPUT); // IC7000へのCI-Vシリアル通信
pinMode(sMeterOut, OUTPUT); // Sメーター出力ピン設定
mySerial.begin(BAUD_RATE);
mySerial.listen(); // ソフトウェアシリアルでは1ポートのみリスン可能
while (mySerial.available()) mySerial.read(); // バッファクリア
}
void loop() {
// Sメーター値の読み取りと表示
mySerial.flush();
// 開始シーケンス: 無線機に「Sメーター読み取り」コマンド送信
mySerial.write(0xFE);
mySerial.write(0xFE);
mySerial.write(TRX_address);
mySerial.write(0xE0);
mySerial.write(0x15);
mySerial.write(0x02); // Sメーター読み取りコマンド 15 02
mySerial.write(0xFD); // 終了シーケンス
delay(20);
// 無線機からの情報読み取り
int nbChar = mySerial.available();
if (nbChar > 0) {
for (int readCounter = 0; readCounter < nbChar; readCounter++) {
byte byteRead = mySerial.read();
if (readCounter == 6) {
sMeterVal1 = ((byteRead / 16 * 10) + (byteRead % 16)); // 1バイト目: BCD→10進変換
}
if (readCounter == 7) {
sMeterVal2 = ((byteRead / 16 * 10) + (byteRead % 16)); // 2バイト目: BCD→10進変換
analogWrite(sMeterOut, ((sMeterVal1 * 100) + sMeterVal2)); // Sメーター値計算・出力
delay(20);
}
}
}
}
カスタムパーツとケース
プロジェクトページにケースの写真複数枚があります。
回路図

製造プロセス
- 体外式除細動器:歴史、設計、製造
- ラジオ技術の進化と工学
- ティッシュローション:快適性と性能を高める柔軟化技術
- Raspberry Piでサーバークローゼットの温度を正確に監視
- スマートブラインド:Arduinoとソーラー電源で実現する自動光制御
- Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
- 3Dプリントで作るコンパクトMIDIドラムキット
- E3.Series:ハイパーリンク付き外部PDFでプロジェクトドキュメントを効率化
- Xilinx、5G無線向け高性能・高電力効率ハードIP「Zynq RFSoC DFE」を発表
- ルネサスとeProsima、RA MCU向けmicro-ROS移植でROS 2ベースロボティクスを実現
- Acceed IGS-9822DGP:4 SFPポート搭載12ポートギガビットスイッチ – 高性能産業用ネットワークソリューション