NRF24L01 PA+LNA с Arduino
Я использую модуль NRF для удаленной связи. Я много исследовал nrf, но мой модуль nrf не работает. Это мой код передатчика:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8,4000000); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin(115200);
radio.begin();
radio.openWritingPipe(address);
radio.setRetries(15,15);
radio.setPALevel(RF24_PA_HIGH);
}
void loop() {
radio.stopListening();
const char text[32]="Hello world";
if(radio.write(&text,sizeof(text))){
Serial.println("Mesaj gönderildi");
}
delay(1000);
Это мой код получателя:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8,4000000); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
radio.begin();
delay(400);
radio.openReadingPipe(1, address);
radio.setPALevel(RF24_PA_MAX);
// radio.startListening();
pinMode(10,OUTPUT);
}
void loop() {
const char text[32]="";
radio.startListening();
if(radio.available())
{
while(radio.available()){
radio.read(&text[0],sizeof(text[0]));
Serial.println(text);
delay(1000);
}
}
delay(5);
}
Я попробовал setPAlevel min, но изменений нет. На стороне передатчика функция записи возвращает true, но на стороне приемника я ничего не могу получить. Кроме того, если я заменю кабель, подключенный к мисо, кабелем, подключенным к mosi на стороне передатчика, функция записи все равно вернет true. Я также использовал адаптер ams1117
@koraysonal, 👍2
Обсуждение1 ответ
В коде получателя вы читаете только один байт, как указано в 6v6gt. Проверьте библиотеку, чтобы узнать, как работает read()
.
Если вы следуете примеру начала работы, вы должны читать байты в получателе следующим образом:
char text[32];
if (radio.available())
{
uint8_t bytes = radio.getPayloadSize(); // получаем размер полезной нагрузки
radio.read(&text, bytes); // извлекаем полезную нагрузку из FIFO
}
Не используйте const
для text
в получателе.
Кроме того, вам не нужно использовать st opListening
и startListening
в loop()
. Им нужно просто перейти к setup()
.
Ошибка передачи или истекло время ожидания. Я пробовал много вещей, но эта ошибка все еще сохраняется., @koraysonal
Обновите код вопроса, который вы пробовали последним., @Fahad
- nRF24L01+ Невозможно установить адрес
- Состояние цифрового вывода Arduino не передается через NRF24L01, тогда как состояние аналогового вывода передается, почему?
- Как отправить данные датчика с Arduino через NRF24L01 на Raspberry Pi
- Проблемы передачи NRF24L01 между Arduino UNO и Arduino Nano
- nRF24L01 - пропускает конечные символы во время передачи
- nrf24l01+ противоречит самому себе?
- Не вызовут ли помехи одновременно работающие радиомодули nrf24L01 ?
- Отправка строк из NRF24L01 в приложение
Из кода вашего приемника:
radio.read(&text[0],sizeof(text[0]));
Это выглядит странно.sizeof(text[0])
занимает всего один байт., @6v6gtЯ попробовал эту покупку сейчас, я пытаюсь запустить примеры в Arduino. Контакты Mosi и Miso не подключаются к микроконтроллеру, но вывод, который я получаю, следующий: Передача успешна., @koraysonal
Кроме того, я получаю сообщение об ошибке радиооборудования, которое не отвечает, когда Mosi подключен к контакту Mosi Arduino на адаптере, а Miso на адаптере подключен к контакту Miso на Arduino. Когда я меняю местами кабели и подключаю их, передача и происходит прием., @koraysonal
const char text[32]="";
от получателя также выглядит странно, поскольку предполагается, что этот буфер доступен для записи. В любом случае, используйте код из этой темы: https://forum.arduino.cc/t/simple-nrf24l01-2-4ghz-transceiver-demo/405123, чтобы проверить свои устройства nrf24L01. Большинство проблем с этими устройствами nrf24L01 связаны с неадекватными источниками питания., @6v6gt«Когда я меняю кабели и подключаю их, происходит передача и прием». Означает ли это, что если вы перекрестите MISO и MOSI на плате адаптера nrf24L01, все будет работать как положено? Я был бы удивлен, учитывая другие ошибки, но я полагаю, что это может быть где-то ошибка в маркировке., @6v6gt
Да. Но это происходит только в самом начале. Я загрузил программу в Arduino, затем получил сообщение об ошибке «Радиооборудование не отвечает». Затем я подключаю кабель Mosi на плате NRF к мисо на Arduino. Ошибка «Радиооборудование не отвечает» исчезнет. Возникает ошибка тайм-аута передачи. Затем, после подключения mosi в модуле nrf к mosi на Arduino и мисо к мисо на Arduino, передача становится успешной., @koraysonal