Радиомодули lora sx1278, 433 мгц, с разъёмом на другом компьютере почти не работают...

Тема в разделе "Проводная и беспроводная связь", создана пользователем OlgaF, 28 авг 2024.

  1. OlgaF

    OlgaF Нерд

    Код (C++):
     
    Здравствуйте уважаемые форумчане!
    До этого у меня был компьютер марки Dell Aspiron Studio 1555 х32 и LaRa исправно передавала данные с Arduino Uno на Arduino MEGA 2560. После поломки старого Dell Aspiron Studio 1555 х32 и переходом на компьютер HP DV7 x64 LoRa перестал получать сообщения. Даже на близком расстоянии сообщения почти не доходят, но иногда всё-же проскакивают вот в таком виде:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    НА НОВОМ КОМПЬЮТЕРЕ HP DV7 x64 В ТЕРМИНАЛЕ ВЫВОДИТ ТАК:
    COM7
    LoRa Receiver
    Starting LoRa - Ok.
    Received packet Numero = 14.
    Packe ssize = -150
    Received packet []X[]F} [] Packe ssize = -43
    Received packet []X[]F} [] Packe ssize = -43
    Received packet []X[]F} [] Packe ssize = -5
    Received packet Numero = 18.
    Packe ssize = -150
    Received packet []X[]F} [] Packe ssize = -49
    Received packet []X[]F} [] Packe ssize = -49
    Received packet Numero = 55.
    Packe ssize = 15
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    НА СТАРОМ КОМПЬЮТЕРЕ Dell Aspiron Studio 1555 х32 БЫЛО ТАК:
    COM7
    LoRa Receiver
    Starting LoRa - Ok.
    Received packet Numero = 0.
    Packe ssize = 14
    Received packet Numero = 1.
    Packe ssize = 14
    Received packet Numero = 2.
    Packe ssize = 14
    Received packet Numero = 3.
    Packe ssize = 14
    Received packet Numero = 4.
    Packe ssize = 14
    Received packet Numero = 5.
    Packe ssize = 14
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Заменила радио-модули на запасные с новыми антеннами, результат тот-же.....

    Код программы передатчика на Arduino UNO:
    ..
    Код (C++):
    // Подключение библиотеки для работы с SPI-интерфейсом.
    #include <SPI.h>
    // Подключение библиотеки для работы с передатчиком LoRa.
    // LoRa Ra-2.
    #include <LoRa.h>
    // Подключение светодиодного контрольного индикатора.
    #define BLINK 8

    int counter = 0;

    void setup() {
      // Beginning of work with a serial port.
      Serial.begin (9600);
      // Кантакт D8 устанавливается выходом на светодиод.
      pinMode(BLINK, OUTPUT);

      // Цикл выполняется до тех пор, пока выводятся данные.
      while (!Serial);

      // Вывод сообщенияна экран компьютера, через
      // последовательный com-порт.
      Serial.println("LoRa Sender");

      // Выбр частоты согласно данному модулю.
      // Большинство частот это: 433E6, 866E6 и 915E6.
      if (!LoRa.begin(433E6)) {
      Serial.println("Starting LoRa failed!");
      while (1);
      }
      // Вывод сообщения на экран терминала на компьютере.
      Serial.println("Starting LoRa Ok!");
      // The mode ascertainment of synchronization for a words.
      LoRa.setSyncWord(0xF3);
      // Delay for execution of the program on 0,10 second.
      //- ??? - delay(100);
      // Установление мощности для радиопередатчика.
      LoRa.setTxPower(20);
      // Delay for execution of the program on 0,10 second.
      delay(100);
    }

    void loop() {
      Serial.print("Sending packet = ");
      Serial.println(counter);

      // send packet
      LoRa.beginPacket();
      LoRa.print("Numero = ");
      LoRa.print(counter);
      LoRa.println(".");
      LoRa.endPacket();

      counter++;

      delay(5000);
      // Включение светодиода.
      digitalWrite(BLINK, HIGH);
      // Задержка на выпонение программы 1 секунда.
      delay(1000);
      // Выключение светодиода.
      digitalWrite(BLINK, LOW);
      // Задержка на выпонение программы 1 секунда.
      delay(1000);
    }[code=cpp]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Код программы приёмника на Arduino Mega 2560 R3:
    ..
    Код (C++):

    // Подключение библиотеки для работы с SPI-интерфейсом.
    #include <SPI.h>
    // Подключение библиотеки для работы с приёмником LoRa.
    #include <LoRa.h>

    // Definitions for pins of input-output.
    #define LORA_SS 53
    #define LORA_RST 9
    #define LORA_DIO0 2
    // Подключение светодиодного контрольного индикатора.
    #define LED 22

    // Установочный блок.
    void setup() {
      // Beginning of work with a serial port.
      Serial.begin (9600);
      // Кантакт 22 устанавливается выходом на светодиод.
      pinMode(LED, OUTPUT);
      // Цикл выполняется до тех пор, пока выводятся данные.
      while (!Serial);
      // Вывод сообщения на экран компьютера, через
      // последовательный com-порт компьютера.
      Serial.println("LoRa Receiver");

      // Выбр частоты согласно данному модулю.
      // Большинство частот это: 433E6, 866E6 и 915E6.
      if (!LoRa.begin(433E6)) {
      // Message to display on screen computer.
      Serial.println("Starting LoRa failed !!!");
      // Выполнение цикла 1 раз.
      while (1);
      }
      // Message to display on computer screen.
      Serial.println("Starting LoRa - Ok.");
      // The mode ascertainment of synchronization for a words.
      LoRa.setSyncWord(0xF3);
      // Delay for execution of the program on 0,10 second.
      delay(100);
    }

    void loop() {
      // Try to parse packet.
      int packetSize = LoRa.parsePacket();
      // If the data has come
      if (packetSize) {
      // Received a packet
      Serial.print("Received packet ");
      // Read packet
      while (LoRa.available()) {
      // Display on the screen of the computer of
      // the received data.
      Serial.print((char)LoRa.read());
      }
      // Print RSSI of packet
      Serial.print(" Packe ssize = ");
      Serial.println(packetSize);

      // Delay in performance for program one second.
      delay(1000);
      // Включение светодиода.
      digitalWrite(LED, HIGH);
      // Delay in performance for program one second.
      delay(1000);
      // Выключение светодиода.
      digitalWrite(LED, LOW);
      // Delay in performance for program one second.
      delay(1000);
      // Включение светодиода.
      digitalWrite(LED, HIGH);
      // Delay in performance for program one second.
      delay(1000);
      // Выключение светодиода.
      digitalWrite(LED, LOW);
      // Delay in performance for program one second.
      delay(1000);
      // Включение светодиода.
      digitalWrite(LED, HIGH);
      // Delay in performance for program one second.
      delay(1000);
      // Выключение светодиода.
      digitalWrite(LED, LOW);
      }
      // Delay in performance for program on 20 milliseconds.
      delay(20);
    }[code=cpp]
    Написаны программы в редакторе Arduino 1.8.7
    Радиомодуль LORA SX1278, 433 МГц, с разъёмом

    Спецификация LORA SX1278, 433 МГц,:
    напряжение питания: от 1,8 до 3,6 В;
    несущая частота: от 400 до 510 МГц;
    точность настройки: ±10 ppm;
    модуляция: FSK, GFSK, OOK/LoRa;
    мощность передатчика: ≤20 дБм;
    чувствительность приёмника: -139 дБм;
    рабочий ток: в режиме приёма – 11 мА, в режиме передачи – <120 мА (при Pвых = 20 dbm);
    скорость передачи данных: в режиме FSK 300 кбит/с, в режиме LoRa – 0.018 – 40 кбит/с;
    сопротивление антенного тракта: 50 Ом;
    интерфейс: SPI.
    --------------------------------------------------------------------------------
    Не могу понять что не так и как вернуть корректную работоспособность LoRa?
    Пожалуйста помогите!!!
     

    Вложения:

    Последнее редактирование: 28 авг 2024
  2. parovoZZ

    parovoZZ Гуру

    очевидно, что на USB цомпкутера какая-то помеха глушит связь.
     
    OlgaF нравится это.
  3. OlgaF

    OlgaF Нерд

    А как и каким образом проверить USB на наличие в нём создаваемой помехи?
     
  4. parovoZZ

    parovoZZ Гуру

    осциллографом
     
  5. OlgaF

    OlgaF Нерд

    Попробую..
    И вот ещё что удалось отыскать в интернете для возможности решения этого вопроса на одном сайте:

    Низкая помехозащищенность и отсутствие эффективных механизмов восстановления после помехи - серьезнейший недостаток USB-интерфейса. Особенно критичным он является для осциллографа-приставки, так как сфера использования осциллографа зачастую предполагает наличие импульсных помех и сильных ЭМИ в непосредственной близости к oscill. Также, выносная конструкция usb.oscill подставляет помехам уязвимый длинный участок кабеля, по которому производится USB-обмен.
    Повышение помехоусточивости может быть достигнуто следующими способами:
    • использование высококачественного USB-кабеля с двумя фильтрами (реально действенный способ, есть несколько положительных отзывов)
    • заземление общего провода входа oscill
    • заземление общего провода usb-интерфейса oscill (вместе с заземлением корпуса ПК)
    • укорочение USB-кабеля вплоть до расположения oscill внутри корпуса ПК
    • использование uart.oscill с кабелем-преобразователем, причем чип usb-to-uart должен находиться непосредственно в корпусе USB-AM разъема
    • отказ от USB-интерфейса как способа связи (при этом питание uart.oscill возможно оставить на USB) в пользу подключения к COM-порту ПК через схему сдвига уровней типа xxx232.
    • подключение через инфракрасный/bluetooth адаптер (в разработке).
     
  6. OlgaF

    OlgaF Нерд

    Спасибо вам огромное за ваш ответ parovoZZ!
    Помехи на радио-приёмник шли именно от USB-порта,, при этом радио-передатчик от USB-порта этого-же компьютера исправно работает отправляя сигналы.
    Решение оказалось простым:
    Повышение помехоусточивости может быть достигнуто следующими способами:
    ● использование высококачественного USB-кабеля с двумя фильтрами.
    ● радио-приёмник работает автономно от батареек используя дисплей для вывода данных