Amateur Radio Station R9AL

      Программа "Orbitron" - это программа для слежения за спутниками (см. например Интерфейс управления поворотным устройством), предназначенная для радиолюбителей и любителей визуальных наблюдений. Ее также применяют профессионалы-метеорологи и пользователи спутниковой связи. Программа показывает положения спутников на любой заданный момент (как в реальном времени, так и в режиме симуляции).

Для самодельного Контроллера поворотного устройства на Arduino хотелось бы написать простую и надежную программу. И первая задача - получать данные из программы "Orbitron".

WispDDE


Для передачи данных использовался драйвер WispDDE.



Для экспериментов использован JoystickShield, с загруженным простым скетчем:
#include <LiquidCrystal.h>
String datano,AZ,EL;
LiquidCrystal lcd(13, 12, 8, 7, 6, 5);
void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.clear();
}

void loop() {
  if (Serial.available()) {
    datano = Serial.readString();
    AZ = AZ+datano[1]+datano[2]+datano[3];
    EL = EL+datano[5]+datano[6]+datano[7];
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("AZ:");
    lcd.print(AZ);
    lcd.setCursor(0, 1);
    lcd.print("EL:");
    lcd.print(EL);
    AZ ="";
    EL ="";
  }
}


WispDDE выдает только координаты по азимуту и элевации, округляя их до целого значения (к программному значению элевации добавляется 90 градусов). И, в принципе, для поворотного устройства этого уже достаточно, дальше можно писать скетч управления повороткой.

DDEOrbitronToSerial


Но для будущих проектов захотелось получать значения углов с дробной частью, и хотелось бы получать значения частоты приема и передачи. Поиск в сети выдал ссылку на программу Orbitron DDE Azimuth Elevation To Serial

Порядок установки следующий:
  1. Скачать DDEOrbitronToSerial.zip и распаковать его в любое местo. (например C:\OTS\)
  2. Открыть каталог установки Orbitron и найти Setup.cfg (например, C:\Program Files (x86)\Orbitron\Config\Setup.cfg)
  3. Добавить строку в Setup.cfg:
    [Drivers]
    DDEOrbitronToSerial=C:\OTS\DDEOrbitronToSerial.exe
    
  4. Запустить Orbitron и во вкладке "Ротор/Радио", выбирать библиотеку DDEOrbitronToSerial и запустить драйвер.



  5. В открывшемся окне выбираем нужный COM-порт и настраиваем формат вывода данных.



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



Скетч:
#include <LiquidCrystal.h>               
LiquidCrystal lcd(13, 12, 8, 7, 6, 5); 

extern uint8_t RusFont[];
extern uint8_t SmallFont[];

char data[100];
String datano, SN;
int separation;
float AZ, EL;
unsigned long DN, UP;

void treatment() {
  char *datatreatment;
  char *p = data;
  while ((datatreatment = strtok_r(p, "/", &p)) != NULL) {
    switch (separation) {
      case 0:
        SN = datatreatment;
        break;
      case 1:
        AZ = atof(datatreatment);
        break;
      case 2:
        EL = atof(datatreatment);
        break;
      case 3:
        DN = atof(datatreatment);
        break;
      case 4:
        UP = atof(datatreatment);
        break;
    }
    separation++;
  }
  separation = 0;
}

void LCD_out() {
lcd.setCursor(0,0);
lcd.print("AZ:");
lcd.print(AZ);
lcd.setCursor(0,1);
lcd.print("EL:");
lcd.print(EL);
delay(3000);
lcd.setCursor(0,0);
lcd.print("DN:");
lcd.print(DN);
lcd.setCursor(0,1);
lcd.print("UP:");
lcd.print(UP);
}
void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);                       
  lcd.clear();         
}

void loop() {
  if (Serial.available()) {
    datano = Serial.readString();
    datano.toCharArray(data, 100);
    treatment();
    LCD_out();
  }
}


Продолжение следует...

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





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