logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Bezprzewodowe przesyłanie UART w wersji full duplex na nRF24L01, da radę?

Franek k 14 Sty 2020 22:31 1701 26
REKLAMA
  • #1 18403738
    Franek k
    Poziom 15  
    Witam.

    Chciałbym wykonać dwa moduły które przesyłałyby komunikację UART bezprzewodowo. Chodzi o to, że są sobie dwa urządzenia które komunikują się normalnie przez UART, połączone kablem, a ja chciałbym zrobić aby komunikowały się bezprzewodowo, ale nadal przez UART.
    Wpadłem na pomysł aby wykonać dwa moduły, gdzie każdy będzie zbudowany z mikrokontrolera i układu nRF24L01. Mikrokontroler odbierze dane z UART i wyśle przez nRF24L01 do drugiego modułu i odwrotnie. Niby powinno być proste ale problem jest taki, że trzeba by zachować transmisję full duplex, a chyba na jednym układzie nRF24L01 tego się nie zrobi prawda? Pytanie też czy taki "most" ma prawo działać, czy może będzie powodować za duże opóźnienia i transmisja UART się rozjedzie?
  • REKLAMA
  • #2 18403786
    khoam
    Poziom 42  
    nRF24L01 pracuje w full-duplex, ale dwukierunkowa transmisja pomiędzy nRF24L01 jest możliwa do zrealizowania.
  • #3 18404064
    lehastar
    Poziom 16  
    Zrobiłem konwerter PC-nrf24l01-nrf24l01-RS485. Przy prędkości 38400. Nadajnik nrf24l01, jeśli się nie mylę, nie może jednocześnie nadawać i odbierać. Ogólnie mi się nie podobało. Odległość jest niewielka. Jeśli potrzebujesz połączenia bezprzewodowego, polecam ESP8266 + ESP-LINK
  • #4 18404650
    BlueDraco
    Specjalista - Mikrokontrolery
    Chińczycy sprzedają całe mnóstwo modułów pracujących w pasmie 2.4 GHz i zapewniających przezroczystą komunikację typu UART bez jakiegokolwiek programowania - seria JDY, np. JDY-19, JDY-23, JDY-40. Proponuję zainteresować się nimi. Da się to zrobić i na nRF24L01, ale trochę trzeba się napracować.
  • #5 18405268
    Franek k
    Poziom 15  
    No tak, ale wtedy trzeba by użyć bluetooth, a chciałbym tego uniknąć...
  • REKLAMA
  • #6 18405346
    khoam
    Poziom 42  
    W sprzedaży są dostępne moduły radiowe 2.4 GHz E34-2G4D20D, które pracują w full-duplex. Są zdecydowanie droższe niż moduły z nRF24L01.
  • REKLAMA
  • #7 18405624
    BlueDraco
    Specjalista - Mikrokontrolery
    To nie są moduły Bluetooth i są łatwiejsze w użyciu niż nRF24. Ponadto są od razu zaprogramowane na transmisję UART "jak po drucie". Komunikacja w tym stylu na nRF24 łatwa nie będzie.
  • #8 18405658
    khoam
    Poziom 42  
    JDY-40 nie jest modułem Bluetooth, ale pracuje w trybie half-duplex.
  • #9 18405870
    excray
    Poziom 41  
    Nie wiem do czego Ci ten full-duplex jest potrzebny. Nie spotkałem się w życiu z ani jednym urządzeniem które rzeczywiście wymagałoby transmisji full-duplex po rs232. Zresztą zaproponowany przez @khoam moduł też na 99.9% oszukuje w kwestii full-duplex.
  • #10 18405892
    khoam
    Poziom 42  
    excray napisał:
    Zresztą zaproponowany przez @khoam moduł też na 99.9% oszukuje w kwestii full-duplex.

    Piszą nieprawdę w nocie E34-2G4D20D?
  • #11 18405907
    excray
    Poziom 41  
    khoam napisał:
    Piszą nieprawdę w nocie E34-2G4D20D?

    Częściowo. W opisie trybu half i full duplex jest już napisane jak działa to naprawdę i działa w trybie half duplex. Wysyła paczki i przełącza się na odbiór. Cyklicznie. Jakbyś puścił ciągły strumień danych z maksymalną prędkością na dwa współpracujące ze sobą moduły to byś położył transmisję. Zresztą w nocie jest napisane, że zrobili to na chipie nrF24L01+, a ten jak już ustaliliśmy - nie działa w trybie full-duplex.
  • #12 18405921
    khoam
    Poziom 42  
    excray napisał:
    Częściowo. W opisie trybu half i full duplex jest już napisane jak działa to naprawdę i działa w trybie half duplex. Wysyła paczki i przełącza się na odbiór. Cyklicznie.


    Bezprzewodowe przesyłanie UART w wersji full duplex na nRF24L01, da radę?
  • #13 18405926
    excray
    Poziom 41  
    I teraz doczytaj co sam załączyłeś - czyli sprawdź opis trybu 0.
    I pamiętaj o takim "smaczku" na stronie 15:
    Bezprzewodowe przesyłanie UART w wersji full duplex na nRF24L01, da radę?
  • #14 18405933
    khoam
    Poziom 42  
    excray napisał:
    teraz doczytaj co sam załączyłeś - czyli sprawdź opis trybu 0.

    Chyba różnimy się w kwestii interpretacji noty.

    excray napisał:
    Zresztą w nocie jest napisane, że zrobili to na chipie nrF24L01+

    Ale nie napisali, że tylko na jednym. E34-2G4D20D to układ hybrydowy a nie pojedynczy chip, nie wiadomo co jest w środku.

    Generalnie nie mam powodu nie wierzyć nocie na podstawie spekulacji.
  • #15 18405946
    excray
    Poziom 41  
    khoam napisał:
    Chyba nie rozumiemy się w kwestii interpretacji noty.

    Nie wiem. Może przeczytaj uważnie jeszcze raz skoro masz jakieś "inne" interpretacje.
    khoam napisał:
    Ale nie napisali, że tylko na jednym. E34-2G4D20D to układ hybrydowy a nie pojedynczy chip, nie wiadomo co jest w środku.

    I co z tego. Za transmisję radiową odpowiada nrf który nie potrafi pracować w trybie full-duplex. Ergo nie ma tutaj full-duplexu. To, że jakiś uC zapamięta i dośle później (o ile starczy mu bufora, albo raczej tak długo jak starczy) nie oznacza, że jest tam f-d.

    Dodano po 50 [sekundy]:

    khoam napisał:
    Generalnie nie mam powodu nie wierzyć nocie na podstawie spekulacji.

    To nie są spekulacje tylko czytanie ze zrozumieniem. Nawet masz wyprowadzony sygnał AUX żebyś nie wysyłał danych do modułu jak ma zapełniony bufor. To gdzie jest ten full-duplex?
  • #16 18405987
    khoam
    Poziom 42  
    excray napisał:
    Nawet masz wyprowadzony sygnał AUX żebyś nie wysyłał danych do modułu jak jest w stanie niskim.

    Wyjście AUX służy do sygnalizacji przepełnienia buforów nadawczych/odbiorczych w module (przesyłanie/odbieranie danych następuje z prędkością nie większą niż 57600) oraz sygnalizacji, że układ jest w trybie self-check po wybudzeniu lub włączeniu zasilania.
  • #17 18406004
    excray
    Poziom 41  
    Full duplex jest wtedy kiedy informacje są przesyłane JEDNOCZEŚNIE bez spadku transferu. A tutaj masz half-duplex czyli transmisja naprzemienna. Masz w nocie na to wiele dowodów. Choćby ten:
    Bezprzewodowe przesyłanie UART w wersji full duplex na nRF24L01, da radę?
  • #18 18406025
    khoam
    Poziom 42  
    excray napisał:
    Full duplex jest wtedy kiedy informacje są przesyłane JEDNOCZEŚNIE bez spadku transferu.

    Ale nie na łączu radiowym, gdzie głównym problemem osiągnięcia pełnego full-duplex jest anulowanie silnych zakłóceń na interfejsie odbiorczym z interfejsu nadawczego. Do tego dochodzą problemy z przepustowością spowodowane przeciążeniami oraz opóźnieniami w samej linii transmisyjnej.
  • #19 18406027
    Marek_Skalski
    VIP Zasłużony dla elektroda
    @khoam @excray Poruszyliście interesujący temat. Z jednej strony mamy zapis w sekcji 6.3. dokumentacji:
    Module can receive data in the process of transmission.
    Also, module can transmit data in the process of receiving.

    Z drugiej strony, patrząc na rozmiary modułu i dodatkowe zapisy... Nie ma tam miejsca na 2 układy nRF24L01+ z torem analogowym, a opis wskazuje na protezy programowe. Sensowne wydaje się przyjąć, że moduły przesyłają krótkie pakiety z relatywnie dużą prędkością w trybie ping-pong, co pozwala uzyskać pozorny full-duplex. Tym mniej widoczny, im niższa prędkość transmisji.

    A może ktoś zrobi testy i pokaże jak to wygląda w domenie czasowej? Jeden obraz jest warty więcej niż tysiąc słów. :)
  • #20 18406160
    lehastar
    Poziom 16  
    nrf24 nie może natychmiast przejść z trybu odbioru do trybu transmisji. To jest fakt. Ale możesz buforować dane. I wykonaj pseudo pełny dupleks. Wszystko zależy od wymaganej prędkości transferu. Podobnie jak system operacyjny. Wydaje się, że wszystko działa równolegle, ale fizycznie sekwencyjnie.
  • #21 18406658
    BlueDraco
    Specjalista - Mikrokontrolery
    Zieeeeew.... Fajna kłótnia. Jeśli taki nRF przesyła dane z szybkością 1 Mb/s, to używając takiego protokołu czy to w nRF czy w czymkolwiek podobnym można bezproblemowo zrobić jakieś min. 200 kb/s w full dupleksie. Oczywiście samo łącze radiowe jest półdupleksowe, ale z punktu widzenia UART jest to pełny dupleks. Proste?...
  • REKLAMA
  • #22 18407204
    excray
    Poziom 41  
    Mylisz się. Dane są zbierane w pakiety przed wysłaniem więc nie ma full duplexu.
  • #23 18407406
    BlueDraco
    Specjalista - Mikrokontrolery
    Jeśli mam wysyłać w dwie strony pudełka kurierem, jedno pudełko na godzinę, a kurier jedzie w każdą stronę 15 minut, to ilu kurierów potrzebuję, żeby mieć pewność, że co godzinę pudełka zostaną dostarczone do obu punktów?
    Odpowiedź "1" oznacza, że nRF zapewnia w tym przypadku duplex.
    Odpowiedź "2" - półdupleks.
  • #24 18407481
    excray
    Poziom 41  
    Mylisz transmisję dwukierunkową z full duplexem
  • #25 18407578
    khoam
    Poziom 42  
    excray napisał:
    Mylisz się. Dane są zbierane w pakiety przed wysłaniem więc nie ma full duplexu.

    excray napisał:
    Mylisz transmisję dwukierunkową z full duplexem

    Masz rację. Pomiędzy MCU a E34-2G4D20D jest full-duplex. Natomiast pomiędzy dwoma E34-2G4D20D jest transmisja dwukierunkowa z buforowaniem pakietów oraz wysyłaniem potwierdzeń odbioru na wypadek jakichkolwiek zakłóceń w tej transmisji.
  • #26 18408942
    BlueDraco
    Specjalista - Mikrokontrolery
    Jeżeli przez dwa UARTy po dwóch stronach łącza mogę ciągle nadawać i odbierać dane, to jest to dupleks. Nieważne, czy w zagrzebanym łączu, do którego nie zaglądam (tu nRF24), dane lecą w denej chwili w obie strony, czy tylko w jedną. Na moim łączu (tu UART) lecą w obie równocześnie, z pełną szybkością i bez przerw. Przekonaj mnie, że mój UART nie jest w tym przypadku dupleksowy... ;)

    Zbieranie w ramki na łączu radiowym będzie albo i nie (nie musi być) - może być i po jednym bajcie w ramce. Z punku widzenia UART transmisja będzie natychmiastowa, bo łącze radiowe jest kilkadziesiąt razy szybsze niż UART. Nie widzę tu nic, co by mogło powodować nierównoczesną transmisję na poziomie UART przy naprzemiennej po łączu radiowym. Teorie można sobie wałkować, tylko po co? Przykład, który podałeś, zawiera pewną nieścisłość: po UART echo nie przyjdzie natychmiast, tylko będzie opóźnione o czas jednej ramki(bajtu), bo odbiornik zacznie odbijać echo po odebraniu całego bajtu, a transmisja z powrotem zakończy się po czasie potrzebnym na przesłanie bajtu przez UART. Ten czas jest duuużo dłuższy, niż czas przesłania bajtu po łączu radiowym nRF, więc tor radiowy nie wniesie jakiegokolwiek zauważalnego opóźnienia na poziomie UART do takiego UARTowego dupleksu. Over.

    Moderowany przez _lazor_:

    Scaliłem dwa posty w jeden

  • #27 18409196
    excray
    Poziom 41  
    BlueDraco napisał:
    Zbieranie w ramki na łączu radiowym będzie albo i nie (nie musi być) - może być i po jednym bajcie w ramce

    Może doczytaj dokumentację modułu na temat którego się wypowiadasz.

Podsumowanie tematu

Dyskusja dotyczy możliwości bezprzewodowego przesyłania danych UART w trybie full duplex za pomocą modułów nRF24L01. Użytkownik planuje stworzyć dwa moduły, które będą komunikować się bezprzewodowo, jednak obawia się o opóźnienia i stabilność transmisji. Odpowiedzi wskazują, że nRF24L01 nie obsługuje prawdziwego full duplexu, a jedynie half duplex, co może prowadzić do problemów z synchronizacją danych. Uczestnicy dyskusji sugerują alternatywne rozwiązania, takie jak moduły E34-2G4D20D, które oferują lepsze możliwości w zakresie komunikacji dwukierunkowej, oraz inne moduły, takie jak JDY, które zapewniają prostszą konfigurację. Wskazano również na ograniczenia nRF24L01 w kontekście prędkości i buforowania danych.
Podsumowanie wygenerowane przez model językowy.
REKLAMA