Аномалия NRF24L01+ (разве так бывает?)
- Войдите на сайт для отправки комментариев
Вс, 22/03/2015 - 21:32
Доброго времени суток товарищи!
Спасайте нуба, помогайте ребят !!!
При первом подключении модуля NRF24L01+ к Arduino UNO и Arduino mini pro возникла непонятная аномалия!
Вроде бы всё правильно подключено но пакеты с mini pro не уходят, просто моргает светодиод который посажен на 13ю ногу
Но есть непонятная фигня!!!
Если на arduino mini pro + 5 вольт подаю не на пин RAW как положено а на свободный пин VCC то пакеты уходят!!!
Получается что я такими действиями подаю на NRF24 целых 5 вольт!!! а не 3.3 как положено. Обходя Vin(RAW) стабилизатор, на который по идее и надо подавать напругу.
И ещё пришлось посадить конденсатор 100 uF x 16 v между VCC и GND иначе 90% пакетов теряются!
И если взяться за кварц который на модуле nrf24 голыми пальцами или дотронуться щупом от мультиметра то пакеты сразу начинают хорошо уходить. Почему?
Суть скетча такова:
На передатчике (arduino mini pro + nrf24) посылаю в эфир пакет который ловит приёмник (arduino uno + nrf24) и если по воздуху пришла 1 то включаю светодиод если 0 то выключаю его.
Библиотека NRF24
Ниже скетчи
Передатчик
#include <SPI.h> #include "nRF24L01.h" #include "RF24.h" int msg[1]; // Set up nRF24L01 radio on SPI bus plus pins 9 & 10 //Контакты от радиомодуля NRF24L01 подключаем к пинамнам -> Arduino //SCK -> 13 //MISO -> 12 //MOSI -> 11 //CSN -> 10 //CE -> 9 RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала передачи void setup(void){ radio.begin(); radio.openWritingPipe(pipe); // Открываем канал передачи Serial.begin(9600); } void loop(void){ delay(100); msg[0] = 1; radio.write(msg, 1); delay(100); msg[0] = 0; radio.write(msg, 1); }
Приёмник
#include <SPI.h> #include "nRF24L01.h" #include "RF24.h" int msg[1]; int led1 = 6; int led2 = 5; // Set up nRF24L01 radio on SPI bus plus pins 9 & 10 //Контакты от радиомодуля NRF24L01 подключаем к пинамнам -> Arduino //SCK -> 13 //MISO -> 12 //MOSI -> 11 //CSN -> 10 //CE -> 9 RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала //светодиоды подключены к этим пинам //->6; //->5; void setup(void){ pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); Serial.begin(9600); radio.begin(); radio.openReadingPipe(1,pipe); // Открываем один из 6-ти каналов приема radio.startListening(); // Начинаем слушать эфир } void loop(void){ if (radio.available()){ bool done = false; while (!done){ done = radio.read(msg, 1); //если пришла в пакете 1 от Arduino mini pro то включается светодиод (горит) led1 if (msg[0] == 1){ Serial.println("0"); digitalWrite(led1, 255); } //если пришёл в пакете 0 от Arduino mini pro то выключается светодиод (не горит) led1 if (msg[0] == 0){ Serial.println("0"); digitalWrite(led1, 0); } } } }
UNO использую в качестве приёмника а Arduino mini pro 5v 5M в качестве передатчика и подключаю по следующей схеме
NRF24 Arduino UNO
//SCK - pin- 13
//MISO - pin- 12
//MOSI - pin- 11
//CSN - pin- 10
//CE -pin- 9
NRF24 Arduino mini pro
//SCK - pin- 13
//MISO - pin- 12
//MOSI - pin- 11
//CSN - pin- 10
//CE - pin- 9
NRF24 у меня такая

Питание модуля NRF2401l+ на пин VCC(+3.3) arduino mini, землю соответственно на GND который рядом с пином RAW.
Питание модуля NRF2401l+ на пин VCC(+3.3 если arduino mini pro запитано через RAW) и минус на GND который рядом. ( так не работает nrf24)
Питание модуля NRF2401l+ на пин VCC(+5 если arduino mini pro запитано через RAW) и минус на GND который рядом. ( так не работает nrf24)
И ещё пришлось посадить конденсатор 100 uF x 16 v между VCC и GND иначе 90% пакетов теряются!
И если взяться за кварц который на модуле голыми пальцами или дотронуться щупом от мультиметра то пакеты сразу начинают хорошо уходить. Почему?
Arduino Mini pro у меня такая Ссылка на товар

Питание arduino mini +5 вольт на пин RAW и минус на GND который рядом. ( так не работает nrf24)
Питание arduino mini +5 вольт на пин VCC и минус на GND который рядом. ( так работает nrf24)
Питание модуля NRF2401l+ на пин VCC а землю соответственно на GND который рядом с пином RAW.
Прошиваю Arduino mini с помощью FT232RL

Так вот если я подключаю arduino min pro к конвертору 232 то модуль начинает работать так как питание +5 вольт от компьютера с USB порта идёт прямиком на VCC
мда. где же ты прочитал что 5В надо подавать на raw
DEL (недочитал пост)
А куда тогда и сколько? RAW ето Vin, или я не прав? Тут говорят что от 3.8 до 12 вольт. Ну если даже я дам 8 вольт или 12, что измениться? На выходе (VCC) всёравно 3.3 будет. А с 3.3 вольтами не пашет у меня, а если даю не на RAW а на VCC 5 вольт (получается что и на модуле тоже 5 вольт) то так работает. Также если arduino mini pro с подключынным nrf24 и воткнутым конвертором ft232 в комп тоже работает так как берётся 5 вольт с USB порта и прямиком в VCC.
там ошибка. точнее не все так просто. подать можно 5В на raw (почитай лучше)
короче если питаешь всю схему от 5В внешнего питания подай просто на vcc. если больше 5В то подавай на raw. и это будет только питание ардуины. для nrf нужен еще стабилизатор на 3.3В (если бы у тебя ардуина была 3.3В было бы проще)
Да я почитал, теперь более понятно стало. Сел сейчас и попробовал. Есть UNO, взял с неё 3 вольта и поддал на модуль. Заработало но оооооочень плохо, пакет уходит через раз или может после ребута ваще не уходить!
Но вот если я берусь голыми пальцами за кварц на модуле то пакеты начинают улетать хорошо!
С чем связано?
Надо под модуль отдельный стабилизатор с хорошим обвесом? Раз 3.3 вольта от стабилизатора arduino mini pro и мало. Значит нужен отдельный хороший стабилизатор.
Что то мне подсказывает чт по питанию модуль очень привередлив. И даже питаясь стабилизатора от макетки не даёт того что нужно
Питался даже этим
Есть у меня гдет L1117, пойдёт для стабилизатора?
LM1117 разные бывают,если на 3.3 то пойдет
Да 3.3 вольтовая.
да нормально там. конденсатор на модуль nrf по питанию напаивал?
Да, как доктор прописал. У меня 4 модуля я к каждому припаял по одному электролиту, на 1й 100мкФ, на 2й 20мкф, на 3 10мкф и на 4 4,7 мкф. Для проверки напаял разные. Но пакеты уходят редко Кроме того на котором 100мкф. И еще я попробоваля UNO в качестве передатчика и эффекта нуль! Все делаю как все вроде а не пашет, Все глаза сломал на проверку подключения и ляпов от китайских братьев. Я почемут уверен что прабла в питании модуля а вот где? Искать та негде там, пару резисторов и кондеров.
тогда попробуй следующее
https://yadi.sk/d/CXjuENmaEEwun
скачай файл rf24.rar
поставь себе эту либу (перенеси ту что у тебя есть куда нибудь)
там есть rx_test и tx_test. залей и проверь
+ это модицифицированная либа. использую только ее сейчас. избавила от глюков типа дотронутся до кварца и т.д. соответственно примеры на стандартной либе не заработают. но самые нужные я оставил scanner и status, и добавил тесты дла приемника и передатчика
на сколько я понял из своих эксперементов передающая часть
терпеть не может функцию delay если ее поставить сразу после передачи данных.
я делал так:
основное время модуль стоит в режиме приема , а на передачу переводил непосредственно перед отправкой пакета,
а после отправки опять на прием после чего можно и паузу поставить
работа приемной части только по прерыванию
--------------
передаю блоки по 32 байт с паузой равной секунде. за пару дней только один пакет был потерян ,
расстояние порядка 10 метров . но у соседа за стенкой wifi на 2 вата работает может из за этого потеря была