Здравствуйте, есть 2 модуля Nrf24l01. Один подключён к arduino uno через Joystick Shild
второй к mega через адаптер, адаптер от 5 вольт.
Проверял модули на сканере эфира, оба работают, на обоих микроконтроллерах.
Запустил программу по обучалке от AlexGyver (код ниже), который просто отсылает цифры а второй модуль их принимает
//приёмниик RX
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(22, 23); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
void setup() {
Serial.begin(9600); // открываем порт для связи с ПК
radio.begin(); // активировать модуль
radio.setAutoAck(0); // режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); // (время между попыткой достучаться, число попыток)
radio.enableAckPayload(); // разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); // размер пакета, в байтах
radio.openReadingPipe(1, address[0]); // хотим слушать трубу 0
radio.setChannel(0x80); // выбираем канал (в котором нет шумов!)
radio.setPALevel (RF24_PA_MAX); // уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
radio.setDataRate (RF24_250KBPS); // скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
//должна быть одинакова на приёмнике и передатчике!
//при самой низкой скорости имеем самую высокую чувствительность и дальность!!
radio.powerUp(); // начать работу
radio.startListening(); // начинаем слушать эфир, мы приёмный модуль
}
void loop() {
byte pipeNo, gotByte;
while (radio.available(&pipeNo)) { // слушаем эфир со всех труб
radio.read(&gotByte, sizeof(gotByte)); // чиатем входящий сигнал
Serial.print("Recieved: ");
Serial.println(gotByte);
}
}
//передатчик Tx
#include <SPI.h> // библиотека для работы с шиной SPI
#include "nRF24L01.h" // библиотека радиомодуля
#include "RF24.h" // ещё библиотека радиомодуля
RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
byte counter;
void setup() {
Serial.begin(9600); // открываем порт для связи с ПК
radio.begin(); // активировать модуль
radio.setAutoAck(0); // режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); // (время между попыткой достучаться, число попыток)
radio.enableAckPayload(); // разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); // размер пакета, в байтах
radio.openWritingPipe(address[0]); // мы - труба 0, открываем канал для передачи данных
radio.setChannel(0x80); // выбираем канал (в котором нет шумов!)
radio.setPALevel (RF24_PA_MAX); // уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
radio.setDataRate (RF24_250KBPS); // скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS,
//должна быть одинакова на приёмнике и передатчике!
//при самой низкой скорости имеем самую высокую чувствительность и дальность!!
radio.powerUp(); // начать работу
radio.stopListening(); // не слушаем радиоэфир, мы передатчик
}
void loop() {
Serial.print("Sent: ");
Serial.println(counter);
radio.write(&counter, sizeof(counter));
counter++;
delay(10);
}
Менял скорость передачи, каналы (radio.setChannel(0x80);) на 0x10, 0x60.
Выключил режим подтверждения приёма ( radio.setAutoAck(0);).
Сначала загрузил скетч на uno ка передатчик, проверил com порт вытащил usb провод, подключил uno к питанию, далее загрузил скетч на Mega, но com порт пустой. В чём может быть проблема, подскажите, пожалуйста?