PDA

Просмотр полной версии : BandData decoder для Kenwood



Страницы : 1 2 3 4 5 [6] 7

Milldi
29.11.2014, 01:06
ни в одном из них нет УКВ
TS-2000 как это нет укв

UT0UM
29.11.2014, 01:11
TS-2000 как это нет укв

ну ОЙ, значит есть

Milldi
29.11.2014, 01:12
Вот тогда и 23 см надо включить, а вот 70МГц это вопрос, есть ли он в них. в 2к нету его.

UT0UM
29.11.2014, 01:13
А управление ФНЧ и ФНЧ как можно реализовать ? Или это уже из области фантастики. Выходов видимо хватит и на эти заморочки.

ну очень просто

если попадает в 1 из 14 любительских диапазонов, то включается соответствующий пин
если не попадает и частота <50МГц то 1 появляется на пине для ФНЧ
если не попадает и частота >50МГц то 1 появляется на пине для ФВЧ

ЮРИЙ UR7TU
29.11.2014, 01:25
UT0UM у меня вообще то IC 765, приемник Afedri. Программа любимая SDR Consol. Программа управляет по САТ трансивером, ну и приемником естественно. Нужно устройство, которое бы управляло полосовыми фильтрами от САТ. Я сечас использую полосовики от IC, но это "широкие ворота" слишком. Вот и возник вопрос как сделать управление полосовиками приемника . В программе есть возможность выбора модели трансивера для управления по САТ. Но я не подумал, что это должно учитываться и в ардуино. То есть основное устройство это приемник, а трансивер только передатчик. Возможно даже один приемник и 2 ТХ - один на КВ, другой на УКВ. Вот и интересуюсь возможно такое сделать или нет. И "во скоко" эти хотелки могут обойтись.

UT0UM
29.11.2014, 01:33
UT0UM у меня вообще то IC 765, приемник Afedri. Программа любимая SDR Consol. Программа управляет по САТ трансивером, ну и приемником естественно. Нужно устройство, которое бы управляло полосовыми фильтрами от САТ. Я сечас использую полосовики от IC, но это "широкие ворота" слишком. Вот и возник вопрос как сделать управление полосовиками приемника . В программе есть возможность выбора модели трансивера для управления по САТ. Но я не подумал, что это должно учитываться и в ардуино. То есть основное устройство это приемник, а трансивер только передатчик. Возможно даже один приемник и 2 ТХ - один на КВ, другой на УКВ. Вот и интересуюсь возможно такое сделать или нет.

IC765 другая система САТ команд
этот скетч не подойдет

надо подправить скетч, але потрібно мати час і натхнення

ЮРИЙ UR7TU
29.11.2014, 01:45
Я все понял. Спасибо большое за информацию. Як що в мене з"явится надхнення обов"язково звернусь до вас. :)

UA9TL
29.11.2014, 07:38
To UT0UM
С TS-450S не будет работать?

Serg
29.11.2014, 13:11
UA9TL, должно работать, у них у всех команда статуса IF есть.

UA9TL
29.11.2014, 14:32
Понял, спасибо!

Serg
29.11.2014, 14:39
Код под альдруину простой можно всегда допилить под свои нужны, к примеру попадется какой-то лог, который не через IF опрашивает статус, а отдельно VFO-A или B. Случай редкий, но не исключен.

UT0UM
29.11.2014, 15:02
To UT0UM
С TS-450S не будет работать?

будет

RU4SS
29.11.2014, 18:51
1. берем ардуинуСпасибо
Спасибо за информацию!
Подскажите, какую именно ардуину взять, что должно быть в комплекте?

UT0UM
29.11.2014, 19:11
Спасибо
Спасибо за информацию!
Подскажите, какую именно ардуину взять, что должно быть в комплекте?

любую (кроме PRO MINI - в ней нет USB порта)
больше ничего не надо

антенные реле можно подключить к пинам через транзисторные ключи или через оптопары

Milldi
29.11.2014, 19:51
маленькая котрая с USB называется PRO MICRO

антенные реле можно подключить к пинам через транзисторные ключи или через оптопары
или купить готовые блоки с промежуточным реле. 2,4,8 реле есть может и на 16 есть не интересовался.

бывают и просто с 5В реле и с опторазвязкой. По мне так этот вариант удобнее не надо заморачиваться соединил платки шлейфиком и готово.

типа таких http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2059210.m57 0.l1313.TR0.TRC0.H0&_nkw=Relay+Module+Sh ield+for+Arduino&_sacat=0

ЮРИЙ UR7TU
29.11.2014, 20:05
UT0UM, скажите а платы ардуино с USB, отличаются количеством выходов или у всех этих плат оно одинаковое ? В вопросе какой ардуино лучше видимо имелось ввиду в каком больше выходов. Выходов то надо как можно больше, на всякий случай... :)

RU4SS
29.11.2014, 20:05
А саму ардуину где выгоднее купить, подскажите ссылки!

UT0UM
29.11.2014, 20:23
UT0UM, скажите а платы ардуино с USB, отличаются количеством выходов или у всех этих плат оно одинаковое ? В вопросе какой ардуино лучше видимо имелось ввиду в каком больше выходов. Выходов то надо как можно больше, на всякий случай... :)

тогда берите Arduino Mega2560 (http://arduino.ru/Hardware/ArduinoBoardMega2560 ) там 70 выходов

а для данного проекта Arduino Nano будет в самый раз
и дешево и маленькая и выходов достаточно

только берите с нормальным USB чипом Ft232 от FTDI

а то щас много каких то китайских аналогов, а там мало ли что с драйверами

хотя они ОЧЕНЬ дешевые, стоит меньше 3-х долларов уже с пересылкой!!!
вот взял на пробу (http://www.ebay.com/itm/181591402576?_trksid =p2059210.m2749.l264 9&ssPageName=STRK%3AME BIDX%3AIT)

вот тут написано как для нее драйвер ставить (http://arduino-project.net/driver-ch340g/)

выгоднее всего покупать на ebay или aliexpress

Milldi
29.11.2014, 20:37
а то щас много каких то китайских аналогов, а там мало ли что с драйверами
там на мега8 как приавило USB to COM бывают с PL2303. или сразу с USB контроллеры стоят
конструкции проверены временем проблем нет.
а вот с FT могут быть проблемы если чип левый, новые драйвера FT портят эти чипы.

ЮРИЙ UR7TU
29.11.2014, 20:48
UT0UM спасибо за информацию. Думаю многим пригодится.

UT0UM
29.11.2014, 20:50
там на мега8 как приавило USB to COM бывают с PL2303

щас такого и не найти наверное

UT0UM
12.02.2016, 23:19
по просьбе UA9TL выкладываю последние проверенные скетчи

там стоит скорость ком порта 4800, кому надо - исправьте на свою

ur7hfo
17.02.2016, 12:01
Запустил недавно свой вариант бэнд-декодера (cat-kenwood) . Скетч писал сам. Кто не умеет , тот может взять скетчи предоставленные UT0UM.
Моя конструкция имеет два сериал-юсб порта, и может работать в связке как с компом, так и без компа.
Прототип декодера на видео:


youtu.be/y59YtnlYmC8

R2PM
17.02.2016, 12:20
Моя конструкция имеет два сериал-юсб порта, и может работать в связке как с компом, так и без компа.

Дмитрий доброе время суток!!!!
Можно посмотреть Ваш скетч, очень актуально для нового транзисторного РА.
С уважением Виктор R2PM

R2PM
01.03.2016, 11:13
Запустил недавно свой вариант бэнд-декодера (cat-kenwood) . Скетч писал сам. Кто не умеет , тот может взять скетчи предоставленные UT0UM.
Моя конструкция имеет два сериал-юсб порта, и может работать в связке как с компом, так и без компа.
Дмитрий добрый день!!!!
Хочу повторить бэнд-декодер для транзисторного РА можите прислать мне на почту скетч.
rd3pq@rambler.ru
Спасибо большое.
С уважением Виктор R2PM

ur7hfo
07.03.2016, 16:06
Хочу повторить бэнд-декодер для транзисторного РА можите прислать мне на почту скетч.

Давайте я тут выложу упрощенный вариант, с одним портом. Вариант на два и более портов еще в стадии тестирования и вылавливания ошибок.
В принципе информации там достаточно, чтоб дописать код под Ваши задачи. Еще есть такой вариант и для Айкома.

Код для Кенвуда, УКВ 144 и 430 тоже там есть :



/*
* UR7HFO (c)2016 KENWOOD simple band decoder for Arduino NANO or UNO.
*
* Default COM port speed 9600 8N1 (8 - data, N - parity, 1 - stop bit)
*
* Relay output pins:
*
* 160 band - 2 pin
* 80 band - 3 pin
* 40 band - 4 pin
* 30 band - 5 pin
* 20 band - 6 pin
* 17 band - 7 pin
* 15 band - 8 pin
* 12 band - 9 pin
* 10 band - 10 pin
* 6 band - 11 pin
* 2 band - 12 pin
* 0.7 band - 13 pin
*
* Only if LCD display exist:
* LCD on UNO I2C bus pins - A4(SDA), A5(SCL).
*
*/

/* ******************* Begin user setting ******************** ****** */

// Uncomment for I2C_LCD display 20x4
// #define I2C_LCD


// default COM port speed.
unsigned int SERIAL_SPEED = 9600;


/* ******************** * End user setting ******************** ******* */




#ifdef I2C_LCD
// Add your address here. Find it from I2C Scanner
// i2c 20x4 0x27-address display
#define I2C_ADDR 0x27
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7


#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <LCD.h>


LiquidCrystal_I2C lcd(I2C_ADDR,En_pin, Rw_pin,Rs_pin,D4_pin ,D5_pin,D6_pin,D7_pi n);
#endif // I2C_LCD


// Relay pins
#define b160 2
#define b80 3
#define b40 4
#define b30 5
#define b20 6
#define b17 7
#define b15 8
#define b12 9
#define b10 10
#define b6 11
#define b2 12
#define b430 13

#define RDWR_CAT_TIMEOUT 100


// Hardware serial max buffer len 64.
char tmpCatBufKenwood[65];
String Freq = "";


unsigned int band = 0;
unsigned long freq = 0;


//
// Used procedure.
//
long GetFreqKenwood(void) ;
void DisplayInitDraw(void );
unsigned int NewWriteBand(unsigne d long);


// Setup procedure
void setup()
{
pinMode(b160, OUTPUT);
pinMode(b80, OUTPUT);
pinMode(b40, OUTPUT);
pinMode(b30, OUTPUT);
pinMode(b20, OUTPUT);
pinMode(b17, OUTPUT);
pinMode(b15, OUTPUT);
pinMode(b12, OUTPUT);
pinMode(b10, OUTPUT);
pinMode(b6, OUTPUT);
pinMode(b2, OUTPUT);
pinMode(b430, OUTPUT);

// China relay module (inverted)
digitalWrite(b160, HIGH);
digitalWrite(b80, HIGH);
digitalWrite(b40, HIGH);
digitalWrite(b30, HIGH);
digitalWrite(b20, HIGH);
digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH);
digitalWrite(b12, HIGH);
digitalWrite(b10, HIGH);
digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH);
digitalWrite(b430, HIGH);

#ifdef I2C_LCD
DisplayInitDraw();
#endif

Serial.begin(SERIAL_ SPEED);
Serial.setTimeout(RD WR_CAT_TIMEOUT);


Freq.reserve(128);
}


//
// Main loop
//
void loop()
{
freq = GetFreqKenwood();
band = NewWriteBand(freq);

#ifdef I2C_LCD
if(band)
{
lcd.setCursor(4,0);
lcd.print(" ");
lcd.setCursor(4,0);
lcd.print(band);
}
if(freq)
{
lcd.setCursor(4,1);
lcd.print(" ");
lcd.setCursor(4,1);
lcd.print(freq);
}
#endif
delay(250);
}


//
// Kenwood GetFreq.
//
long GetFreqKenwood()
{
// Kenwood freq request.
Serial.print("IF;");
Serial.flush();

// Read Kenwood response.
while ( Serial.available() )
{
memset(tmpCatBufKenw ood, 0, sizeof(tmpCatBufKenw ood));
Serial.readBytesUnti l(';', tmpCatBufKenwood, sizeof(tmpCatBufKenw ood));
}
Freq = String(tmpCatBufKenw ood);
if ( (Freq.substring(0,2) == "IF") && (Freq.substring(0,3) != "IF;") )
{
Freq = Freq.substring(2,14) ;
while(Freq[0] == '0')
{
Freq.remove(0, 1);
}
return Freq.toInt();
}
return 0;
}


//
// Display Init
//
#ifdef I2C_LCD
void DisplayInitDraw(void )
{
lcd.begin(20,4);
lcd.setBacklightPin( BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIG H);
lcd.home();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("UR7HFO KENWOOD");
lcd.setCursor(0,1);
lcd.print("BAND DECODER");
delay(2000);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("BND");
lcd.setCursor(0,1);
lcd.print("FRQ ");
}
#endif // I2C_LCD


//
// NewWriteBand.
//
unsigned int NewWriteBand(unsigne d long freq)
{
// 160 m
if ( (freq >= 1700000 && freq <= 2100000) || freq == 1 )
{
digitalWrite(b160, LOW);

digitalWrite(b80, HIGH); digitalWrite(b40, HIGH); digitalWrite(b30, HIGH); digitalWrite(b20, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b12, HIGH); digitalWrite(b10, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH); digitalWrite(b430, HIGH);
return 160;
}

// 80 m
if ( (freq >= 3400000 && freq <= 3900000) || freq == 3 )
{
digitalWrite(b80, LOW);

digitalWrite(b160, HIGH); digitalWrite(b40, HIGH); digitalWrite(b30, HIGH); digitalWrite(b20, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b12, HIGH); digitalWrite(b10, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH); digitalWrite(b430, HIGH);
return 80;
}

// 40 m
if ( (freq >= 6900000 && freq <= 7300000) || freq == 7 )
{
digitalWrite(b40, LOW);

digitalWrite(b80, HIGH); digitalWrite(b160, HIGH); digitalWrite(b30, HIGH); digitalWrite(b20, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b12, HIGH); digitalWrite(b10, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH); digitalWrite(b430, HIGH);
return 40;
}

// 30 m
if ( (freq >= 9900000 && freq <= 10200000) || freq == 10 )
{
digitalWrite(b30, LOW);

digitalWrite(b80, HIGH); digitalWrite(b40, HIGH); digitalWrite(b160, HIGH); digitalWrite(b20, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b12, HIGH); digitalWrite(b10, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH); digitalWrite(b430, HIGH);
return 30;
}

// 20 m
if ( (freq >= 13900000 && freq <= 14450000) || freq == 14 )
{
digitalWrite(b20, LOW);

digitalWrite(b80, HIGH); digitalWrite(b40, HIGH); digitalWrite(b30, HIGH); digitalWrite(b160, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b12, HIGH); digitalWrite(b10, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH); digitalWrite(b430, HIGH);
return 20;
}

// 17 m
if ( (freq >= 17900000 && freq <= 18300000) || freq == 18 )
{
digitalWrite(b17, LOW);

digitalWrite(b80, HIGH); digitalWrite(b40, HIGH); digitalWrite(b30, HIGH); digitalWrite(b20, HIGH); digitalWrite(b160, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b12, HIGH); digitalWrite(b10, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH); digitalWrite(b430, HIGH);
return 17;
}

// 15 m
if ( (freq >= 20900000 && freq <= 21600000) || freq == 21 )
{
digitalWrite(b15, LOW);

digitalWrite(b80, HIGH); digitalWrite(b40, HIGH); digitalWrite(b30, HIGH); digitalWrite(b20, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b160, HIGH); digitalWrite(b12, HIGH); digitalWrite(b10, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH); digitalWrite(b430, HIGH);
return 15;
}

// 12 m
if ( (freq >= 24700000 && freq <= 25100000) || freq == 24 )
{
digitalWrite(b12, LOW);

digitalWrite(b80, HIGH); digitalWrite(b40, HIGH); digitalWrite(b30, HIGH); digitalWrite(b20, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b160, HIGH); digitalWrite(b10, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH); digitalWrite(b430, HIGH);
return 12;
}

// 10 m
if ( (freq >= 27000000 && freq <= 29800000) || freq == 28 || freq == 29 )
{
digitalWrite(b10, LOW);

digitalWrite(b80, HIGH); digitalWrite(b40, HIGH); digitalWrite(b30, HIGH); digitalWrite(b20, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b12, HIGH); digitalWrite(b160, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH); digitalWrite(b430, HIGH);
return 10;
}

// 6 m
if ( (freq >= 49000000 && freq <= 55000000) || (freq >= 50 && freq <= 54) )
{
digitalWrite(b6, LOW);

digitalWrite(b80, HIGH); digitalWrite(b40, HIGH); digitalWrite(b30, HIGH); digitalWrite(b20, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b12, HIGH); digitalWrite(b10, HIGH); digitalWrite(b160, HIGH);
digitalWrite(b2, HIGH); digitalWrite(b430, HIGH);
return 6;
}

// 2 m
if ( (freq >= 143500000 && freq <= 146000000) || (freq >= 143 && freq <= 146) )
{
digitalWrite(b2, LOW);

digitalWrite(b80, HIGH); digitalWrite(b40, HIGH); digitalWrite(b30, HIGH); digitalWrite(b20, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b12, HIGH); digitalWrite(b10, HIGH); digitalWrite(b160, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b430, HIGH);
return 2;
}

// 0.7 m
if ( (freq >= 420000000 && freq <= 450000000) || (freq >= 420 && freq <= 450) )
{
digitalWrite(b430, LOW);

digitalWrite(b80, HIGH); digitalWrite(b40, HIGH); digitalWrite(b30, HIGH); digitalWrite(b20, HIGH); digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH); digitalWrite(b12, HIGH); digitalWrite(b10, HIGH); digitalWrite(b160, HIGH); digitalWrite(b6, HIGH);
digitalWrite(b2, HIGH);
return 430;
}

/*
// No amateur band found, disable all relay.
digitalWrite(b430, HIGH);
digitalWrite(b2, HIGH);
digitalWrite(b6, HIGH);
digitalWrite(b80, HIGH);
digitalWrite(b40, HIGH);
digitalWrite(b30, HIGH);
digitalWrite(b20, HIGH);
digitalWrite(b17, HIGH);
digitalWrite(b15, HIGH);
digitalWrite(b12, HIGH);
digitalWrite(b10, HIGH);
digitalWrite(b160, HIGH);
*/

return 0;
} // End NewWriteBand.

R2PM
07.03.2016, 16:23
Дмитрий здравствуйте!!!
Спасибо.
Подскажите какой средой пользовались, среда 1.6.5 дала ошибку при компелировании.
По ICOM большая разница?
Виктор R2PM

ur7hfo
07.03.2016, 16:27
С айкомом разница существенная.
Среда использовалась и 1.6.6 , и 1.6.7 , а какую выдало ошибку ?

ur7hfo
07.03.2016, 17:43
Небольшой офтопик. Для Айкома нужно читать например вот эту статью - http://www.plicht.de/ekki/civ/civ-p1.html

Результат работы -
https://youtu.be/8QZmv1Nr7HA

UT0UM
07.03.2016, 18:51
ИКОМ

void ic706_QRG()
{


listen:


if (Serial.available() > 0) {
buffget[0] = Serial.read();
}
if (buffget[0] == 254)
{

buffget[0] = 0;


delay(1);
for (byte i=0;i<10;i++) { // get next 10 bytes
if(Serial.available( ) > 0) {
buffget[i]=Serial.read(); // load buffget with next 10 characters
delay(2); //delay 1 ms if true, time for buffer fill



}
}
delay (10); // delay is required to process buffer, do not remove !


if (buffget[0] == 254 and ((buffget[3] == 0) or (buffget[3] == 3) or (buffget[3] == 5)) and buffget[9] == 253) { // again FE , as 2nd character ?





MHZ = (buffget[7]);


MHZ = MHZ - (((MHZ/16) * 6)); // Transform bytes ICOM CAT
if (MHZ >= 100) goto listen; // wrong byte


KHZ = buffget[6];
KHZ = KHZ - (((KHZ/16) * 6)); // Transform bytes ICOM CAT
if (KHZ >= 100) goto listen; // wrong byte


HZ = buffget[5];
HZ = HZ - (((HZ/16) * 6)); // Transform bytes ICOM CAT
if (HZ >= 100) goto listen; // wrong byte
//
blink_led();
NoCAT=0;
freq = ((MHZ * 1000) + (KHZ * 10) + (HZ /10)); // QRG variable stores frequency in MMkkkH format



}
}
}

R2PM
07.03.2016, 19:03
Среда использовалась и 1.6.6 , и 1.6.7 , а какую выдало ошибку ?




Изменена опция сборки, пересобираем все
sketch_band_kenwood_ 2:383: error: invalid suffix "N1" on integer constant
sketch_band_kenwood_ 2.ino: In function 'void setup()':
sketch_band_kenwood_ 2:379: error: redefinition of 'void setup()'
sketch_band_kenwood_ 2:99: error: 'void setup()' previously defined here
sketch_band_kenwood_ 2:381: error: 'c' was not declared in this scope
sketch_band_kenwood_ 2:381: error: 'UR7HFO' was not declared in this scope
sketch_band_kenwood_ 2:381: error: expected ';' before numeric constant
sketch_band_kenwood_ 2:479: error: a function-definition is not allowed here before '{' token
sketch_band_kenwood_ 2:523: error: a function-definition is not allowed here before '{' token
sketch_band_kenwood_ 2:551: error: a function-definition is not allowed here before '{' token
sketch_band_kenwood_ 2:767: error: expected '}' at end of input
invalid suffix "N1" on integer constant


ИКОМ




Изменена опция сборки, пересобираем все
sketch_band_icom.ino : In function 'void ic706_QRG()':
sketch_band_icom:9: error: 'buffget' was not declared in this scope
sketch_band_icom:11: error: 'buffget' was not declared in this scope
sketch_band_icom:36: error: 'MHZ' was not declared in this scope
sketch_band_icom:43: error: 'KHZ' was not declared in this scope
sketch_band_icom:48: error: 'HZ' was not declared in this scope
sketch_band_icom:52: error: 'blink_led' was not declared in this scope
sketch_band_icom:53: error: 'NoCAT' was not declared in this scope
sketch_band_icom:54: error: 'freq' was not declared in this scope
'buffget' was not declared in this scope

UT0UM
07.03.2016, 19:13
... was not declared in this scope

курим это (http://arduino.ru/Reference)
вдумчиво

ur7hfo
07.03.2016, 23:25
rd3pq,

sketch_band_kenwood_ 2:379: error: redefinition of 'void setup()'
sketch_band_kenwood_ 2:99: error: 'void setup()' previously defined here

Так не годиться, у Вас как минимум 2 функции setup()
Вот Вам в архиве файл, просто разархивируйте его на комп, откройте в среде Ардуино, скомпилируйте , и загрузите в контроллер.

UA9TL
12.03.2016, 20:11
Сегодня закончил работу с BandData decoder для KENWOOD конструкции UT0UM(последние скетчи в п.522).
Огромнейшая благодарность Алексею за помощь в отладке скетчей.
Оба варианта (без лога и с логом) работают отлично( в том числе и с определением SSB участков)
Очень простая и нужная конструкция!!!

UT0UM
12.03.2016, 20:18
последние скетчи

прикреплены к этому сообщению
скорость порта 4800
будет работать с любым радио Кенвуд и, наверное, с новыми ЕСу (950, 2000, 1200, 3000, 5000)

RU4SS
12.03.2016, 20:25
прикреплены к этому сообщению
скорость порта 4800
будет работать с любым радио Кенвуд и, наверное, с новыми ЕСу (950, 2000, 1200, 3000, 5000)
А какую плату покупать, схемку и пр. - можно?
Ну так сказать - для чайников...

UT0UM
12.03.2016, 20:28
А какую плату покупать, схемку и пр. - можно?
Ну так сказать - для чайников...

нет там никакой схемы
подключаете любую ардуину к ЮСБ компа
настраиваете ВСПЕ (как описано в этой теме)
и получаете на нужны ножках ардуины +5В, в зависимости от бенда
а дальше делаете с ними что хотите (подаете на реле, ключи, оптопары итд)

R2PM
12.03.2016, 20:48
откройте в среде Ардуино, скомпилируйте , и загрузите в контроллер.

Дмитрий доброе время суток!!!!
Спасибо, всё получилось. Проектирую дальше...
С уважением Виктор R2PM

ur7hfo
22.03.2016, 17:47
настраиваете ВСПЕ (как описано в этой теме)
Можно и так, но я пришел к схеме , когда бэнд-декодер имеет два интерфейса, один аппаратный uart ( в случае уно-нано программный SoftwareSerial) посредством max232 подключается прямо к трансиверу, а свободный юсб-ком порт ардуины используется для подключения компа с логгером. Это актуально если у трансивера только 1 ком порт. Для кенвуда 590 , такая схема ненужна, так как у него и rs232 и юсби порты есть.

UT0UM
22.03.2016, 18:12
Можно и так

так было сделано, чтобы показать, что можно все делать исключительно программным способом
без всяких портов, шнурков, максов итд

трансивер в любом случает уже подключен к компу, так зачем к нему еще что-то подключать?
Всю необходимую информацию можно получить с этого компа через USB

ur7hfo
11.04.2016, 00:06
Много полезного в теме написано, а фото реальных конструкций будут ?
Предлагаю начать делиться фотографиями. Как делали конструкцию, и что из этого вышло.
У меня такое вышло, протоколы Icom, Kenwood, YaesuBCD.
Интерфейсы USB-serial, CI-V, BCD, RS-232
Тип протокола, порт, скорость порта, выбирается тремя кнопками, диапазоны 1.8 - 430 мгц. Восьмидесятка разбита на два раздельных участка CW и SSB.

231197231198231199

R2PM
11.04.2016, 10:22
Много полезного в теме написано, а фото реальных конструкций будут ?
Предлагаю начать делиться фотографиями. Как делали конструкцию, и что из этого вышло.
У меня такое вышло, протоколы Icom, Kenwood, YaesuBCD.
Интерфейсы USB-serial, CI-V, BCD, RS-232
Тип протокола, порт, скорость порта, выбирается тремя кнопками, диапазоны 1.8 - 430 мгц. Восьмидесятка разбита на два раздельных участка CW и SSB.

Дмитрий доброе время суток!!!!
Очень понравилась Ваша конструкция и возможности её. Дмитрий если не трудно поделитесь скетчем и схемой, можно в личку. Спасибо большое.
С уважением Виктор R2PM

ur7hfo
11.04.2016, 23:40
Для желающих собрать мой вариант, при этом не изучая программирование на Ардуино, выкладываю готовую прошивку под Ардуино Мега, и коротенькую инструкцию .

UT0UM
11.04.2016, 23:46
Для желающих собрать мой вариант, при этом не изучая программирование на Ардуино, выкладываю готовую прошивку под Ардуино Мега, и коротенькую инструкцию .

только вот переключать антенные реле другими реле очень стремно,
если использовать на прием и передачу разные антенны, то могут не успеть

у меня в ts-590 то ли 20 то ли 25 мс задержка
и реле только в самом антенном коммутаторе, а в бендекодере оптопары+ключи
и все равно, иногда бывает, что переключение антенн идет на горячую

ur7hfo
11.04.2016, 23:54
если использовать на прием и передачу разные антенны, то могут не успеть
Полностью согласен, промежуточные реле там лишние, только задержку добавляют. Я делал для себя, да плюс эти готовые блоки реле лежали без дела, поэтому их и поставил )) Правильно конечно же оставить только оптопару и ключ на транзисторе.

UT0UM
12.04.2016, 00:01
эти готовые блоки реле лежали без дела

у меня так и лежат без дела :)))


Правильно конечно же оставить только оптопару и ключ на транзисторе

так на Ваших блоках оптопара уже есть, осталось вместо реле поставить ключ :)))

ur7hfo
12.04.2016, 00:07
Да по хорошему все это нужно переписать под НАНО , разработать плату, это было бы правильно, и дешевле, но меня и так устроило, так как делал для себя, и хотелось чтобы все собиралось как из кубиков в детском конструкторе :smile:

UT0UM
12.04.2016, 00:14
переписать под НАНО

а какая разница коду мега там или нана?

ur7hfo
12.04.2016, 00:26
а какая разница коду мега там или нана?
Кроме количества uart, количества ацп, и количества цифровых выводов, разницы никакой нет. У нано просто выводов не хватит на все хотелки, можно было бы навсесить все это на шину I2C, но пока времени на это нет.

Serg
12.04.2016, 00:30
можно было бы навсесить все это на шину I2C

Или на 595 регистры.

UT0UM
12.04.2016, 01:02
У нано просто выводов не хватит на все хотелки

ой, а у меня как то хватило...
... и на кенвуд и на есу и на айком и на управление усилителем по BCD и на индикацию

индикация на восемь семисегментников, плюс 8 двухцветных светодиодов
и 11 независимых кнопок

еще и на прием/передачу антенны разные выбираются

и все это на одной Нане без I2C и 595 :)

знаю, пойду возьму с полки пирожок...
... или медаль себе куплю

ur7hfo
12.04.2016, 08:31
на управление усилителем по BCD
Да, надо бы добавить эту функцию.

ur7hfo
12.04.2016, 10:08
ой, а у меня как то хватило...
Ну так молодец ! Что тут скажешь :smile:


плюс 8 двухцветных светодиодов
Для чего применяются именно двухцветные светодиоды ?


управление усилителем по BCD
А какой используется усилитель? Можно взять пример как у Чехов с выводом в любом формате (cat, civ, bcd), да и самому это несложно дописать, но реально оно кому нужно ?

UT0UM
12.04.2016, 10:42
применяются именно двухцветные светодиоды

8 антненн - 8 светодиодов
на прием светит зеленым, а на передачу красным
мигают, когда приходят данные частоты с трансивера (примерно раз в сек)


А какой используется усилитель?

КРА500

и еще бенддекодер по САТ устанавливает в трансивере мощность по диапазонам, чтобы не было перекачки РА

Kia2700d
12.04.2016, 15:43
И шо, это все на одной нане?!

ur7hfo
19.04.2016, 22:22
Добавил выход в формате BCD для управления внешним усилителем, исправил небольшой баг с дисплеем.

Назначение пинов Arduino Mega:

/* * UR7HFO (c)2016 band decoder for Arduino Mega. (ver 1.0)
*
* LCD I2C bus pins - 20(SDA), 21(SCL)
*
* Button COM port speed up\down - 22 pin
* Button mode Kenwood\Icom\Yaesu - 23 pin
* Button TRX port selector - 24 pin
*
* Relay output pins:
*
* 160 band - 26 pin
* 80-CW band - 27 pin
* 80-SSB band - 28 pin
* 40 band - 29 pin
* 30 band - 30 pin
* 20 band - 31 pin
* 17 band - 32 pin
* 15 band - 33 pin
* 12 band - 34 pin
* 10 band - 35 pin
* 6 band - 36 pin
* 2 band - 37 pin
* 0.7 band - 38 pin
*
*
* Yaesu BCD_A - A0 pin // Yaesu DIN8 connector pin 4.
* Yaesu BCD_B - A1 pin // Yaesu DIN8 connector pin 5.
* Yaesu BCD_C - A2 pin // Yaesu DIN8 connector pin 6.
* Yaesu BCD_D - A3 pin // Yaesu DIN8 connector pin 7.
*
* PC Logger CAT port - TX0(1), RX0(0) Serial (USB onboard)
* TRX CAT port 1 - TX1(18), RX1(19) Serial1 (CI-V)
* TRX CAT port 2 - TX2(16), RX2(17) Serial2 (RS-232)
* TRX CAT port 3 - TX3(14), RX3(15) Serial3 (USB-COM)
*
* BCD_A_OUT - 40 pin
* BCD_B_OUT - 41 pin
* BCD_C_OUT - 42 pin
* BCD_D_OUT - 43 pin
*
*/

К кенвуду подключается на выбор или с помощью max232 в типовом включении, или через юсб и программы vspe.
К айкому подключается в штатный CI-V интерфейс (гнездо 3.5 мм) с помощью следующего интерфейса.

232020
Прошивка для Ардуино Меги

R2PM
21.04.2016, 14:05
Добавил выход в формате BCD для управления внешним усилителем, исправил небольшой баг с дисплеем.

Дмитрий доброе время суток!!!!
Спасибо за проект! Есть просьба последний вариант прошивки выложить для программирования в среде Andruino/
С уважением Виктор R2PM

ur7hfo
21.04.2016, 17:10
Ардуино я взял в руки совсем недавно, так что пардон, написал как смог.

Добавлено через 12 минут(ы):

С Айкомом ардуина сама запрашивает частоту у трансивера, сделано иначе чем описано тут - http://remoteqth.com/wiki/index.php?page=Band+ decoder+for+Arduino# ICOM_CIV поэтому и CI-V интерфейс выполнен иначе.

Код во вложенном файле:

ur7hfo
21.04.2016, 20:38
Продолжая играться с бэнддекодером, легко можно сделать такой режим для работы сплитом, когда одно радио может использоваться чтоб слушать пайлап.


https://youtu.be/JJ604oU6pII

R2PM
23.04.2016, 13:22
Дмитрий доброе время суток!!!
Подскажите пожалуйста как вы подключаете к компьютеру, как к ведущему трансиверу и к ведомому, например TS950 ведущий, а IC 781 ведомый через омни риг аппаратного журнала.
Ваш проект собрал - всё запустилось, единственное отличие от Вашего проекта - это в подключение LCD, у меня он подключен без расширения, т.е параллельное вкл.
С уважением Виктор R2PM

ur7hfo
23.04.2016, 15:26
Подскажите пожалуйста как вы подключаете к компьютеру, как к ведущему трансиверу и к ведомому, например TS950 ведущий, а IC 781 ведомый через омни риг аппаратного журнала.

Добрый день, программа Omni Rig в этом процессе не участвует. Ведущим трансивером является Айком, но можно и переписать под свои задачи. Алгоритм такой:

1) Cам бенд -декодер (без участия компа) отправляет в Айком команду запроса частоты .
2) Далее ждет ответ от Айкома, и при его получении декодирует, и включает нужное антенное реле.
3) Затем бенддекодер преобразует полученную частоту в формат команды установки частоты Кенвуд, и отправляет через заданный сериал-порт в Кенвуд.





Ваш проект собрал - всё запустилось, единственное отличие от Вашего проекта - это в подключение LCD, у меня он подключен без расширения, т.е параллельное вкл.
Хорошо :)

Установка обоих гетеродинов Кенвуда по CAT протоколу выглядит так :



//
// kenwood_OUT
//
void kenwood_OUT(long freq)
{
String strFreq = String(freq);

Serial3.print("FA" + strFreq + ";");
Serial3.print("FB" + strFreq + ";");
Serial3.flush();
}

Serg
23.04.2016, 15:27
1) Cам бенд -декодер (без участия компа) отправляет в Айком команду запроса частоты .

А если айком подключен к компу с логом, то пул прекращается и просто слушает пролетающий поток?
В варианте синхронизации двух аппаратов желательно предусмотреть, чтобы какое-то одно VFO синхронизировало. Т.е. чтобы просто выбрав другой VFO можно было отказаться от синхронизаций без лишний действий.

ur7hfo
23.04.2016, 16:19
А если айком подключен к компу с логом, то пул прекращается и просто слушает пролетающий поток?
Так как Вы пишите нужно будет сделать в следующей прошивке, то есть отслеживать, активна ли программа логгер, или нет.
Это будет самое правильное решение.
Сейчас сделано достаточно примитивно, бенд декодер не определяет есть активность от логгера или нет, вместо этого но все транслирует от логгера в трансивер, и от трансивера в логгер через раздельные сериал интерфейсы. Раз в 1 секунду, эта трансляция останавливается, и бенд декодер сам посылает трансиверу запрос на частоту, и декодирует ответ, далее трансляция логгер-трансивер возобновляется, и все в цикле повторяется.

Serg
23.04.2016, 16:24
Да, надо сделать следящую систему чтобы если данные бегут - не делать свой опрос. А если не бегут, скажем более 10 секунд - уже начинать свой опрос аппарата. Так было сделано еще в самом первом декодере, с которого начиналась эта ветка форума.

ur7hfo
23.04.2016, 16:29
В варианте синхронизации двух аппаратов желательно предусмотреть, чтобы какое-то одно VFO синхронизировало. Т.е. чтобы просто выбрав другой VFO можно было отказаться от синхронизаций без лишний действий.
Да это не сложно совсем, но сейчас проверить нет возможности, так как Айком уже забрали у меня.
Оставить только например одну строку установки Кенвудовского гетеродина - Serial3.print("FA" + strFreq + ";");

Serg
23.04.2016, 16:35
Оставить только например одну строку установки Кенвудовского гетеродина - Serial3.print("FA" + strFreq + ";");

Пока временно (ардуина лежит еще на столе без дела) сделал для себя синхронизацию двух аппаратов через самописную программку для винды, то синхронизирую только VFO-B основного аппарата, чтобы работать сплитом. Т.е. с первого аппарата передаю со сплитом (VFO-B), и слушаю на нем же DX (VFO-A). А на дополнительном аппарате слушаю пайлап и его частота настройки синхронизируется с VFO-B на основном.

Если не нужна синхронизация, просто использую основной аппарат в VFO-A, ничего более не переключая.

Может быть есть и другие применения, тут надо подумать, какие комбинации еще нужны для чего.

R2PM
23.04.2016, 18:52
Дмитрий спасибо за ответ!!!!
То что в этой прошивке Айком ведущий - понятно, но у меня куча устройств работающих по протоколу CI-V (антенный коммутатор, с возможностью "разноса" антенн; селективный измеритель мощности и КСВ, автомат тюнер и т.п.) работающие в режиме "прослушки". Так вот когда ведущим становится Кенвод мне с выхода бенд декодера нужен протокол CI-V - это первое.
Второе - практически 70% управляются трансивера с аппаратного журнала, а не наоборот.
Вот такой мой подход к устройству.
Дмитрий есть ещё один нюанс (может это у меня только) - приходиться долго держать кнопки для переключения.
С уважением Виктор R2PM

ur7hfo
23.04.2016, 22:17
Дмитрий есть ещё один нюанс (может это у меня только) - приходиться долго держать кнопки для переключения.
Там опрос идет идет с интервалом в одну секунду, поэтому для переключения нажатую кнопку нужно удерживать, я делал для себя, и мне это показалось не критично, можно конечно сделать чаще.


Так вот когда ведущим становится Кенвод мне с выхода бенд декодера нужен протокол CI-V - это первое.
Можно и эту функцию дописать, но проблема в том, что Айком у меня уже забрали, и проверять и тестировать уже нет возможности. Поэтому в данный момент должен оставить этот проект "как есть". Может быть еще возможность такая будет, но обещать я не могу.

R2PM
24.04.2016, 08:38
Так вот когда ведущим становится Кенвод мне с выхода бенд декодера нужен протокол CI-V - это первое.
Можно и эту функцию дописать, но проблема в том, что Айком у меня уже забрали, и проверять и тестировать уже нет возможности.

Доброе время время суток!!!
Дмитрий, если хотите, то могу по тестировать .
С уважением Виктор R2PM

R2PM
24.04.2016, 16:29
Дмитрий доброе время суток!!!!
Не удалось состыковать с IC 781 и бенд декодер, скорость 9600. На экране в нижней строке ICOM ff88 40 на третьей строке PORT CI-V 9600. К оптопарам подаю Tx1 Rx1. Без данного бенд декодера всё работает без проблем.
Может надо править скетч по 781?.
Виктор R2PM

ur7hfo
24.04.2016, 19:44
На экране в нижней строке ICOM ff88
Так Вы в скетче установите правильное значение адреса для Вашей модели Айкома, значение ff88 , это для модели IC-7100

Добавлено через 7 минут(ы):

http://www.plicht.de/ekki/civ/civ-p31.html Тут можно посмотреть.

В тексте программы ищете строку
const char CIV_ADRESS = 0x88; // CIV input HEX Icom (0x88 for ic-7100)

Вместо значения 0x88 поставте значение 0x26 .

R2PM
24.04.2016, 23:07
Вместо значения 0x88 поставте значение 0x26 .

Поправил - результат тот же. Блок с трансивером не "подружмлся"
R2PM

ur7hfo
24.04.2016, 23:50
Поправил - результат тот же. Блок с трансивером не "подружмлся"
Проверте, какая скорост CI-V интерфейса установлена в самом трансивере. Скорости в логгере, бэнд-декодере, и трансивере, должны быть одинаковы. Мельком глянул мануал на ic-781 , то что увидел, то там фигурируют возможные скорости - 300, 600, 1200, 2400.
Может он просто не может работать на 9600 ? Попробуйте везде установить скорость 2400 и проверить.

R2PM
25.04.2016, 07:16
Может он просто не может работать на 9600 ? Попробуйте везде установить скорость 2400 и проверить.

Дмитрий доброе утро!!!!
Так в обычном режиме (без блока) он работает без промблем на скорости 9600.
Сегодня попробую без оптопар 817 -х.
R2PM

ur7hfo
25.05.2016, 13:22
Да, надо сделать следящую систему чтобы если данные бегут - не делать свой опрос. А если не бегут, скажем более 10 секунд - уже начинать свой опрос аппарата. Так было сделано еще в самом первом декодере, с которого начиналась эта ветка форума.

Немного продвинулся в этом направлении, сейчас в стадии тестирования.

UT0UM
25.05.2016, 15:35
Немного продвинулся в этом направлении, сейчас в стадии тестирования.

с кенвудом и айкомом это легко
а вот с есу 857 я так и не добил
там такой формат команд, что нельзя отловить их начало

ur7hfo
25.05.2016, 16:54
а вот с есу 857 я так и не добил

Я еще в том направлении не копал, потому что нету есу857 у меня, но можно попробовать, а потом потестить, можно на одной из ардуин сделать эмулятор езу, ну и проверить ...
Вот хотя бы это

----Read Frequency / Mode Status---------------------------------
{0x00,0x00,0x00,0x00 ,CAT_RX_FREQ_CMD}


Read the frequency and mode as: {0x00,0x00,0x00,0x00 ,03}


The radio will then output 5 bytes of data to report the current frequency and mode:


{D1,D2,D3,D4,D5}


Data:
D1-D4 = frequency
D5 = mode (same as set mode)


Eg: {0x00,0x00,0x00,0x00 ,0x03} gets the current freq & mode

Result from radio is:
{0x43,0x97,0x00,0x00 ,0x08}
which means:
439.700MHz in mode 08 (FM)


----------------------------------------------------------------
*/

То есть пихайте ему принудительно эту 5 байтовую последовательность - {0x00,0x00,0x00,0x00 ,03}
Затем пауза 10....100 мс , и потом читаем из буфера уарт, что нам трансивер ответил

Добавлено через 12 минут(ы):

Или в пассивном режиме , слушаете логгер на предмет посылки последовательности 0x00,0x00,0x00,0x00 ,0x03
и если такая посылка прошла , то уже слушаем трансивер, что он нам ответит.

Кукин Николай Николаевич
25.05.2016, 17:05
с кенвудом и айкомом это легко
а вот с есу 857 я так и не добил
там такой формат команд, что нельзя отловить их начало

Все там ловится (в Y857) и расшифровывается, у Евгения RZ3QS блок управления антенн уже 2 года работает, а также блок управления выходным каскадом, где в автоматическом режиме определятся , подключен лог с компом или нет, декодируется весь поток от лога и управляется переключением фильтров, антенн, диапазонов. При этом все это работает как по протоколу кенвуду, sdr, айкому, так и по есу857 по сат с участием лога или без подключенного компьютера. При этом, хотя у кенвуда и sdr протокол одинаков, работа с этими аппаратами происходит по-разному.Прогу писал я, обкатывал Евгений.Труда положено было много.
Если Вы все делаете с использованием идеологии ардуино, то даже не знаю, что сказать. Я до конца так и не разобрался с ардуино, не понимаю, как там вообще что либо люди пишут. Мне показалось, что идеология этой вещи не предполагает создание машины прерываний, а без этого будет очень трудно, скорей всего даже невозможно читать поток с есу857.
Чтобы декодировать поток от есу нужно одновременно контролировать время, за которое идет передача по уарту, отслеживать паузы в потоке, после этого проверять содержимое принятого в уарт, определять, что этот поток идет с трансивера, и после этого уже можно декодировать весь обмен между трансивером и логом. На это Вам потребуется пара таймеров, один из которых измеряет время передачи байта, а другой измеряет таймаут перерыва в передаче, а также приемный и передающий уарт, обслуживаемый только по прерываниям, кроме того необходимо использовать еще внешнее прерывание для распознавания и трансляции входящего потока с компьютера.
Евгений все описание конструкции выкладывал здесь на сайте.

ur7hfo
25.05.2016, 17:15
Мне показалось, что идеология этой вещи не предполагает создание машины прерываний
Очень даже предполагает прерывания. У меня (новая версия декодера ) работает используя прерывание от аппаратного таймера например. Но сам декодер реализован только для Кенвуда и Айкома. СДР-ы тоже можно добавить, но пока тестировать нет возможности, так как нет ни СДР трансиверов, ни FT-857.
Для простых людей не программистов, Ардуино это самое то, что нужно )))

UT0UM
25.05.2016, 17:25
Или в пассивном режиме , слушаете логгер на предмет посылки последовательности 0x00,0x00,0x00,0x00 ,0x03
и если такая посылка прошла , то уже слушаем трансивер, что он нам ответит.

как?
пином RX ардуино подключается либо к компу, либо к трансиверу

ur7hfo
25.05.2016, 17:37
как?
Имелось ввиду использование двух сериал интерфейсов, один подключен к компу, другой к трансиверу.
Между этими интерфейсами гуляет трафик от трансивера к компу, и от компа к трансиверу, ну а Вы нужную информацию отлавливаете и декодируете.
Если нет второго уарта, то тогда только SoftwareSerial библиотека поможет.

UT0UM
25.05.2016, 17:54
Имелось ввиду использование двух сериал интерфейсов, один подключен к компу, другой к трансиверу.
Между этими интерфейсами гуляет трафик от трансивера к компу, и от компа к трансиверу, ну а Вы нужную информацию отлавливаете и декодируете.
Если нет второго уарта, то тогда только SoftwareSerial библиотека поможет.

а
ну так да, без вопросов

Кукин Николай Николаевич
25.05.2016, 18:56
Имелось ввиду использование двух сериал интерфейсов,
............
Если нет второго уарта, то тогда только SoftwareSerial библиотека поможет.

Для обработки потока, поступающего с компьютера и ответов трансивера на команды лога не надо двух сериал интерфейсов. Достаточно ОДНОГО аппаратного уарта в микроконтроллере.
Это было уже давно реализовано еще UT1WPR (увы, ныне SK).
Механика предельно проста. Передающий вывод сом-порта компьютера подключается на вход ноги внешнего прерывания процика INT0 или INT1. Передающая нога уарта процика подключается к приемной ноге сом-порта трансивера. Выходная нога сом-порта трансивера цепляется одновременно на приемную ногу уарта и компьютера.
По работающему внешнему прерыванию дергается выходная нога уарта процика в такт перепадам уровней с сом-порта компьютера. Так осуществляется трансляция всего потока в трансивер из компьютера. Задержка в передаче уровней с входа INT0(1) на выходную ножку TX уарта составляет порядка одной микросекунды, что вообще никак не влияет на качество передачи. Одновременно с этим делом процик знает, что лог управляет трансивером и ему не надо вмешиваться в трафик, он только слушает ответы трансивера, распознает там ответ на частоту и декодирует ее. Если в течении 1-2 секунд на входе внешнего прерывания не будет перепадов уровня, это для процика означает отсутствие подключенного лога и он включает свой уарт на передачу и сам начинает запрос частоты у трансивера. При этом еще приходится процик держать за шкварник, так как скорость, с какой он может задолбить трансивер командами просто поражает.
В случае с кенвудом и sdr все прозрачно. С айкомом тоже достаточно просто,для него INT0(1) уже не нужно благодаря особенности схемы подключения, но там сначала надо, чтобы был предусмотрен режим автоматического определения сетевого адреса подключенного айкома с сохранением его в памяти процика. После этого чтение протокола не составляет труда.
В случае с есу857 приходится еще дополнительно с использованием таймеров отсчитывать время побайтной передачи и ловить паузы в передаче трансивера на запросы лога. Кроме того, считать байты переданные трансивером в пакете ответа и анализировать байт, идентифицирующий частоту.
Таким образом в такой схеме не надо никаких переключателей компьютер-трансивер, при подключении лога к работающей системе процик-трансивер, автоматом передается управление логу и автоматом управление обратно передается процику в случае прекращения запросов с компьютера. И, самое главное, все работает!

UT0UM
25.05.2016, 21:07
Передающий вывод сом-порта компьютера подключается на вход ноги внешнего прерывания процика INT0 или INT1. Передающая нога уарта процика подключается к приемной ноге сом-порта трансивера. Выходная нога сом-порта трансивера цепляется одновременно на приемную ногу уарта и компьютера.

для этого придется хакнуть ардуину

ur7hfo
25.05.2016, 21:39
Достаточно ОДНОГО аппаратного уарта в микроконтроллере.
У меня их просто 4 штуки аппаратных, поэтому я пошел по "экстенсивной технологии" :smile:



Таким образом в такой схеме не надо никаких переключателей компьютер-трансивер, при подключении лога к работающей системе процик-трансивер, автоматом передается управление логу и автоматом управление обратно передается процику в случае прекращения запросов с компьютера.

Да, по похожему принципу и у меня сделано, переключение работы с логгером, и без логгера происходит автоматически.
У Вас выше весьма оригинальное решение описано с декодированием есу857 .

Добавлено через 5 минут(ы):

Классное решение у Вас в наличии автоматического определения модели Айкома по ci-v адресу, так как айкомов просто огромное колличество, и перебирать все просто очень долго.

Кукин Николай Николаевич
26.05.2016, 09:47
Классное решение у Вас в наличии автоматического определения модели Айкома по ci-v адресу, так как айкомов просто огромное колличество, и перебирать все просто очень долго.

По айкому. Тут ничего пионерского нет.
При отработке протокола айкома отсюда: http://www.radiodv.net/my_icom_civ.php были украдены исходники, но после прочтения/изучения практически все было переделано под требования разрабатывавшейся конструкции, часть было выкинуто, часть добавлена, что-то упрощено (например, автоматическое определение скорости работы сом-порта выкинуто за ненадобностью). Исключена возможность "широковещательного" режима айкома. Запоминание ограничено одним адресом, т.к. не слишком часто меняем трансивер на столе.

По есу857.
Есть еще как минимум два способа, как с помощью одного сом-порта работать с протоколом есу. Оба они требуют чтение и анализ входного потока с компьютера. Один вариант - это когда по активности на ноге INT0(1) происходит переключение приемной ноги аппаратного уарта с трансивера на прием с компьютера с помощью какой-нибудь логики типа 155ЛА3. При этом используются аппаратные возможности процика и анализируется, а чего же хочет компьютер. При таком способе требования к использованию таймеров уменьшаются, однако полностью не исключаются.
Другой вариант - на базе INT0(1) создавать второй софтовый уарт с использованием еще одного таймера для контроля скорости передачи уарта. Такая работу вообще была принята без энтуазизма, и сначала мы с Евгением отрабатывали протокол с переключением входа уарта. В результате непрерывного отпиливания лишнего получилось то, что получилось без аппаратных извратов.

Walkman
11.06.2016, 23:30
Николай Николаевич, здравствуйте!
С этой работой.... сами понимаете)))))
Совершенно мимо прошел от меня Ваш проект по этой теме)))) 39 страница, пост 382. Очень понравилось. Но задумки немного другие, второй день опять "размусоливаю" тему для себя, время, вроде, должно появиться)))) (с трудом верится, но )))). А можно исходники того проекта? Они, как я понимаю, в Си.))))
Созрело более-менее универсальное устройство. Суть заключается в том, что немного переделываем Ваше))) Остаются два регистра- 16 выходов за глаза))) Но добавляется:
1 4 "ноги"- BCD по типу есовского. Кому не нужно много комбинаций на регистрах- их просто не паяют, на эти 4 "ноги" вешается обычный двоично-десятичный дешифратор с ключами на выходах и т.д. Кому надо- загоняют эти выхода на управление РА или то и другое вместе.
2 Используем еще 2 "ноги" Одна вход от РТТ, другая с задержкой- выход РТТ- это на усилитель. Да и мало ли)))
3 Тут эти 2 регистра. Вот тут и имеем разбивку диапазонов на участки, тут и нужно входящее РТТ.
4. Еще одна "нога"- вывод моды. А почему бы и нет?)))
"Съели" 10 ножек. Думаю, что флеша займет около половины. Пару повороток можно запихнуть с некоторыми наворотами.)))

Где-то тут проскочило, что для реализации алгоритма "подслушки" в Ардуино надо её "хакать". А зачем? Для шинки ТХ в сторону трансивера надо использовать другой вывод. Не тот, где штатный UART. Штатный используется со стороны компа. Вывод макса 232 который от трансивера в сторону компа вешается вывод ТХ ардуинки. А остальное- как у предложил и реализовал Виктор. Библиотеку серийника надо будет перелопачивать немного. А может, и не надо. Не смотрел. Да и не программист я)))

Кукин Николай Николаевич
14.06.2016, 10:28
Александр, посмотрите личку.

Walkman
16.06.2016, 02:41
Николай Николаевич, видел)))) Отвечу завтра. Вымотался на работе последние несколько дней!)))) Дома почти не бываю.)))

UT0UM
17.09.2018, 00:36
еще на прием и передачу выбираются разные антенны
надо только PTT от трансивера к декодеру подключить

наконец то многострадальный прототип обрел покой в корпусе
296589 296590

6 лет прожил собранный на соплях на куске пластика :ржач:
(и, кстати, ни разу не глюкнул)

Пассажир
17.09.2018, 08:39
Вот здесь тоже интересный бенд кодер: http://radio-zavalinka.ucoz.ru/publ/bandcoder_v1_0/1-1-0-15
Работает с разными протоколами. Один минус нет никакой информации об этом проекте(схемы, прошивки).

ur7hfo
17.09.2018, 11:53
Один минус нет никакой информации об этом проекте(схемы, прошивки).
Сейчас развожу плату своего варианта бенд декодера для кенвуда, если мне самому понравится его окончательный вид и работа, то выложу в этой теме прошивку.
Сам бендекодер выпонен как часть (дополнение) к интерфейсу комп-трансивер. Возможно опционально добавлю cw-ключик туда, но он там не сильно то и нужен, разве чтобы перебивать передачу CW из програмы логгера по линии DTR. Вход частоты в формате кенвуд, выход в формте Yaesu BCD , собственно на реле антенного коммутатора, и опционально в формате ICOM бродкаст. Также дотачивается опциональный секвенсор для задержек реле трансивер-усилитель-антенный коммутатор, но еще не все мне нравится в его работе.
Черновик схемы во вложенном файле. Пока частично схема смакетирована и работает. Интерфейс для кенвуда будет только один, это rs-232 скорости две 9600 и 115200. Гальваническая развязка от компа есть.

ur7hfo
24.10.2018, 21:40
В общем декодер для Кенвуда собран. Пока вроде все работает, продолжаю тестирование.
299154
Короткий видео обзор платы -
www.youtube.com/watch?v=JbbZgt6pCY4&amp; feature=youtu.be

ur7hfo
27.10.2018, 14:38
В ходе проверок работы, нашел у себя ошибочку в схеме, а именно, не инвертируется сигнал DTR. Саму работу декодера это не затрагивает, но из-за этого неправильно работает манипуляция CW из логгера.
Поэтому, чтобы не переделывать плату, это легко устраняется перепрограммирование м микросхемы FT232RL.
1) Ставим драйвер для FT232RL под свою виндовс (32 или 64 бит)
2) Скачиваем и запускаем утилиту FT_PROG (чтобы не запутаться , оставляем подключенной к компу только одну FT232RL)
3) Находясь в окошке программы FT_PROG нажимаем F5 , и мы должны увидеть следующее окошко, где в меню нужно включить инверсию сигнала DTR
4) Запрограммировать FT232RL нажав CTRL+P

После, вытащить девайс из юсб, и снова подключить к юсб. Теперь сигнал DTR будет инвертирован и CW манипуяция из логгера будет нормальной.
299331

Саму утилиту можно скачать с офф. сайта - https://www.ftdichip.com/Support/Utilities/FT_Prog_v3.6.88.402% 20Installer.exe

Добавлено через 15 минут(ы):

По схеме (пост 592) - http://www.cqham.ru/forum/showthread.php?9366-BandData-decoder-%E4%EB%FF-Kenwood&p=1564349&viewfull=1#post15643 49
Компоненты J3, C45, c38, R40, U10, BF1, R53, U8, R45, R50, R51 можно не паять, так как в данной версии платы и прошивки они использоваться не будут.
I2C OLED экранчик покупал тут - https://ru.aliexpress.com/item/1pcs-0-96-blue-0-96-inch-OLED-module-New-128X64-OLED-LCD-LED-Display-Module/32643950109.html?spm =a2g0s.9042311.0.0.2 74233edJ2mUFh

Прошивка во вложенном файле (скорость CAT по умолчанию 9600)-

ur7hfo
27.10.2018, 15:27
Есть лишние платы (3 шт) этой версии бенд декодера, размером 100 на 70 мм, заводского изготовления. Кому нужно, то обращайтесь в личном сообщении.

ra0sms
16.05.2019, 14:18
Вот здесь описание (http://www.ra0sms.ru/p/automatic-band-decoder.html) моей версии Band Decoder для трансиверов с протоколом Kenwood.

D0ITC
10.02.2022, 19:05
Смотрю тема замолчала три года назад, а жаль, появился вопрос. Если ещё кто из обсуждающих эту тему здесь просматривает то отзовитесь. Я пишу программу для ардуино с возможностью вести журнал связей, моя конструкция на меге с компом через USB и сериальную программу SerialMonitor_x64_1_ 7_1 работает, вручную подсовываю данные считанные с маламута-читает на ура. Маламут тоже по CAT работает, а вот напрямую соединяю мегу с маламутом по USB, посылаю запрос(IF;), а трансивер молчит. Всё что мог сделал, но пока результата нет. Может кто что подскажет.

ur3ilf
11.02.2022, 00:16
Для кенвуда все сообщения заканчиваются символом ;
Запрос отсылается так IF; FA; FB; и т.д.
У айкомов окончание данных заканчивается как $FD

D0ITC
11.02.2022, 08:43
Спасибо за ответ. Там почему-то в моём сообщении после IF смайлик вставился, а я там печатал IF;. Из полученных данных выделяю частоту и моду. Но работает это только с сериальной программой, а миаламут на запросы не отвечает. Такое ощущение, что не устанавливается связь по USB между мегой и трансивером. В маламуте USB сделан прямо на STM, от гнезда сигналы через резисторы 33 Ом и BAV-99 идут прямо на порты проца. У меня вместо BAV-99 применены BAT54S, а они шоттки, может они сигналы "сажают", хотя с компом всё работает.

ur3ilf
11.02.2022, 14:39
У ардуины скорость по USART задаётся в меге.
CH340 преобразователь. Проблема может быть в железе.
Нужно у Евгения R3DI спросить как сделан обмен. Возможно устройства не могут договорится на какой скорости общаться им или что то для подтверждения нужно что подключение есть но ардуина этого не шлёт.

Нужно чем то посмотреть - логическим анализатором или программой free serial monitor взяв ещё одну ардуину и подключится к основной "перекрёстно" используя её как переход RS232/USB что там в запросах/ответах.