Отправка и получение данных Arduino LORA

Я попытался разрешить отправку и получение данных, используя 2 Arduino Unos, 2 чипа LORA (SX1278 433 МГц), 2 антенны и 2 Arduino IDE.

Проблема с командой получения данных.

Это код для команды ОТПРАВИТЬ:

#include <SPI.h>
#include <LoRa.h>

int counter = 0;

const int ss = 10;          
const int reset = 9;     
const int dio0 = 2;

void setup() {
  Serial.begin(9600);
  LoRa.begin(433E6);
  LoRa.setPins(ss, reset, dio0);
  while (!Serial);

  Serial.println("LoRa Sender");

}

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

  // send packet
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();

  counter++;

  delay(5000);
}

На последовательном мониторе мне удалось отправить пакеты, но не получить. Это код ПОЛУЧЕНИЯ:

#include <SPI.h>
#include <LoRa.h>

const int ss = 10;        
const int reset = 9;       
const int dio0 = 2;

void setup() {
  Serial.begin(9600);
  LoRa.begin(433E6);
  LoRa.setPins(ss, reset, dio0);
  while (!Serial);

  Serial.println("LoRa Receiver");

}

void loop() {
  // try to parse packet
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    // received a packet
    Serial.print("Received packet '");

    // read packet
    while (LoRa.available()) {
      Serial.print((char)LoRa.read());
      Serial.print("hello ");
    }

    // print RSSI of packet
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
  }
}

Я использовал инструкции по подключению на этой странице git: https://github.com/sandeepmistry/arduino-LoRa < / а>


person mavericks1100    schedule 21.06.2018    source источник


Ответы (2)


Чтобы сделать эта плата работает, мне пришлось явно инициализировать SPI

SPI.begin(/*sck*/ 5, /*miso*/ 19, /*mosi*/ 27, /*ss*/ cs);

Может быть и у вас то же самое. Также следует правильно инициализировать Lora:

while (!LoRa.begin(433E6)) {
    Serial.print(".");
    delay(500);
}
Serial.println("LoRa Initializing OK!");

С кодом, который вы опубликовали, вы действительно не знаете, правильно ли он инициализирован или действительно отправляет какие-либо данные.

person Simone Salerno    schedule 20.12.2018

Сначала я не работал с библиотекой Lora. Работал с либараем SX1278. Так что я могу вам с этим помочь. Сначала ссылка на libaray - библиотеку Lora SX1278.h

Теперь вы можете спросить, почему я не использую библиотеку из исходного репозитория GitHub. Ну, я столкнулся с проблемой с этой библиотекой, и проблема заключается в следующем:

Библиотечная функция sx1278 :: getPacket () модифицирована для стабилизации функции приема Lora. Произошла ошибка, которая привела к панике. Длина полезной нагрузки, считанная из регистра REG_FIFO, не проверялась на допустимое значение, что привело к считыванию регистра REG_FIFO более 65000 раз. Более того, yield () добавлен в трудоемкие части этой функции.

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

T_packet_state = sx1278.sendPacketTimeoutACK(ControllerAddress, message); //T_packet_state is 0 if the packet data is sent successful.

Также для получения данных используйте эту функцию:

R_packet_state = sx1278.receivePacketTimeoutACK(); //R_packet_state is 0 if the packet data is received successfully.

И в начале кода просто определите несколько вещей:

//Lora SX1278:
#define LORA_MODE             10          //Add your suitable mode from the library
#define LORA_CHANNEL          CH_6_BW_125 //Ch number and Bandwidth
#define LORA_ADDRESS          3           //Address of the device from which you will send data
uint8_t ControllerAddress = 5;            //Address of receiving end device

Мой первый достойный ответ на StackOverflow. Скрестить пальцы

person Dinury    schedule 30.07.2018