Модуль LoRa Ra-02 Begin и BeginPacket не работают в Arduino Nano

Вот, недавно тестирую модуль Лора Ра-02, видел много видео, его легко настроить, по такой схеме:

Модуль LoRa SX1278 ----- Плата Arduino Nano

3,3 В -------

Земля---------Земля

Ан/Нсс------D10

G0/DIO0------D2

SCK---------D13

МИСО----------D12

MOSI----------D11

RST-------------D9

Я использую очень распространенную библиотеку под названием sandeepmistry. и я попробовал этот код:

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

int counter = 1;

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println("LoRa Sender");
  if (!LoRa.begin(433E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);
  // отправляем пакет
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();
  counter++;
  delay(500);
}

Когда я запускаю его, он просто зависает в этой строке {Serial.println("Не удалось запустить LoRa!");

Затем я обновил код и попытался уменьшить частоту SPI, поскольку я использую Arduino Nano, теперь код такой:

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

int counter = 1;
int frequency = 8E6; // Установите здесь нужную частоту

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println("LoRa Sender");
  LoRa.setSPIFrequency(frequency); // Добавляем сюда недостающую точку с запятой
  if (!LoRa.begin(433E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);
  // отправляем пакет
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();
  counter++;
  delay(500);
}

Этот код передает строку Запуск LoRa не удался!, но он снова застревает здесь

Отправитель LoRa Отправка пакета: 1

Так почему бы ему не выполнить LoRa.beginPacket(); и не зациклить код? Почему здесь все заканчивается?

, 👍0


2 ответа


Лучший ответ:

0

Правильно ли вы установили выводы? Попробуйте сделать:

  LoRa.setPins(csPin, resetPin, irqPin);// устанавливаем CS, сброс, контакт IRQ

Существует проблема со способом подключения вашего SX1276 к плате, поэтому .begin() возвращает false.

,

Под csPin вы подразумеваете вывод SS?, а irq - вывод DIO0?, @Giri


-1

По моему опыту, я столкнулся с точно такой же ошибкой!!

После изучения множества форумов и устранения неполадок я определил основную причину: я подключал плату Arduino Uno / Nano к ноутбуку, на который подавалось питание 5 В. Поскольку платы Arduino (при подключении к источнику с более высоким током) всегда подают питание 5 В с контакта 3,3 В, в моём случае модуль LoRa получал питание 5 В! Поскольку модуль LoRa не может работать с напряжением 5 В, он выдавал ошибку.

После использования Level Shifter и подключения к плате Arduino Nano мне удалось исправить ошибку!!

Надеюсь, мой ответ будет полезен кому-то, кто столкнулся с подобной проблемой!

,

у вас есть плата, на которой вывод 5 В обозначен как вывод 3,3 В? Это совершенно неверно., @Juraj

@Juraj - У меня официальная плата Arduino, не могу сказать, что проблема в неправильном подключении пинов. Однако на официальных форумах Arduino упоминалось, что контакт 3,3 В выдает 5 В при подключении к более высокому току — перейдите по этой ссылке — https://forum.arduino.cc/t/using-lora-with-arduino-nano/1266604, @Giri

Вы неправильно поняли одну или несколько вещей. 1) Контакты ввода-вывода имеют напряжение 5 В. 2) Контакты 3,3 В не могут обеспечить достаточный ток., @Juraj

К вашему сведению - https://forum.arduino.cc/t/using-lora-with-arduino-nano/1266604/15, @Giri

@Juraj Не могли бы вы пояснить? Если ни 5 В, ни 3,3 В не могут обеспечить достаточный ток, тогда почему мы соединяем вывод 3,3 В Arduino с выводом 3,3 В LoRa?, @Giri

Контакт 3,3 В — это контакт с маркировкой 3.3, а не какой-либо другой контакт. Он предназначен для питания датчиков 3,3 В, но имеет ограниченную мощность и не подходит для питания беспроводных передатчиков., @Juraj

Главные проблемы LoRa — это 1. Подключение и 2. Питание., @Asif Uz Zaman

@Juraj Как вы упомянули, «контакт 3,3 В предназначен для питания датчика 3,3 В» — согласен. Вы также упомянули, что он не подходит для питания беспроводных передатчиков. Вы имеете в виду, что он не подходит для питания модуля LORA? Если да, то именно это я и имел в виду в своём сообщении. И я хочу понять «причину», по которой вы говорите, что он не подходит для питания беспроводных передатчиков. Это потому, что контакт 3,3 В Arduino обеспечивает меньшую мощность для беспроводных передатчиков? Или же он более мощный?, @Giri

Вы пишете «подает питание 5 В с контакта 3,3 В», @Juraj