Внешний S-метр для радиостанций Icom: CI-V + Arduino
Компоненты и материалы
| Arduino UNO (или Nano) | 1 |
| Потенциометр 10 кОм (однооборотный) | 1 |
| Резистор 10 кОм | 1 |
| Резистор 4.75 кОм | 1 |
| Диод 1N4148 | 1 |
| Конденсатор 10 мкФ | 1 |
| Ферритовые кольца на кабель | 2 |
| Разъем 3.5 мм (Jack) | 1 |
| Разъем Icom Tuner (или разъем от БП ПК, подогнанный под размер) | 1 |
О проекте
Устройство на Arduino Uno/Nano опрашивает Icom-трансивер по протоколу CI-V, получает значение S-метра, конвертирует и выводит на аналоговый выход (PWM), к которому подключается стрелочный (арсонвальский) S-метр.
Питание: от разъема Antenna Tuner на Icom (12В, ≥200 мА). Если нет разъема тюнера — любой источник 12В/200мА или другой разъем с 12В. Разъем тюнера можно изготовить из разъема БП ПК, подрезав его.
Проект заточен под IC-7000, но работает с любой Icom-станцией с CI-V. Можно использовать универсальный CI-V адрес 0x00 — тогда прошивка универсальна без перекомпиляции.
Ферриты на входном/выходном кабелях подавляют ВЧ-помехи. +12В на S-метр не обязательны (можно запитать подсветку). Потенциометр 10 кОм аттенюирует PWM-сигнал и калибрует шкалу: на мощном локальном сигнале (+60 дБ) стрелка должна уходить в полную шкалу.
Похожие проекты (Arduino как CI-V интерфейс):
Код (C/C++ для Arduino)
// IC7300 Testbed for S-meter readout
// by Luc Decroos - ON7DQ/KF0CR
// modified & adapted by Daniel VE2BAP, 2018-12-01
#include <SoftwareSerial.h>
#define BAUD_RATE 19200 // Скорость CI-V
#define TRX_address (0x70) // HEX $70 = Icom IC-7000
// #define TRX_address ((byte)0x00) // $00: универсальный адрес Icom
// RX (Icom → Arduino): пин 2 через резистор 4.7к
// TX (Arduino → Icom): пин 7 через диод 1N4148, подтяжка 10к к 5В на кончике 3.5мм джека
SoftwareSerial mySerial = SoftwareSerial(2, 7); // (RX, TX)
int readCounter;
int sMeterVal1; // старший BCD-байт
int sMeterVal2; // младший BCD-байт
int sMeterOut = 11; // PWM-выход для внешнего S-метра
void setup() {
pinMode(13, OUTPUT); digitalWrite(13, LOW);
pinMode(2, INPUT); // CI-V от радио
pinMode(7, OUTPUT); // CI-V к радио
pinMode(sMeterOut, OUTPUT);
mySerial.begin(BAUD_RATE);
mySerial.listen();
while (mySerial.available()) mySerial.read(); // чистка буфера
}
void loop() {
// Послать команду "Read S-meter" (15 02)
mySerial.flush();
mySerial.write(0xFE);
mySerial.write(0xFE);
mySerial.write(TRX_address);
mySerial.write(0xE0);
mySerial.write(0x15);
mySerial.write(0x02);
mySerial.write(0xFD);
delay(20);
int nbChar = mySerial.available();
if (nbChar > 0) {
for (readCounter = 0; readCounter < nbChar; readCounter++) {
byte byteRead = mySerial.read();
if (readCounter == 6) {
// BCD → decimal
sMeterVal1 = (byteRead / 16 * 10) + (byteRead % 16);
}
if (readCounter == 7) {
sMeterVal2 = (byteRead / 16 * 10) + (byteRead % 16);
// Комбинированное значение → PWM (0-255)
analogWrite(sMeterOut, ((sMeterVal1 * 100) + sMeterVal2));
delay(20);
}
}
}
}
Корпус и печатная плата
Фото собранного устройства и разводки печатной платы в разделе «Custom parts» и «Schematics».
Производственный процесс
- Внешний дефибриллятор: история, дизайн и производство
- Эволюция и инженерия радиотехнологии: от Маркони до наших дней
- Мягкость салфеток: как лосьон повышает комфорт и характеристики
- Xilinx представляет Zynq RFSoC DFE — высокопроизводительное, энергоэффективное Hard IP решение для 5G радио
- Renesas и eProsima запускают micro-ROS порт для RA MCU, позволяя ROS 2-базированную робототехнику
- Acceed IGS-9822DGP: 12-портовый гигабитный коммутатор с 4 SFP — высокопроизводительное промышленное сетевое решение
- Точный мониторинг температуры в серверной на Raspberry Pi
- E3.series: оптимизация документации проекта через гиперссылки на внешние PDF
- Умные шторы: автоматическое управление светом на Arduino с солнечной энергией
- Простой ИК-датчик препятствий на Arduino: ИК-светодиод и фотодиод