NRF24L01 Связь

Всем доброе утро. Я только недавно присоединился к этому сайту после проблем на форуме Arduino со входом в систему. Я делаю проект с радиоуправляемой машиной с Arduino Nano и модулями NRF24L01. Прошлой ночью я не спал поздно, укорачивая провода, обжимая и обрезая их, чтобы они подходили к NRF24L01. На прошлой неделе я также припаял конденсатор для уменьшения шума, как продолжение упомянутого выше метода. Я использовал следующие коды для передатчика и приемника. Получатель выдает мне это сообщение об ошибке: «недействительное значение не игнорируется, как должно быть». Я не эксперт в кодировании, хотя я взял два курса для этого. Пожалуйста, помогите мне исправить эти коды. Вот коды:

Передатчик '''//Кодировка передатчика для радиоприемопередатчика nrf24L01. //пример привет мир // https://www.electroniclinic.com/

/* штифты соединения

  • vcc 3.3
  • земля земля
  • пин9
  • CSN pin8
  • sck pin13
  • Mosi pin11
  • мисо pin12

*/

#include <SPI.h>
 
#include <nRF24L01.h>
 
#include <RF24.h>
 
#define CE_PIN 9
 
#define CSN_PIN 8


const uint64_t pipe = 0xE8E8F0F0E1LL;

RF24 radio(CE_PIN, CSN_PIN);

char data[] = "Hello World, Electronic Clinic"; 

void setup()
 {
 Serial.begin(9600);
 
 radio.begin();
 
 radio.openWritingPipe(pipe);
 }

void loop()
 {

 radio.write( data, sizeof(data) );
 
 
 }

Получатель

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(9, 8); // CE, CSN

const byte address[6] = "00001";

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

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

, 👍-1

Обсуждение

это сайт вопросов и ответов ... это не чат-форум ... пожалуйста, воздержитесь от включения не относящейся к делу информации в свой пост ... проблемы с форумом arduino, длительность обжима проводов и время пайки конденсаторов не имеют отношения к проблема ... пожалуйста, задайте конкретный вопрос, а также соответствующую информацию, например, где припаян конденсатор, @jsotola

Ладно, извини за это. Что мне сделать, чтобы мой код заработал? Я включил код ошибки, поэтому решил, что мне нужна помощь с кодом., @Gizmo8

Ладно, извините за это, ребята, я перепутал порты. По иронии судьбы, я как раз изучал радиочасти кода, и кто-то только что упомянул трубы. Код загрузился, но я не вижу текста., @Gizmo8


1 ответ


0

Это может быть полезно.

https://www.deviceplus.com/arduino/nrf24l01-rf-module-tutorial/

Я думаю, вам нужно использовать один и тот же адрес канала для модулей чтения/записи. В вашем примере вы пишете на один адрес канала (0xE8E8F0F0E1LL;), но затем получаете на другой адрес ("00001").

Я бы посоветовал вам сначала использовать один из примеров скетча Arduino, а затем начать работать с основами. Это поможет проверить вашу проводку и конфигурацию. После этого приступайте к настройке программного обеспечения в соответствии со своими потребностями.

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

Надеюсь, это поможет вам

,

Хорошо, извините за это, я перепутал порты. По иронии судьбы, я как раз изучал радиочасти кода, а вы только что упомянули трубы. Я просто смотрел на это. Код загрузился, но я не вижу текста. Я попробую эти основные скетчи снова. Я думаю, что они не работали раньше из-за аппаратной проблемы. Спасибо., @Gizmo8

Итак, как мне узнать, какой адрес использовать? Извините, я новичок в радиотрансиверах и приемниках. Это как-то связано с шестнадцатеричным преобразованием? Он преобразуется в 1000340517089. Означает ли это что-то для константного байтового адреса?, @Gizmo8

Итак, должны ли первые 5 бит преобразованного шестнадцатеричного числа быть в константном битовом адресе получателя? Я пытаюсь понять жаргон сейчас в учебнике, который вы предоставили. Я буду читать дальше., @Gizmo8

Я просто что-то запутался в константном байтовом адресе [6], в соответствии с uint64_t, на приемнике. Я читал статью об использовании двух младших значащих битов из шестнадцатеричной системы счисления. В этом случае должен ли постоянный байтовый адрес [6] = 00001, скажем, постоянный байтовый адрес [6] = E1/000E1 или 0x000E1?, @Gizmo8

Итак, скетч «Начало работы» сработал. Проблема была в том, что я ничего не мог прочитать из-за скорости передачи данных. Я заметил, что моя скорость передачи всегда должна превышать 115200. Поэтому я меняю скорость передачи на ту, что в последовательном мониторе. Однако потребовалось немного времени, чтобы показать все буквы для передачи. Тем не менее, я продолжал получать сообщение «Ошибка передачи или время ожидания истекло» на стороне передатчика. Затем на стороне приемника я продолжал получать «Радиооборудование не отвечает». Я думаю, это потому, что мои провода недостаточно плотно обжаты на конце гнездового разъема. Он передает после того, как я шевелю провод., @Gizmo8