Общение модулей nRF24L01+
- Войдите на сайт для отправки комментариев
Пнд, 10/10/2016 - 19:50
Доброго времени суток.
Приобрел россыпью десяток модулей nRF24L01+. Запускал тестовый скетч из библиотеки. Работает. Ардуины кидаются сообщениями. Конденсаторы напаял (и электролит, и керамику). На меге у передатчика отдельное питание со стабилизатора на 0,5А 3,3В. На Atmega328 питание идет с самой платы (она у меня самодельная). А вот собственный код не работает( 328 мега должна раз в 2 секунды скидывать значение переменной на Мегу, которая после приемки его должна вывести в порт. Но Мега ничего не выводит.
передатчик
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h" //подключаем библиотеки
RF24 radio(9, 10); // UNO передатчик
int out = 19641; //то, что будем передавать
const uint64_t pipe01 = 0xE8E8F0F0E2LL; //адрес
void setup() {
Serial.begin(57600);
delay(200);
radio.begin(); //запускаем радиомодуль
radio.setChannel(0x22); //выбор канала для передачи
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_MAX); //уровень сигнала
radio.openWritingPipe(pipe01);
}
void loop() {
radio.write(&out, sizeof(out));
delay(5000);
Serial.print(out);
out++;
}
/*
RF24 radio(7, 6); // MEGA приемник
RadioVybor = 1;
const uint64_t pipe00 = 0xE8E8F0F0E1LL;
*/
Приемник
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h" //подключаем библиотеки
RF24 radio(7, 6); // MEGA приемник
int in;
const uint64_t pipe01 = 0xE8E8F0F0E2LL;
void setup() {
delay(2000);
Serial.begin(57600);
radio.begin(); //запускаем радиомодуль
radio.setChannel(0x22); //выбор канала для передачи
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_MAX); //уровень сигнала
radio.openReadingPipe(1, pipe01);
radio.startListening();
}
void loop() {
bool done = false; //Вспомогательная переменная;
if ( radio.available() ) {
while (!done) { // Упираемся и
done = radio.read( &in, sizeof(in) ); // по адресу переменной in функция записывает принятые данные;
}
Serial.print(in);
}
}
/*
RF24 radio(9, 10); // UNO передатчик
const uint64_t pipe01 = 0xE8E8F0F0E2LL; //адрес
*/
Пробовал запускать сканер с Амперки. Мега. Децимия.
а если так #include <SPI.h> #include "nRF24L01.h" #include "RF24.h" //подключаем библиотеки RF24 radio(7, 6); // MEGA приемник int in; const uint64_t pipe01 = 0xE8E8F0F0E2LL; void setup() { delay(2000); Serial.begin(57600); radio.begin(); //запускаем радиомодуль radio.setChannel(0x22); //выбор канала для передачи radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_MAX); //уровень сигнала radio.openReadingPipe(1, pipe01); radio.startListening(); } void loop() { if ( radio.available() ) { radio.read( &in, sizeof(in) ); // по адресу переменной in функция записывает принятые данные; } Serial.print(in); } /* RF24 radio(9, 10); // UNO передатчик const uint64_t pipe01 = 0xE8E8F0F0E2LL; //адрес */и в приемник и передатчик добавить код после radio.begin(); вот этот код
а если так #include <SPI.h> #include "nRF24L01.h" #include "RF24.h" //подключаем библиотеки RF24 radio(7, 6); // MEGA приемник int in; const uint64_t pipe01 = 0xE8E8F0F0E2LL; void setup() { delay(2000); Serial.begin(57600); radio.begin(); //запускаем радиомодуль radio.setChannel(0x22); //выбор канала для передачи radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_MAX); //уровень сигнала radio.openReadingPipe(1, pipe01); radio.startListening(); } void loop() { if ( radio.available() ) { radio.read( &in, sizeof(in) ); // по адресу переменной in функция записывает принятые данные; } Serial.print(in); } /* RF24 radio(9, 10); // UNO передатчик const uint64_t pipe01 = 0xE8E8F0F0E2LL; //адрес */и в приемник и передатчик добавить код после radio.begin(); вот этот код
Нет, это не помогло.
в передатчик в 20 строке добавить
в передатчик в 20 строке добавить
И это, к сожалению, не помогло.
а библиотека новая
https://github.com/TMRh20/RF24
а тут читали?
http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
#include<SPI.h> #include<nRF24L01.h> #include<RF24.h> const uint64_t pipe= {0xF0F0F0F0E1LL}; RF24 radio(A0,A1); //Обратите внимание тут другое подключение byte message = 1; byte red; unsigned long CTime01; unsigned long LTime01; void setup() { Serial.begin(9600); radio.begin(); delay(100); radio.enableDynamicPayloads(); radio.openReadingPipe(1,pipe); radio.openWritingPipe(pipe); //Открывем трубу для отправки radio.startListening(); } void loop() { if ( radio.available() ) { radio.read( &red,sizeof(red) ); Serial.println(String(red)); }; CTime01 = millis(); if (CTime01 >= (LTime01 +100)) //Периодичность отправки пакетов { Serial.println("----------write------------"); radio.stopListening(); //Перестаем слушать radio.write(&message, sizeof(message)); // Отправляем ответ radio.startListening(); LTime01 = CTime01; message++; } }#include<SPI.h> #include<nRF24L01.h> #include<RF24.h> const uint64_t pipe= {0xF0F0F0F0E1LL}; RF24 radio(A0,A1); //Обратите внимание тут другое подключение byte message = 1; byte red; unsigned long CTime01; unsigned long LTime01; void setup() { Serial.begin(9600); radio.begin(); delay(100); radio.enableDynamicPayloads(); radio.openReadingPipe(1,pipe); radio.openWritingPipe(pipe); //Открывем трубу для отправки radio.startListening(); } void loop() { if ( radio.available() ) { radio.read( &red,sizeof(red) ); Serial.println(String(red)); }; CTime01 = millis(); if (CTime01 >= (LTime01 +100)) //Периодичность отправки пакетов { Serial.println("----------write------------"); radio.stopListening(); //Перестаем слушать radio.write(&message, sizeof(message)); // Отправляем ответ radio.startListening(); LTime01 = CTime01; message++; } }Ваш скетч работает
Осталось понять, что с моим не так(
а библиотека новая
https://github.com/TMRh20/RF24
а тут читали?
http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
Библиотека новая, там не читал, но сейчас прочел, вроде бы ничего нового не нашел.