Аномалия NRF24L01+ (разве так бывает?)

explosivebit
Offline
Зарегистрирован: 22.03.2015
Доброго времени суток товарищи!
 
Спасайте нуба,  помогайте ребят !!!
 
При первом подключении модуля 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 то выключаю его. 
 
 
Ниже скетчи
 
Передатчик
 
#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
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

мда. где же ты прочитал что 5В надо подавать на raw

Фил
Offline
Зарегистрирован: 22.03.2015

DEL (недочитал пост)

explosivebit
Offline
Зарегистрирован: 22.03.2015

А куда тогда и сколько? RAW ето Vin, или я не прав? Тут говорят что от 3.8 до 12 вольт. Ну если даже я дам 8 вольт или 12, что измениться? На выходе (VCC) всёравно 3.3 будет. А с 3.3 вольтами не пашет у меня, а если даю не на RAW а на VCC 5 вольт (получается что и на модуле тоже 5 вольт) то так работает. Также если arduino mini pro с  подключынным nrf24 и воткнутым конвертором ft232 в комп тоже работает так как берётся 5 вольт с USB порта и прямиком в VCC. 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

там ошибка. точнее не все так просто. подать можно 5В на raw (почитай лучше)

короче если питаешь всю схему от 5В внешнего питания подай просто на vcc. если больше 5В то подавай на raw. и это будет только питание ардуины. для nrf нужен еще стабилизатор на 3.3В (если бы у тебя ардуина была 3.3В было бы проще)

explosivebit
Offline
Зарегистрирован: 22.03.2015

Да я почитал, теперь более понятно стало. Сел сейчас и попробовал. Есть UNO, взял с неё 3 вольта и поддал на модуль. Заработало но оооооочень плохо, пакет уходит через раз или может после ребута ваще не уходить!

Но вот если я берусь голыми пальцами за кварц на модуле то пакеты начинают улетать хорошо!

С чем связано?

Надо под модуль отдельный стабилизатор с хорошим обвесом? Раз 3.3 вольта от стабилизатора  arduino mini pro  и мало. Значит нужен отдельный хороший стабилизатор.

Что то мне подсказывает чт по питанию модуль очень привередлив. И даже  питаясь стабилизатора от макетки не даёт того что нужно 

Питался даже этим

Есть у меня гдет L1117, пойдёт для стабилизатора?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

 

LM1117 разные бывают,если на 3.3 то пойдет

explosivebit
Offline
Зарегистрирован: 22.03.2015

Да 3.3 вольтовая.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да нормально там. конденсатор на модуль nrf по питанию напаивал?

explosivebit
Offline
Зарегистрирован: 22.03.2015

Да, как доктор прописал. У меня 4 модуля я к каждому припаял по одному электролиту, на 1й 100мкФ, на 2й 20мкф, на 3 10мкф и на 4 4,7 мкф. Для проверки напаял разные. Но пакеты уходят редко Кроме того на котором 100мкф. И еще я попробоваля UNO в качестве передатчика и эффекта нуль! Все делаю как все вроде а не пашет, Все глаза сломал на проверку подключения и ляпов от китайских братьев. Я почемут уверен что прабла в питании модуля а вот где? Искать та негде там, пару резисторов и кондеров.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

тогда попробуй следующее

https://yadi.sk/d/CXjuENmaEEwun

скачай файл rf24.rar

поставь себе эту либу (перенеси ту что у тебя есть куда нибудь)

там есть rx_test и tx_test. залей и проверь

+ это модицифицированная либа. использую только ее сейчас. избавила от глюков типа дотронутся до кварца и т.д. соответственно примеры на стандартной либе не заработают. но самые нужные я оставил scanner и status, и добавил тесты дла приемника и передатчика

Vладимир
Offline
Зарегистрирован: 27.01.2015

на сколько я понял из своих эксперементов передающая часть 

терпеть не может функцию delay если ее поставить сразу после передачи данных.

я делал так:

основное время модуль стоит в режиме приема , а на передачу переводил непосредственно перед отправкой пакета,

а после отправки опять на прием после чего можно и паузу поставить

работа приемной части только по прерыванию

--------------

передаю блоки по 32 байт с паузой равной секунде. за пару дней только один пакет был потерян ,

расстояние порядка 10 метров . но у соседа за стенкой wifi на 2 вата работает может из за этого потеря была