Amateur Radio Station R9AL



Проверка модуля DRA-818V в режиме приемника

      Этот макет был собран с целью изучения работы модулей DRA-818V и DRA-818U — это готовые модули приёмопередатчиков на основе чипа RDA1846.

Сначала, для проверки работоспособности модуля, был собран просто приемник:




Для сборки приемника, крмое радиомодуля, для которого была разработана тестовая плата, для удобства подключения, использована плата Arduino UNO и светодиодный модуль



Скетч для тестирования приемника:

void setup() {
  Serial.begin(9600);
  Serial.print("AT+DMOSETGROUP=0,145.5000,145.5000,0000,0,0000");
}

void loop() {

}


Макет радиостанции:





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

#define CLK 4 // Логический пин на энкодере
#define DT  2 // Логический пин на энкодере
#define SW  5 // Кнопка на энкодере
#include 
Encoder enc1(CLK, DT, SW); // Инициализация энкодера
int kHz; // Перемена для
long freq_VHF = 1440000;
double ftx;                              // tx frequency in MHz (134.0000 - 174.0000)
double frx;                              // rx frequency in MHz (134.0000 - 174.0000)
String tx_ctcss = "0000";                // ctcss frequency ( 0000 - 0038 ); 0000 = "no CTCSS"
String rx_ctcss = "0000";                // ctcss frequency ( 0000 - 0038 ); 0000 = "no CTCSS"
int squ = 1;
int bw = 0;     
void setup() {
  Serial.begin(9600);
  // Serial.println("AT+DMOSETGROUP=0,145,145,0000,1,0000");
  pinMode(CLK, INPUT_PULLUP); // Открываем пины энкодера
  pinMode(DT, INPUT_PULLUP);
  pinMode(10, OUTPUT);
  enc1.setType(TYPE1);
}
void Hz() {
  ftx = freq_VHF / 10000.0; frx = ftx;
  Serial.print("AT+DMOSETGROUP=");         // begin message but don't send yet..
  Serial.print(bw);
  Serial.print(",");
  Serial.print(ftx, 4);
  Serial.print(",");
  Serial.print(frx, 4);
  Serial.print(",");
  Serial.print(tx_ctcss);
  Serial.print(",");
  Serial.print(squ);
  Serial.print(",");
  Serial.println(rx_ctcss);
}
void loop() {
  enc1.tick(); // Считываем энкодер
  if (enc1.isClick()) Hz();
  if (enc1.isRight() || enc1.isFastR() ) {
    freq_VHF += 2500 ;
    Serial.println(freq_VHF);
  }
  else if (enc1.isLeft() || enc1.isFastL()) {
    freq_VHF -= 2500 ;
    Serial.println(freq_VHF);
  }
  //Serial.println(kHz);
}


Для удобства можно добавить в схему LCD-дисплей:






В качестве микрофона был использован модуль KY-037




#define CLK 4 // Логический пин на энкодере
#define DT  2 // Логический пин на энкодере
#define SW  5 // Кнопка на энкодере
#include 
#include 
#include 
Encoder enc1(CLK, DT, SW); // Инициализация энкодера
LiquidCrystal_I2C lcd(0x27, 16, 2);
long freq_VHF = 1450000;
double ftx;                              // tx frequency in MHz (134.0000 - 174.0000)
double frx;                              // rx frequency in MHz (134.0000 - 174.0000)
String tx_ctcss = "0000";                // ctcss frequency ( 0000 - 0038 ); 0000 = "no CTCSS"
String rx_ctcss = "0000";                // ctcss frequency ( 0000 - 0038 ); 0000 = "no CTCSS"
int squ = 1;
int bw = 0;
void setup() {
  Serial.begin(9600);
  pinMode(CLK, INPUT_PULLUP); // Открываем пины энкодера
  pinMode(DT, INPUT_PULLUP);
  pinMode(10, OUTPUT);
  enc1.setType(TYPE1);
  lcd.init(); // Инициализация дисплея
  lcd.backlight();
  Hz();
}
void Hz() {
  ftx = freq_VHF / 10000.0; frx = ftx;
  Serial.print("AT+DMOSETGROUP=");         // begin message but don't send yet..
  Serial.print(bw);
  Serial.print(",");
  Serial.print(ftx, 4);
  Serial.print(",");
  Serial.print(frx, 4);
  Serial.print(",");
  Serial.print(tx_ctcss);
  Serial.print(",");
  Serial.print(squ);
  Serial.print(",");
  Serial.println(rx_ctcss);
  lcd.setCursor(0, 0);
  lcd.print(freq_VHF);
  lcd.setCursor(0, 1);
  lcd.print("save    ");
}
void loop() {
  enc1.tick(); // Считываем энкодер
  if (enc1.isClick()) Hz();
  if (enc1.isRight() || enc1.isFastR() ) {
    freq_VHF += 2500 ;
    Serial.println(freq_VHF);
    lcd.setCursor(0, 0);
    lcd.print(freq_VHF);
    lcd.setCursor(0, 1);
    lcd.print("no save");
  }
  else if (enc1.isLeft() || enc1.isFastL()) {
    freq_VHF -= 2500 ;
    Serial.println(freq_VHF);
    lcd.setCursor(0, 0);
    lcd.print(freq_VHF);
    lcd.setCursor(0, 1);
    lcd.print("no save");
  }
  delay(100);
}


Можно использовать просто электретный микрофон, подключив его согласно схеме:






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

Тема форума: https://forum.msevm.ru/index.php?topic=45

Продолжение...





Copyright © R9AL 2023 Все права защищены
Рейтинг@Mail.ru Яндекс цитирования