Arduino + nrf24l01 to bardzo popularne i tanie rozwiązanie do przesyłania informacji drogą radiową.
Ja również wykorzystałem to połączenie do bezprzewodowego sterowania urządzeniem (komunikacja jednostronna).
Jak się szybko okazało deklarowany zasięg zwykłego modułu (bez wzmacniacza i anteny) na poziomie 200m nie ma nic wspólnego z rzeczywistością - przynajmniej w moich warunkach.
Sięgnąłem więc po moduł nrf24l01+PA+LNA - czyli moduł ze wzmacniaczem i anteną. Efekty były zadowalające ale temat z innych przyczyn poszedł na półkę na kilka miesięcy.
Problem z nrf24l01+PA+LNA
Po odkurzeniu tematu okazało się, że nadawanie zaczęło się zachowywać bardzo niestabilnie. Komunikacja raz działała raz nie - znamy to "Usterka której nie ma - najtrudniejsza do usunięcia".
I zaczęła się droga przez mękę trwająca dobry tydzień. Moduł raz nadawał raz nie w zależności od położenia, dotknięcia anteny i kilku innych absurdalnych rzeczy.
Skoro trafiłeś na ten artykuł to zapewne zauważyłeś, że problem jest ogólnie znany - w internecie od groma jest tematów (również na zagranicznych forach) poruszających ten problem ale w żadnym nie znalazłem konkretnego skutecznego rozwiązania go.
Próbowałem wszystkich porad tj. przelutowania wszystkich połączeń, dodawania kondensatorów, ekranowania (dwa ostatnie w najróżniejszych konfiguracjach) - nic z tych rzeczy nie przyniosło skutecznego rozwiązania problemu.
Zacząłem więc własnych prób z anteną. W pierwszej kolejności odkręciłem oryginalną antenę i wpiąłem zamiast niej kawałek przewodu koncentrycznego z wypuszczoną żyłą sygnałową.
Rozwiązanie problemu komunikacji NRF24L01
1. Przełom - moduł zaczął nadawać stabilnie w każdej pozycji. Odległość nie była zadowalająca ale przynajmniej mam stabilność. Wniosek - problemem jest antena (a dokładniej coś z jej dopasowaniem). W ramach testów do oryginalnej anteny przylutowałem kawałek przewodu (ok 20cm) i sprawdzałem pracę układu odcinając kawałek po kawałeczku (<1mm). Ewidentnie okazało się że przy pewnych długościach anteny moduł nie nadaje w ogóle (efekt stojącej i odbitej fali - można to zapewne bardziej precyzyjnie opisać - nie jestem ekspertem od radioelektroniki) a przy pewnych działał bardzo stabilnie. Wniosek - problemem jest dopasowanie anteny a dokładnie jej długości. No i wtedy mnie olśniło - przecież dopasować antenę można na 2 sposoby: albo dobierając jej długość do częstotliwości albo dobierając częstotliwość do jej długości. Moduł NRF24L01 pozwala na ustawienie 1 ze 125 kanałów a każdy z nich to 1MHz różnicy - mamy więc do wyboru od 2,4GHz do 2,524 GHz a to ponad 6mm długości fali! Przekładając to na długość anteny która dobrana jest do 1/4 długości fali mamy ponad 1,5mm zakresu regulacji (doboru częstotliwości do długości anteny). Tutaj macie kalkulator długości fali i doboru anteny.
Aktualny kanał na którym pracuje moduł sprawdzamy przy użyciu metody radio.getChannel();.
U mnie początkowym ustawieniem był kanał 76.
Kanał ustawiamy przy użyciu metody radio.setChannel(x); moim pierwszym wyborem był kanał nr 0.
Już po pierwszej zmianie kanału moduł zaczął działać stabilnie (założona oryginalna antena bez przeróbek). Oczywiście po wsadzeniu całego układu do obudowy docelowej (antena musiała jej dotykać) wszystko się popsuło więc musiałem na nowo wyszukać stabilny kanał,. Ostatecznie dobrałem kanał 46 - w okolicach kanałów 40 i 51 komunikacja zaczynała przerywać - więc jest to dość wąski przedział. Obecnie wszystko działa stabilnie z realnym zasięgiem na poziomie 100m(miedzy zabudowaniami i liniami energetycznymi) - to mi w zupełności wystarczy więc zaprzestaję dalszych kombinacji. Mam nadzieję, że to dopasowanie anteny nie "posypie się" wraz ze zmianą temperatury lub innych warunków.
Postanowiłem opisać ten temat, bo straciłem na ten problem naprawdę dużo czasu i mam nadzieję, że ze względu na jego popularność komuś się przyda oraz zaoszczędzi trochę czasu i nerwów.