Справка по отладке NRF24L01

Я пытался заставить NRF24L01 передавать "привет, мир", хотя устройства разговаривают друг с другом, они считывают зашифрованные данные. Я повсюду искал поддержки, но, к сожалению, пробовал решения, сколько мог. Я приложил приведенный ниже код и выходные данные.

Шаги для исправления с моей стороны:

  • Проверил проводку
  • перепроверил код и адрес
  • Использовался конденсатор
  • Изменена скорость передачи в бодах в соответствии со спецификацией приемопередатчика и случайными скоростями передачи в бодах

Мне нужна новая перспектива, пожалуйста, помогите!!

Передатчик:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 myradio(7, 8); // CE, CSN

const byte address[6] = "00001";

void setup() {
  myradio.begin();
  myradio.openWritingPipe(address);
  myradio.setPALevel(RF24_PA_MIN);
  myradio.stopListening();
}

void loop() {
  const char text[] = "Hello World";
  myradio.write(&text, sizeof(text));
}

Приемник:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 myradio(7, 8); // CE, CSN

const byte address[6] = "00001";

void setup() {
  Serial.begin(9600);
  myradio.begin();
  myradio.openReadingPipe(0,address);
  myradio.setPALevel(RF24_PA_MIN);
  myradio.startListening();
}

void loop() {
  if (myradio.available()) {
    char text[32] = " ";
    myradio.read(&text, sizeof(text));
    Serial.println(text);
  }
}

Я хотел бы добавить, что у меня есть некоторые базовые знания об Arduino.

Выходной сигнал: ?????????????????????????????????/

????????????????????

??????????????????????????????????

???????????????????????

, 👍0

Обсуждение

произошло что-то странное, я заставил это работать, теперь, когда я использовал регулятор 3,3 В и подключил VCC к источнику питания 5 В Arduino, он заработал. Я попробовал еще раз, через 3 часа он снова перестал работать, но соединения были те же. Я попробовал другую проводку, но ничего не вышло. Что может быть причиной этой проблемы сейчас?, @user85289


1 ответ


-1

Ваша проблема заключается в использовании &text. текст - это указатель на блок памяти с текстом в нем. Таким образом, &text - это указатель на переменную, в которой хранится указатель на блок памяти, в котором хранится текст.

То есть, например:

  • "Привет, мир" хранится, начиная с адреса 10.
  • текст - это переменная, хранящаяся по адресам 20 и 21 (это два байта для хранения адреса Hello world).
  • Использование текста дает вам 10, но использование &text дает вам 20.

Поскольку текст уже является указателем, вам просто нужно привести его к нужному типу указателя для целевой функции (возможно, uint8_t *).

,

Вы уверены ? (a) см. https://stackoverflow.com/questions/8412694/address-of-an-array и (b) справочный скетч nrf24L01: https://forum.arduino.cc/t/simple-nrf24l01-2- 4ghz-трансивер-демонстрация/405123/2, @6v6gt