带有 CI-V 端口的 Icom 无线电上的外部 S-Meter
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
关于这个项目
该电路使用 Arduino Uno 或 Nano 向 Icom 无线电发送 CI-V 命令以询问信号信息、读取答案、转换并将其显示在模拟输出上,您可以在其中连接模拟 (Arsonval) S-米。
它由 Icom 无线电上的天线调谐器端口供电。如果您的 Icom 没有调谐器端口,您可以使用提供 +12V 输出(至少 200 mA)的任何其他端口或连接器。也可以使用外部直流电源。
如果您没有天线调谐器连接器,您可以使用 PC 计算机电源连接器,并用切割器将其修剪以适合 Icom 调谐器连接器。
该项目是为 Icom IC-7000 收发器设计的,但它可以适用于任何带有 CI-V 端口的 Icom 无线电。
您可以在某些 Icom 无线电上使用 CI-V“00”通用地址,使该转换器与任何 Icom 无线电兼容,而无需更改代码中的 CI-V 地址。
铁氧体安装在输入和输出电缆上以消除射频感应。 S 表的 +12 V DC 不是必需的;它可用于功率计背光或任何其他可选功能。
10 k 欧姆电位器用于衰减信号输出(对于大多数模拟仪表来说太高)并校准模拟仪表以获得具有强大本地信号(+60 dB)的满量程读数。
其他一些类似的项目,使用Arduino作为CI-V接口:
https://on7dq.blogspot.com/2017/02/ic-7300-paddle-or-key-easy-solution.html
https://www.qsl.net/on7eq/en/ 点击“项目”按钮
代码
- Icom CI-V S-meter
Icom CI-V S-meterC/C++
// 用于 S 表读数和其他功能的 IC7300 测试台// 作者:Luc Decroos - ON7DQ/KF0CR// 由 Daniel VE2BAP 修改和改编,2018-12-01#include// 用于通信IC7000#define BAUD_RATE 19200 // CI-V 速度#define TRX_address (0x70) // HEX $70 =Icom IC-7000//#define TRX_address ((byte)00) // $00:Icom 通用地址(适用于所有无线电) .// 串行连接// RX =Arduino 的Icom 无线电:通过电阻4k7 到引脚2// TX =Arduino 到Icom 无线电:通过二极管1N4148 到引脚7,在3.5 毫米的尖端上拉10k 到Vcc (5V) connectorSoftwareSerial mySerial =SoftwareSerial(2, 7); // (RX, TX)int readCounter; // 计算从 radioint sMeterVal1 接收到的字节数; // 存储包含信号 info.int sMeterVal2 的最高有效 BCD 字节; // 存储包含信号的最低有效 BCD 字节 info.int sMeterOut =11; // 外部模拟 S 表连接到引脚 11。//------------------------------------ -------------------------------------------------- -------void setup(){ pinMode(13, OUTPUT);数字写入(13,低); // 强制 LED(引脚 13)关闭。 pinMode(2, 输入); //来自IC7000的CI-V串行通信 pinMode(7, OUTPUT); // CI-V 串行通信到 IC7000 pinMode(sMeterOut, OUTPUT); // 设置 sMeterPin 输出 mySerial.begin(BAUD_RATE); mySerial.listen(); // 只能让一个端口监听软件串口 // 参见参考 https://www.arduino.cc/en/Reference/SoftwareSerialListen while (mySerial.available()) mySerial.read(); // 清理缓冲区}//---------------------------------------- -------------------------------------------------- void loop(){ // 读取并显示 S-meter 值 mySerial.flush(); // 开始序列:向收音机发送“读取 S 表”命令。 mySerial.write(0xFE); mySerial.write(0xFE); mySerial.write(TRX_address); mySerial.write(0xE0); mySerial.write(0x15); mySerial.write(0x02); // 读取 s-meter ,命令 15 02 mySerial.write(0xFD); // 结束序列延迟(20); // 现在从收音机读取信息 int nbChar =mySerial.available(); if (nbChar> 0) { for (int readCounter =0; readCounter
定制零件和外壳
示意图
制造工艺