• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Nano + NRF24L01+ - problem z komunikacją
#1
Witam,

potrzebuję Waszej, gdyż mam problem z zestawieniem połączenia pomiędzy dwoma płytkami:
1. Arduino UNO + NRF24L01+ połączone poprzez SPI, z wgraną biblioteką RF24-master
2. Arduino NANO + NRF24L01+ podłączone przez SPI, z wgraną tą samą biblioteką.

Jeden z przykładów, to pingpair. Na UNO zapinam GND do PIN7, wgrywam sketch i widzę w konsoli że wysyła, ale failed.
Ten sam sketch wgrywam do NANO, bez mostkowania 7 pinu z GND i widzę w konsoli że wyłapuje Payback i odsyła odpowiedź

Gdy zamienię je rolami, UNO nie pokazuje że odebrało coś od NANO, NANO zaś pokazuje oczywiście że wysyła, ale failed.

Zamieniałem moduły miejscami, ale to samo. Doczytałem, że 3.3V lubi być niestabilne, więc w VCC i GND na płytkach, dodałem 40uF kondensatory. To również nie pomogło. Próbowałem ze stepdown ustawionego na 3.3V zasilić moduł podłączony do NANO, ale wtedy moduł nie działa wcale (printdetails() pokazuje inne parametry niż w rzeczywistości).

Żaden inny example nie działa, poza pingpair. Próbowałem GettingStarted, ale jak bym ról nie ustawiał, to zero komunikacji.

Podpowiecie, co robię nie tak?? Czy może muszę mieć drugie UNO, żeby ze sobą zagadały??
 
Odpowiedź
#2
Z czego byś nie zasilał NRF24 to na jego płytce trzeba dodać kondensator, najlepiej para 100n ceramiczny + 20-1000u elektrolityczny, dobry, Low ESR. Zasilać można np. z baterii 4-5,5V + jakiś stabilizator, czy jakaś przetwornica ale zasilana z ładowarki telefonicznej 5V, a nie z tego samego portu co Arduino - jeśli masz tu problem to samo dodanie innego stabilizatora jak widać nie musi pomóc, już przez samo Arduino prąd jest dławiony, a sam port USB może nie dawać tyle ile trzeba.
Mi ruszyło po użyciu kabelków w tym samym kolorze. I dwóch NANO.
Hahaha.
Podłączyłem do UNO i NANO, odtworzyłem to samo zachowanie. Ale wyciągnięte moduły miały przylutowane kondensatory, także na pewno je kiedyś używałem, a że nie były w koszu to działały. Przypomniałem sobie, że na pewno oba były wpięte do stykówki razem z modułami NANO. Odtworzyłem to ( z 2x NANO) i znowu zaczęło działać. Same RF oczywiście wiszące na kabelkach. Ustawienie mocy radia jest domyślne. Moduły są metr od siebie i niewłaściwe położenie powoduje, że dolatuje tylko mały procent komunikacji. Są bardzo kapryśne, także po paru godzinach zabawy zmieniłem na ESP8266 (2$)  i RF2401 (0,5$) wylądowały w pudle zapomnienia.
Inna sprawa, jak używasz wyboru roli przez pin, to oba moduły Arduino muszą mieć podpięte pod niego kabelki, jeden do VCC, drugi do GND, chyba że jest tam gdzieś w kodzie PULLUP włączony lub wpisany HIGH (jak w przykładzie, który akurat ja używam - to samo co INPUT_PULLUP).
Z tego co ustaliłem najlepiej działa na przykładach stąd : https://howtomechatronics.com/tutorials/...-tutorial/ z radiem ustawionym na minimum. A z tego wnioskuję, że problemem jest zasilanie, ja mam tylko jakieś pastylki wlutowane ceramiczne 100n, sam elektrolit z dużym ESR nie gwarantuje poprawy. Miłej zabawy.
 
Odpowiedź
#3
Cytat:Zasilać można np. z baterii 4-5,5V + jakiś stabilizator, czy jakaś przetwornica ale zasilana z ładowarki telefonicznej 5V, a nie z tego samego portu co Arduino - jeśli masz tu problem to samo dodanie innego stabilizatora jak widać nie musi pomóc, już przez samo Arduino prąd jest dławiony, a sam port USB może nie dawać tyle ile trzeba.
Mi ruszyło po użyciu kabelków w tym samym kolorze. I dwóch NANO.
Trochę nie precyzyjnie napisałem. Step down był zasilany z zasilacza 5V 1A Smile a nie z Arduino, bo tak jak napisałeś, nie specjalnie miało by to jakiś sens.
Rozumiem, że moduł powinien bez problemu wstawać na zewnętrznym zasilaniu??

Cytat:Odtworzyłem to ( z 2x NANO) i znowu zaczęło działać. Same RF oczywiście wiszące na kabelkach. Ustawienie mocy radia jest domyślne.
Ale oba moduły zasilasz zewnętrznie tak?? Nie potrzebuję wspólnej masy dla stepdowna i arduino??

W kodzie było w setupie było domyślnie HIGH, więc kabelkiem GND się sterowało tylko na jednym urządzeniu.

Wymienie te swoje kondensatory na takie jak pisałeś, ceramika 103 i elektrolityczny 470uF. Zobaczymy co z tego wyjdzie
 
Odpowiedź
#4
Zawsze musi być wspólna masa, ja moduły RF zasilam z Arduino. Kolory kabelków i model Arduino nie mają znaczenia. Po prostu coś nie tak miałem z tym UNO/kabelkami, na innym zestawie teraz działa (tamten zestaw na 2xNano dalej działał jak wróciłem). Teraz podłączyłem inny model UNO i też działa. Czy tamto jest uszkodzone - na razie nie wiem. Po prostu tak wygląda zabawa na pająka, coś łączy, nie łączy.
Odpaliłem jeszcze przykład Transfer. Działał kiepsko, urywała się w ogóle komunikacja Arduino z nadajnikiem, dodałem linijkę z ustawieniem mocy i działa:
Kod:
//W  Setup
 radio.openWritingPipe(pipes[0]);
 radio.openReadingPipe(1,pipes[1]);
 radio.setPALevel(RF24_PA_MIN); //Dodana linijka
 radio.startListening();                 // Start listening
 radio.printDetails();                   // Dump the configuration of the rf unit for debugging
Także nawet z kondensatorem 100n (104) i zasilanie z Arduino to za mało.
 
Odpowiedź
#5
Czyli reasumując:
Zasilanie stepdown z zasilaniem zasilaczem 5V 1A, skręcony na 3.3V. Do płytki modułu lutuję 104n+ 470uF. Do masy ze stepdowna, podpinam również masę z arduino.

Nic nie pomieszałem??
 
Odpowiedź
#6
OK. Ale na początek po prostu dodaj linijkę z mocą na min i ewentualnie 100n. To powinno już działać na zasilaniu z Arduino, reszta to już optymalizacja.   Na tamtej stronie gość napisał, by dodać kondensatory dla innych ustawień mocy, więc pewnie mu to działa, mnie się nie chce ich wylutowywać dla testów. Jedzie to u mnie od godziny i zero zgubionych pakietów:
Kod:
ransfer complete at 48.20 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.20 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.20 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.18 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.18 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.18 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.20 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.19 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.18 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer



Przez trzy ściany klatki schodowej i 6m:
Transfer complete at 2.75 KB/s

5626 of 10000 Packets Failed to Send

W tym samym pomieszczeniu 5m:
Transfer complete at 36.23 KB/s
62 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 45.13 KB/s
3 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 47.62 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 42.56 KB/s
5 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.10 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 48.09 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 47.80 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 47.32 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 47.85 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 47.32 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 47.49 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
Transfer complete at 47.30 KB/s
0 of 10000 Packets Failed to Send
Initiating Basic Data Transfer
 
Odpowiedź
#7
Zastosowałem wspomniane dwa kondensatory w obu modułach, uno zasila z płytki, nano przez Stepdown z zasilacza 5V 1A przy uwzględnieniu wspólnej masy. Sketch pingpair działa :Smile 

Tak jak pisałem, nie trzeba było podawać vcc na pin 7 bo HIGH było już programowe.
Moc tak czy siak ustawiłem na MIN Smile  Transmisja z pokoju do kuchni (jakieś 10 metrów z 2 zakrętami) idzie bez większych opóźnień od 10 minut.

Dzięki wielkie za pomoc i poświęcony czas
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości