Elektroda.pl
Elektroda.pl
X
Computer ControlsComputer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Testy transceivera Dorji DRF1278F.

TechEkspert 02 Sty 2015 16:54 17346 2
This content has been translated » The original version can be found here
  • Testy transceivera Dorji DRF1278F.
    DRF1278F Dorji.

    Firma Dorji bezpłatnie udostępniła użytkownikom forum elektroda.pl moduły transceiverów DRF1278F opartych o układ Semtech LoRa SX1278.
    Testy pary modułów DRF1278F zostały przeprowadzone na podstawie dokumentacji, przykładowych kodów źródłowych producenta oraz testach modułów DRF4463F przeprowadzonych na elektroda.pl w zeszłym roku.

    Testy transceivera Dorji DRF1278F.

    Płytki modułów mają niewielkie wymiary, do podłączenia wyprowadzeń można wykorzystać zarówno otwory, jak i pola dostępne na krawędzi modułu. Na płytce modułu dostępne są opisy każdego z wyprowadzeń, co znacznie ułatwia montaż i testy. Zasilanie modułu 3.3V.

    Testy transceivera Dorji DRF1278F.

    Wyprowadzenia modułu są dość blisko siebie, w przypadku lutowania przewodów kolejne luty należy wykonywać ostrożnie.

    Testy modułu DRF1278F zostały przeprowadzone w konwencji zeszłorocznych testów DRF4463F, czyli jeden moduł pracuje jako stacja nieruchoma przekazująca wyniki prób połączeń portem szeregowym do PC, natomiast drugi moduł pracujący jako stacja ruchoma przekazująca informacje o swoim położeniu na podstawie danych z odbiornika GPS.

    Do sterowania modułami został wykorzystany mikrokontroler AtMega8 komunikujący się z modułami z wykorzystaniem interfejsu SPI.

    Schemat blokowy stacji nieruchomej "bazowej":
    Testy transceivera Dorji DRF1278F.

    Oraz schemat stacji ruchomej komunikującej się ze stacją "bazową":
    Testy transceivera Dorji DRF1278F.

    Aby umożliwić komunikację z modułem, SPI należy skonfigurować w trybie CPOL=0 CPHA=0 (w terminologii Motorola/Freescale).
    Wyjście DID0 możemy skonfigurować tak, aby informowało mikrokontroler o wystąpieniu zdarzeń na poziomie modułu, które należy obsłużyć z poziomu mikrokontrolera (np. informacja o zakończeniu transmisji).
    Moduł udostępnia także wyjścia DIO1 DIO2 DIO3 DIO4 DIO5, każde z nich może zostać skonfigurowane do informowania o innych zdarzeniach.

    Moduł może pracować w różnych stanach.
    W stanie SLEEP zużywa małe ilości energii i pozwala na konfigurację rejestrów. Tylko w tym trybie można zmieniać konfigurację statyczną.
    W stanie STAND-BY pracuje oscylator modułu, część RF oraz PLL jest wyłączona. Tylko w tym trybie można zapisywać kolejkę FIFO dla modemu LoRa.
    W stanach FSTX i FSRX PLL są włączone i zsynchronizowane, modły RF są wyłączone.
    W stanie TX uruchomione są wszystkie elementy potrzebne do transmisji, po zakończonej transmisji pakietu moduł powraca do stanu STAND-BY.
    W stanie RXCONTINUOUS uruchomione są elementy potrzebne do odbioru danych.
    W stanie RXSINGLE uruchomione są elementy potrzebne do odbioru danych, po odebraniu poprawnego pakietu moduł powraca do stanu STAND-BY.
    W stanie CAD moduł wykrywa sygnał preambuły dla modulacji LoRa na poszczególnych kanałach.

    SX1278.

    Moduł obsługujemy zapisując i odczytując dane z określonych adresów rejestrów SX1278.

    Moduły pozwalają na pracę z modulacją OOK, FSK, GFSK, MSK, GMSK, LoRaTM oferując pasmo 7.8 kHz do 500 kHz. Główną atrakcją modułu jest obsługa modulacji LoRa, która w założeniu ma pozwalać na zwiększenie zasięgu oraz odporność na zakłócenia. SX1278 posiada wbudowane wykrywanie preambuły (ciągu pozwalającego na synchronizację z odbieranym sygnałem - "synchronizacja w bicie"), wykrywanie słowa synchronizującego ("synchronizacja w bajcie"), mechanizmy transmisji pakietowej oraz obliczanie sum kontrolnych CRC pakietów.


    LoRaTM.

    Wbudowany modem LoRa pozwala na konfigurację współczynnika rozproszenia SF (6-12) oraz korekcji błędów CR (1-4), co pozwala na optymalizację zwiększenia zasięgu oraz odporności na zakłócenia w porównaniu do modulacji OOK lub FSK.

    Im większy współczynnik SF rozproszenia, tym większa czułość demodulatora, lecz mniejsza prędkość przesyłania danych. Przykładowo dla współczynnika SF=6 uzyskujemy największą przepustowość łącza i średni współczynnik SNR demodulatora -5 dB, wykorzystując 64 symboli na pojedynczy bit. Dla współczynnika SF=12 wykorzystujemy 4096 symboli na bit, uzyskując najmniejszą przepustowość łącza oraz oraz najkorzystniejszy współczynnik SNR demodulatora -20 dB.

    Parametr CR pozwala na ustawienie kodów korekcyjnych, które dodają do właściwych danych nadmiarowe dane pozwalające na korekcję błędów transmisji. Dla ustawienia CR=1 wykorzystujemy kodowanie 4/5, co daje narzut w transmisji na poziomie 1.25, natomiast dla CR=4 otrzymujemy kodowanie 4/8, licząc się z narzutem na poziomie 2.
    Im wyższy współczynnik CR, tym większa odporność na zakłócenia, lecz mniejsza prędkość transmisji.

    Modem LoRa pozwala na ustawienie pasma transmisji BW w zakresie 7.8KHz do 500KHz, przykładowo dla SF=12 (4096 symboli na bit) i CR=1 (4/5) dla pasma 7.8KHz otrzymujemy przepustowość 18b/s, natomiast dla pasma 500KHz 1172b/s. Im szersze pasmo, tym większa prędkość transmisji oraz większy wpływ na inne urządzenia pracujące w paśmie.

    Prędkość transmisji nie jest definiowana wprost, wynika ona z ustawionych parametrów SF, CR, BW.

    Testy DRF1278F.

    Układy testowe zostały połączone na płytkach stykowych.

    Stacja bazowa:

    Testy transceivera Dorji DRF1278F.

    Stacja mobilna:

    Testy transceivera Dorji DRF1278F.

    Stacja bazowa cyklicznie wysyła zapytanie do stacji mobilnej i czeka na odpowiedź. Stacja mobilna sprawdza, czy zapytanie posiada numer zgodny z jej numerem ID, jeżeli tak odczytuje dane o położeniu z odbiornika GPS (portem szeregowym 9600b/s), następnie przesyła sentencję NMEA $GPGGA do stacji bazowej. Stacja bazowa wysyła odebrane dane portem szeregowym do PC z prędkością 9600b/s. Stacja mobilna zasilana jest napięciem ~3V z dwóch baterii AA.

    Testy modułów były prowadzone przy ustawieniach komunikacji używającej FIFO, modulacji LoRa, zmiennej długości pakietu oraz SF=7,CR=3(4/7), BW=3 oraz mocy wyjściowej modułu na poziomie ~5mW.

    Poniżej widoczna przykładowa mapa współrzędnych GPS odebranych przez stację bazową, od poruszającej się stacji mobilnej:

    Testy transceivera Dorji DRF1278F.

    Poniżej dostępne są przykładowe kody stacji bazowej i mobilnej opartej o DRF1278F mikrokontroler Atmel AtMega8A, kod został skompilowany przy użyciu Atmel Studio. Kod programów należy traktować jako przykład pozwalający na napisanie swojej wersji produkcyjnej.

    DRF1278F to zaawansowane moduły dwukierunkowej komunikacji radiowej, obsługa modułów z poziomu interfejsu ISP jest prosta, możliwość obsługi zdarzeń przy pomocy przerwań odciąża mikroprocesor, dzięki czemu w czasie oczekiwania na transmisję można realizować inne zadania. Wbudowany modem LoRa pozwala na budowę urządzeń komunikujących się na znaczne odległości przy zachowaniu małej mocy wyjściowej oraz odporności na zakłócenia.
    Moduł szczególnie ciekawy do transmisji niewielkich ilości informacji na duże odległości np. na potrzeby telemetrii.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    TechEkspert
    Redaktor
    Offline 
    W moich materiałach znajdziecie testy i prezentacje sprzętu elektronicznego, modułów, sprzętu pomiarowego, eksperymenty. Interesuje mnie elektronika cyfrowa, cyfrowe przetwarzanie sygnałów, transmisje cyfrowe przewodowe i bezprzewodowe, kryptografia, IT a szczególnie LAN/WAN i systemy przechowywania i przetwarzania danych.
    Specjalizuje się w: elektronika, mikrokontrolery, rozwiązania it
    TechEkspert napisał 2909 postów o ocenie 1956, pomógł 6 razy. Jest z nami od 2014 roku.
  • Computer ControlsComputer Controls
  • #2
    cralma
    Poziom 1  
    Przepraszamy, w twoim kodzie, wewnątrz funkcji sx1276_7_8_LoRaTxPacket i sx1276_7_8_LoRaRxPacket co oznacza PIND ?? Nie widzę żadnej zmiennej o tej nazwie lub rejestrze, czy mógłbyś mi wyjaśnić? Dzięki.
  • #3
    TechEkspert
    Redaktor
    @cralma PIND to rejestr przechowujący stan wejścia 8 pinów w PORTD.
    Sprawdzam tę instrukcję if: ,,if ((PIND & 0x04)! = 0) {"
    0x04hex to 00000100bin, więc po prostu gdy bit wejściowy 2 PORTD wynosi 1, wtedy (PIND i 0x04)! = 0 jest prawdą,
    wszelkie inne bity (piny wejściowe) są maskowane przez operację ,,i".

    Więcej informacji można znaleźć na stronie 51: http://www.atmel.com/Images/Atmel-2486-8-bit-AVR-mikrokontroler-ATmega8_L_datasheet.pdf