nRF24L01 помощь с скетчем
- Войдите на сайт для отправки комментариев
Сб, 09/01/2016 - 21:53
Подскажите плиз что не так есть два скетча приемника и передатчика они работают то есть приемник в сиреал сыпет данные с передатчика, но если в передатчике выставить задержку delay(1000); то всё приемник перестает принимать данные, в чем проблема?
приемник
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> const uint64_t pipe = 0xF0F1F2F3F4LL; // идентификатор передачи, "труба" RF24 radio(9, 10); // CE, CSN void setup(){ Serial.begin(9600); radio.begin(); delay(2); radio.setChannel(9); // канал (0-127) // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS // RF24_250KBPS на nRF24L01 (без +) неработает. // меньше скорость, выше чувствительность приемника. radio.setDataRate(RF24_1MBPS); // мощьность передатчика RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM, radio.setPALevel(RF24_PA_HIGH); radio.openReadingPipe(1,pipe); // открываем первую трубу с идентификатором "pipe" radio.startListening(); // включаем приемник, начинаем слушать трубу } // radio.stopListening(); // останавливает приём (нужно перед началом передачи) void loop() { int data; if (radio.available()){ // проверяем не пришло ли чего в буфер. radio.read(&data, sizeof(data)); // читаем данные, указываем сколько байт читать Serial.print("data: "); Serial.println(data); } }
передачик
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> // https://github.com/maniacbug/RF24 const uint64_t pipe = 0xF0F1F2F3F4LL; // идентификатор передачи, "труба" RF24 radio(9, 10); // CE, CSN void setup(){ Serial.begin(9600); radio.begin(); delay(2); radio.setChannel(9); // канал (0-127) // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS // RF24_250KBPS на nRF24L01 (без +) неработает. // меньше скорость, выше чувствительность приемника. radio.setDataRate(RF24_1MBPS); // мощьность передатчика, RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM, radio.setPALevel(RF24_PA_HIGH); radio.openWritingPipe(pipe); // открываем трубу на передачу. } void loop() { int data = analogRead(0); // читаем значение radio.write(&data, sizeof(data)); // отправляем данные и указываем сколько байт пакет Serial.print("data: "); Serial.println(data); // delay(1000); }
avgaz, дружище, можешь описать процесс заливания скетча на ардуино?
он просто не принимает данные, без задержки в передатчике нормально все
ещё один нюанс, если на передатчике отключить разем CE то с задержкой нормально работает, в чом прикол то?
> чом
>_<
13-я строка в первом и 12-я во втором скетче зачем?
Снижай скорость передачи, если лезут ошибки, и увеличивай количество повтором отправки данных.
CE - это внезапно Chip Enable.
керамические конденсаторы 0.01 - 1 мкф по питанию на каждый модуль припаяли?
http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
"NOTE!! Most * problems with intermittent operation are because of electrical noise on the 3.3V Power supply. The MEGA is more of a problem with this. Solution: ADD bypass capacitors across GND and 3.3V ON the radio modules. One user said, "Just Solder a 100nF ceramic cap across the gnd and 3.3v pins direct on the nrf24l01+ modules!" Some have used a 1uF to 10uF capacitor."
керамические конденсаторы 0.01 - 1 мкф по питанию на каждый модуль припаяли?
http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
"NOTE!! Most * problems with intermittent operation are because of electrical noise on the 3.3V Power supply. The MEGA is more of a problem with this. Solution: ADD bypass capacitors across GND and 3.3V ON the radio modules. One user said, "Just Solder a 100nF ceramic cap across the gnd and 3.3v pins direct on the nrf24l01+ modules!" Some have used a 1uF to 10uF capacitor."
да только 10мкф
а зачем вам delay ? тут пытаюсь везде от него избавляться :)