Serwisy partnerskie:
Close icon
Serwisy partnerskie

NRF24L01+ i Arduino - Response Timed Out

Article Image
Kompletny poradnik, pokazujący jak rozwiązać problem "Failed, response timed out" dla zestawu NRF24L01+ z Arduino.
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

Witajcie przyjaciele, mam nadzieję, że wszystko u was w porządku i dobrze się bawicie.

Dzisiaj podzielę się z wami problemem i jego rozwiązaniem. Kilka dni temu kupiłem nowe moduły NRF24L01, gdyż były mi potrzebny do projektu. Tak więc dzisiaj, kiedy zacząłem nad nimi pracować, napotkałem bardzo dziwny problem. Kiedy połączyłem mój NRF24L01 z Arduino i załadowałem do nich kody nadawcze i odbiorcze, nie mogłem uzyskać niczego na moim terminalu szeregowym, jak wyjaśniłem w moim poprzednim poście Interfejs NRF24L01 z Arduino. Było to dla mnie dość dziwne, ponieważ pracowałem z tym modułem wiele razy i nigdy wcześniej nie sprawiał mi on kłopotów. Więc pracuję nad tym, ale bez powodzenia. Zmieniłem nawet moje moduły RF, ponieważ myślałem, że mogą być wadliwe, ale nadal bez rezultatu.

Więc następną rzeczą, która przyszła mi do głowy jest wgranie przykładu Getting Started z biblioteki RF24, który również podałem w moim poprzednim poście Interfejs NRF24L01 z Arduino i teraz, kiedy sprawdziłem terminal szeregowy, otrzymałem następujący błąd:

Failed, response timed out (niepowodzenie, upłynął limit czasu odpowiedzi).

Zrzut ekranu tej odpowiedzi wygląda następująco:

Jak widać na powyższym rysunku, w ostatnich linijkach dostajemy błąd, treści "Now sending 4679…failed. Failed, response timed out” (Wysyłanie 4679...nie powiodło się. Niepowodzenie, upłynął limit czasu odpowiedzi). Tak więc, to był problem, który napotykałem przez prawie pół godziny, a potem w końcu zdałem sobie sprawę, czego mi brakuje i jak to rozwiązać. Zanim przejdę do rozwiązania, pozwólcie, że najpierw opowiem wam o typach tych modułów.

Typy modułów NRF24L01

Kiedy napotkałem ten problem, zamiast wielu wysiłków i nie mogąc go rozwiązać, w końcu pomyślałem o użyciu starego modułu. Szukałem go zatem i na szczęście znalazłem jeden z nich.

Tak więc, teraz podłączyłem nowy moduł z innym Arduino i sprawdziłem właściwości obu z nich (tj. starego i nowego) i w tym celu po prostu załadowałem poniższy szkic do obu moich płytek Arduino i otworzyłem terminal szeregowy.

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.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);
    printf_begin();
    
    radio.begin();
    radio.setRetries(15,15);
    
    radio.openReadingPipe(1,pipes[1]);
    
    radio.startListening();
    
    radio.printDetails();
}

void loop(void)
{
}

W tym szkicu, po prostu wyświetlam szczegóły modułu NR24L01. Zatem załadowałem powyższy szkic w obu Arduino, jeden ze starym modułem NRF24L01 i jeden z nowym, po czym otrzymałem poniższą odpowiedź.
 

Teraz miałem powód, dla którego nie dostaję odpowiedzi na ten sam kod, który działał na starym, ponieważ stary model modułu to NRF24L01, podczas gdy nowy moduł to NRF24L01+, który jest nieco inny niż NRF24L01.

Więc to jest powód, dlaczego ciągle dostawałem błąd "Failed, response timed out" dla tego modułu. Zatem spójrzmy teraz jak rozwiązać ten problem.

Jak rozwiązać problem "Failed, response timed out" dla NRF 24L01+ z Arduino

Tak więc, kiedy już wiedziałem, że mój moduł to NRF24L01+, a nie NRF24L01 musiałem połączyć NRF24L01+ z Arduino.  

Zacząłem więc szukać w sieci i zdobyłem jego specyfikację, co bardzo mi pomogło i w końcu udało mi się ją zdobyć.

NRF24L01+ pobiera więcej prądu niż NRF24L01 podczas startu i Arduino nie było w stanie mu tego prądu dostarczyć. To jest powód, dla którego NRF24L01+ nie mógł się zainicjować i nie mógł wysłać ani odebrać odpowiedzi.

Tak więc, aby usunąć ten problem, po prostu umieściłem Kondensator 100uF pomiędzy 3,3 V i GND Arduino i to załatwiło sprawę.  

Szczegółowy schemat układu jest następujący:

Zatem to jest to proste rozwiązanie, które zajęło mnie na około godzinę. Ale w końcu się udało.

Jak widać na powyższym rysunku, jest to dokładnie taki sam schemat układu, a jedynym dodatkiem jest kondensator umieszczony pomiędzy 3,3 V a GND.

Po tym wgrałem oba kody dla odbiornika i nadajnika, które już zamieściłem w moim starym poście interfejs NRF24L01 z Arduino i zadziałało jak marzenie.  

To wszystko na dzisiaj, spotkamy się w następnym poradniku już wkrótce.

Trzymajcie się!

Wykaz elementów
Ilość
Symbol
Nazwa/opis/gdzie kupić
Wideo

Artykuł NRF24L01+ with Arduino - Response Timed Out 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, „Failed, response timed out”, 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"