Serwisy partnerskie:
Close icon
Serwisy partnerskie

Interfejs NRF24L01 z Arduino

Article Image
Poradnik, krok po kroku pokazujący jak połączyć mikrokontroler Arduino z NRF24l01.
1. Praktyczny Kurs Arduino - przewodnik po artykułach składających się na kurs 2. Czym jest Arduino? 3. Porównanie Arduino z Raspberry Pi 4. Instalacja sterownika Arduino w systemie Windows 5. Generowanie pliku hex w Arduino 6. Jak wgrać bootloader w Atmega328? 7. Rozpoczęcie pracy z oprogramowaniem Arduino 8. Rozpoczęcie programowania w Arduino 9. Programowe resetowanie Arduino 10. Wprowadzenie do Arduino UNO 11. Wprowadzenie do Arduino NANO 12. Wprowadzenie do Arduino Pro Mini 13. Wprowadzenie do Arduino Mega 2560 14. Wprowadzenie do Arduino Due 15. Wprowadzenie do Arduino Lilypad 16. Wprowadzenie do ATmega328 17. Biblioteka Arduino dla Proteusa 18. Projekt płytki drukowanej Arduino UNO dla Proteus ARES 19. Biblioteka Arduino Lilypad dla Proteusa 20. Odczyt z portu szeregowego Arduino 21. Projektowanie układów LCD z Arduino 22. Łączenie klawiatury z Arduino 23. Wartość ADC na LCD przy użyciu Arduino 24. Symulacja czujnika ultradźwiękowego w Proteusie 25. Połączenie czujnika ultradźwiękowego z Arduino 26. Wiele czujników ultradźwiękowych z Arduino 27. Czujnik temperatury 18B20 z Arduino 28. Jak używać 18B20 w Proteus ISIS? 29. Łączenie LM35 z Arduino w Proteusie 30. Współpraca siedmiosegmentowego wyświetlacza z Arduino w Proteusie 31. Łączenie czujnika PIR z Arduino 32. Współpraca czujnika płomienia z Arduino 33. Interfejs NRF24L01 z Arduino 34. NRF24L01+ i Arduino - Response Timed Out 35. Połączenie RFID RC522 z Arduino 36. Komunikacja Bluetooth z Arduino przy użyciu HC05 37. Sterowanie serwomotorem za pomocą Arduino w Proteusie 38. Projekt sterowania sygnalizacją świetlną przy użyciu Arduino 39. Przewijanie tekstu na matrycy LED 8×8 z użyciem Arduino 40. Inteligentny system oszczędzania energii 41. Komunikacja USB pomiędzy Androidem i Arduino 42. Automatyka domowa z użyciem XBee i Arduino 43. Domowy system bezpieczeństwa oparty na GSM 44. Wysyłanie SMS-ów za pomocą Arduino UNO i SIM900 45. Odbieranie SMS-ów za pomocą komend AT przy użyciu Arduino 46. Projekt rozpoznawania głosu przy użyciu EasyVR Shield 47. Rozpoczęcie pracy z programem EasyVR Commander 48. Połączenie EasyVR z Arduino UNO 49. Błąd szkolenia - niepowodzenie rozpoznawania w EasyVR 50. Połączenie XBee z komputerem 51. Wprowadzenie do modułu XBee 52. Interfejs XBee z Arduino 53. Rozpoczęcie pracy z kamerą Pixy 54. Jak zainstalować oprogramowanie kamery Pixy - PixyMon 55. Aktualizacja firmware kamery Pixy do najnowszej wersji 56. Jak wytrenować kamerę Pixy za pomocą komputera 57. Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino 58. Sterowanie prędkością obrotów silnika prądu stałego za pomocą Arduino 59. Sterowanie kierunkiem obrotu silnika krokowego za pomocą Arduino 60. Sterowanie prędkością obrotów silnika krokowego za pomocą Arduino 61. Pobieranie danych z serwera internetowego za pomocą Arduino Wi-Fi 62. Wprowadzenie do Arduino YUN 63. Dostęp do serwera Linux Arduino YUN za pomocą Putty
Rozwiń cały spis treści Zwiń spis treści

Witaj przyjaciele.

Mam nadzieję, że wszystko u was w porządku i macie się z czego cieszyć. Pracuję ostatnio nad projektem i jedna część mojego obecnego projektu zawiera Interfejs NRF24L01 z Arduino. Pomyślałem więc, dlaczego nie podzielić się tą wiedzą z wami. Mam nadzieję, że dowiecie się czegoś nowego i dość interesującego. Jeśli nie wiesz zbyt wiele na ten temat, to powinieneś rzucić okiem na wprowadzenie do NRF24L01

Kilka dni temu, zamieściłem na stronie również poradnik Interfejs XBee z Arduino, w którym zobaczyliśmy jak stworzyć bezprzewodową komunikację pomiędzy dwoma modułami XBee, które są również modułami RF. Tak więc, teraz przyjrzymy się jak ustawić bezprzewodową komunikację pomiędzy dwoma modułami NRF24L01. Mam nadzieję, że będziesz zadowolony z połączenia NRF24L01 z Arduino.

Podstawy NRF24L01

Zanim zaczniemy się zajmować interfejsem Arduino z 24L01, pozwólmy sobie na krótkie wprowadzenie do modułu NRF24L01. NRF24L01 jest w rzeczywistości modułem radiowym i pracuje na częstotliwości 2,4 GHz. Moduł ten jest domyślnie pół-dupleksowy i ma zdolność do wysyłania i odbierania danych jednocześnie. Jest to bardzo tani i niewielki moduł, ale jego możliwości są zdumiewające. Na przykład, moduł ten jest w stanie wysłać od 1 do 25 bajtów surowych danych jednocześnie i szybkość transmisji danych sięga jednego megabajta na sekundę. Jeśli podsumujemy wszystkie cechy tego małego, ale duże wydajnego modułu, następnie możemy powiedzieć, że: 

  • Za pomocą tego modułu NRF24L01 możemy wysłać wiadomość do konkretnego odbiorcy. 
  • Możemy odebrać wiadomość od jakiegoś konkretnego nadawcy (pamiętaj, że jak mówiłem wcześniej, możemy wykonać oba kroki jednocześnie). 
  • Podczas wysyłania wiadomości za pomocą tego modułu, będziemy musieli podać adres nadawcy i odbiorcy wiadomości. 
  • Będziemy musieli również określić rozmiar konkretnej wiadomości, którą będziemy przesyłać za pośrednictwem tego modułu. 
  • W niektórych szczególnych zastosowaniach musimy również wykonywać przełączanie pomiędzy stanem odbioru i nadawania. Na przykład, jeśli otrzymasz konkretną wiadomość, to najpierw zatrzymamy komunikację i przeczytamy ją, a następnie wyślemy. Więc w takich sytuacjach, musimy wykonać przełączanie podczas wysyłania lub odbierania danych przez ten moduł. 

Powyżej omówione było krótkie wprowadzenie do modułu NRF24L01. Przejdźmy teraz do głównego tematu naszego projektu, którym jest Interfejs Arduino z modułem NRF24l01. 

Uwaga: Napotkałem na problem "Failed, response timed out" z NRF24L01+ podczas podłączania go do Arduino. Jeśli masz ten sam problem to przeczytaj post NRF24L01+ z Arduino – Response Timed Out. Ten przykład NRF24L01 z Arduino pomoże ci w zrozumieniu problemu Response Timed Out. 

Interfejs NRF24L01 z Arduino 

Arduino jest bardzo potężną i wszechstronną płytką z mikrokontrolerem i daje nam łatwość korzystania z wielozadaniowości. NRF24L01 posiada łącznie osiem pinów. Konfiguracja pinów i funkcja każdego z nich jest opisana poniżej. 

Pierwszy pin to GND i poprzez pin 1 tego modułu, jest podłączana do niego masa. 

Pin 2 tego modułu ma za zadanie zapewnić zasilanie. Pin ten jest oznaczony jako VCC. Moduł ten do pracy potrzebuje z reguły napięcia od 1,9 do 3,6 V. I w większości przypadków będziemy przykładać do niego 3 V. 

Pin 3 oznaczony jest jako CE i służy do wyboru trybu pracy układu. Albo używasz tego modułu do wysyłania danych, albo do ich odbierania. 

Pin 4 jest oznaczony jako CSN i służy do włączania układu SPI, wbudowany w moduł. 

Pin 5 służy do zapewnienia modułowi zegara SPI. Gdy ten pin jest HIGH, zegar jest włączony, a gdy jest LOW, zegar modułu jest wyłączony. 

Pin 6 oznaczony jest jako MOSI i służy do transmisji danych z modułu do układu zewnętrznego. 

Pin 7 jest oznaczony jako MISO i jeśli chcemy odbierać dane przez ten moduł z dowolnego zewnętrznego źródła to pin ten jest włączony. 

Pin 8 jest ostatnim pinem tego modułu i jest oznaczony jako pin IRQ. 

Do wykonania komunikacji Arduino z NRF24L01 potrzebne będą dwie płytki Arduino oraz dwa moduły NRF24L01. Zakładam, że masz te cztery przedmioty w ręce. Tak więc, najpierw zajmijmy się stroną nadawczą interfejsu NRF24L01 Arduino. 

NRF24L01 jako nadajnik 

Podłącz NRF24L01 do Arduino jak pokazano na poniższej ilustracji: 

Łącznie siedem pinów układu NRF24L01 będzie podłączonych, natomiast ósmy pin IRQ podłączony być nie musi. 

Następną rzeczą jaką musisz zrobić jest pobranie biblioteki RF24 dla Arduino i umieszczenie jej w folderze libraries twojego oprogramowania Arduino, tak abyśmy mogli skompilować nasz kod dla NRF24L01 Arduino Example. 

Nie zaprojektowaliśmy tej biblioteki, udostępniamy ją tylko inżynierom, aby mogli ją wykorzystać w swoich projektach. 

Teraz załaduj poniższy szkic do swojego Arduino, które ma pełnić rolę nadajnika. 

    #include <SPI.h> 
    #include "nRF24L01.h" 
    #include "RF24.h" 

    RF24 radio(9,10); 

    const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL }; 
    unsigned long Command = 1; 
    void setup() 
    { 
    Serial.begin(57600); 

    radio.begin(); 
    radio.setRetries(15,15); 
    radio.openReadingPipe(1,pipes[1]); 
    radio.startListening(); 
    radio.printDetails(); 
    radio.openWritingPipe(pipes[0]); 
    radio.openReadingPipe(1,pipes[1]); 
    radio.stopListening(); 
    } 

    void loop(void) 
    { 
    radio.stopListening(); 
    radio.write( &Command, sizeof(unsigned long) ); 
    radio.startListening(); 
    delay(1000); 
    } 

W tym kodzie zaznaczyłem zmienną Command. Jest to zmienna, którą wysyłam przez NRF24L01. Obecnie jej wartość to 1, ale możesz ją zmienić. 

Jeśli więc chcesz wysłać 3, możesz zmienić jej wartość na 3. 

Teraz zaprojektujmy stronę odbiornika. 

NRF24L01 jako odbiornik 

Ponownie połącz swoje Arduino z NRF24L01 jak pokazano na poniższej ilustracji. To samo zrobiliśmy dla strony nadajnika. 

Teraz załaduj poniższy kod do odbiornika, a zaczniesz otrzymywać wartości pochodzące z nadajnika. 

    #include <SPI.h> 
    #include "nRF24L01.h" 
    #include "RF24.h" 

    RF24 radio(9,10); 
    const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL }; 
    typedef enum { role_ping_out = 1, role_pong_back } role_e; 
    const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"}; 
    role_e role = role_pong_back; 
    void setup(void) 
    { 
    Serial.begin(57600); 
    radio.begin(); 
    radio.setRetries(15,15); 
    radio.openReadingPipe(1,pipes[1]); 
    radio.startListening(); 
    radio.printDetails(); 
    radio.openWritingPipe(pipes[1]); 
    radio.openReadingPipe(1,pipes[0]); 
    radio.startListening(); 
    } 

    void loop(void) 
    { 

    if ( radio.available() ) 
    { 

    unsigned long data = 0; 
    radio.read( &data, sizeof(unsigned long) ); 
    Serial.println(data); 
    delay(20); 
    } 

    } 

Teraz otwórz swój Monitor Szeregowy po stronie odbiornika i zobaczysz, że otrzymujesz "1" w polu Monitora Szeregowego Arduino, co jest wartością zmiennej Command, którą ustawiliśmy po stronie nadajnika, jak pokazano na poniższym zrzucie ekranu: 

Jest to dość proste i mam nadzieję, że uda ci się to zrobić za pierwszym podejściem. Ale jeśli nadal masz problem to pytaj w komentarzach. 

Wkrótce podzielę się większą liczbą projektów Arduino dotyczących tego modułu RF. 

Tak więc, to wszystko na dzisiaj i mam nadzieję, że teraz możecie łatwo łączyć Arduino z NRF24L01 oraz ustawić komunikację RF. Jeśli macie jakiś problem z tym połączeniem Arduino z NRF24L01 to pytajcie, a ja postaram się jak najlepiej go rozwiązać. 

Trzymajcie się!

Wykaz elementów
Ilość
Symbol
Nazwa/opis/gdzie kupić
Wideo
Do pobrania
Download icon Biblioteka Arduino dla NRF24L01

Artykuł NRF24L01 Arduino Interfacing opracowano w wersji polskiej na podstawie współpracy z portalem www.theengineeringprojects.com.

1. Praktyczny Kurs Arduino - przewodnik po artykułach składających się na kurs 2. Czym jest Arduino? 3. Porównanie Arduino z Raspberry Pi 4. Instalacja sterownika Arduino w systemie Windows 5. Generowanie pliku hex w Arduino 6. Jak wgrać bootloader w Atmega328? 7. Rozpoczęcie pracy z oprogramowaniem Arduino 8. Rozpoczęcie programowania w Arduino 9. Programowe resetowanie Arduino 10. Wprowadzenie do Arduino UNO 11. Wprowadzenie do Arduino NANO 12. Wprowadzenie do Arduino Pro Mini 13. Wprowadzenie do Arduino Mega 2560 14. Wprowadzenie do Arduino Due 15. Wprowadzenie do Arduino Lilypad 16. Wprowadzenie do ATmega328 17. Biblioteka Arduino dla Proteusa 18. Projekt płytki drukowanej Arduino UNO dla Proteus ARES 19. Biblioteka Arduino Lilypad dla Proteusa 20. Odczyt z portu szeregowego Arduino 21. Projektowanie układów LCD z Arduino 22. Łączenie klawiatury z Arduino 23. Wartość ADC na LCD przy użyciu Arduino 24. Symulacja czujnika ultradźwiękowego w Proteusie 25. Połączenie czujnika ultradźwiękowego z Arduino 26. Wiele czujników ultradźwiękowych z Arduino 27. Czujnik temperatury 18B20 z Arduino 28. Jak używać 18B20 w Proteus ISIS? 29. Łączenie LM35 z Arduino w Proteusie 30. Współpraca siedmiosegmentowego wyświetlacza z Arduino w Proteusie 31. Łączenie czujnika PIR z Arduino 32. Współpraca czujnika płomienia z Arduino 33. Interfejs NRF24L01 z Arduino 34. NRF24L01+ i Arduino - Response Timed Out 35. Połączenie RFID RC522 z Arduino 36. Komunikacja Bluetooth z Arduino przy użyciu HC05 37. Sterowanie serwomotorem za pomocą Arduino w Proteusie 38. Projekt sterowania sygnalizacją świetlną przy użyciu Arduino 39. Przewijanie tekstu na matrycy LED 8×8 z użyciem Arduino 40. Inteligentny system oszczędzania energii 41. Komunikacja USB pomiędzy Androidem i Arduino 42. Automatyka domowa z użyciem XBee i Arduino 43. Domowy system bezpieczeństwa oparty na GSM 44. Wysyłanie SMS-ów za pomocą Arduino UNO i SIM900 45. Odbieranie SMS-ów za pomocą komend AT przy użyciu Arduino 46. Projekt rozpoznawania głosu przy użyciu EasyVR Shield 47. Rozpoczęcie pracy z programem EasyVR Commander 48. Połączenie EasyVR z Arduino UNO 49. Błąd szkolenia - niepowodzenie rozpoznawania w EasyVR 50. Połączenie XBee z komputerem 51. Wprowadzenie do modułu XBee 52. Interfejs XBee z Arduino 53. Rozpoczęcie pracy z kamerą Pixy 54. Jak zainstalować oprogramowanie kamery Pixy - PixyMon 55. Aktualizacja firmware kamery Pixy do najnowszej wersji 56. Jak wytrenować kamerę Pixy za pomocą komputera 57. Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino 58. Sterowanie prędkością obrotów silnika prądu stałego za pomocą Arduino 59. Sterowanie kierunkiem obrotu silnika krokowego za pomocą Arduino 60. Sterowanie prędkością obrotów silnika krokowego za pomocą Arduino 61. Pobieranie danych z serwera internetowego za pomocą Arduino Wi-Fi 62. Wprowadzenie do Arduino YUN 63. Dostęp do serwera Linux Arduino YUN za pomocą Putty
Rozwiń cały spis treści Zwiń spis treści
Firma:
Tematyka materiału: Kurs Arduino, pierwsze kroki, Projekty Arduino, NRF24L01, 2,4GHz, Symulator Arduino Proteus
AUTOR
Źródło
www.theengineeringprojects.com
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
Oceń najnowsze wydanie EdW
Wypełnij ankietę i odbierz prezent
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"