Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Modemy bezprzewodowe LoRa z interfejsem UART - E32 EBYTE

TechEkspert 03 Jan 2021 00:13 2388 7
  • Modemy bezprzewodowe LoRa z interfejsem UART - E32 EBYTE
    Miałem okazję przetestować modemy LoRa E32-433T20D TTL-100 EBYTE. Modemy posiadają interfejs UART i po skonfigurowaniu mogą być przezroczyste dla przesyłanych danych. Bufor danych 512 bajtów. Napięcie zasilania 3.3V-5V próby wykonałem przy 3.3V. Modemy kosztują na aliexpress ~45zł sztuka więc są droższe niż moduły radiowe typu RFM95W (dlaczego przekonałem się, że to był dobry wybór napiszę dalej). Specyfikacja producenta E32-TTL-100

    Stany logiczne na wejściach M0 i M1 ustalają tryb pracy modemu:
    M0 M1
    0 0 - normalny tryb pracy, moduł wysyła w "eter" dane napływające po interfejsie UART, to co modem odbierze z "anteny" trafia na UART
    0 1 - moduł dołącza do danych preambułę "budzącą" moduły pracujące w trybie oszczędzania energii (nie testowałem)
    1 0 - tryb oszczędzania energii, możliwy tylko odbiór danych, transmisja w tym trybie jest niemożliwa (nie testowałem)
    1 1 - tryb konfiguracji

    RX/TX linie UART, natomiast wyjście AUX informuje o gotowości modułu, jednak tej funkcji nie testowałem.
    Modemy bezprzewodowe LoRa z interfejsem UART - E32 EBYTE

    Konfiguracja
    Modem konfigurujemy ustawiając na wejściach M0 i M1 stany logiczne wysokie i przesyłając przez UART odpowiednie ciągi konfiguracyjne np. z mikrokontrolera. Możemy także wykorzystać konwerter USB<->RS232 (3.3/5V) i oprogramowanie realterm. Wysyłając z aplikacji ciągi liczb w formacie HEX skonfigurujemy modem, który następnie będzie "przezroczysty" dla przesyłanych danych. Ustawienie na M0 i M1 stanów niskich przełącza modem w tryb wysyłania danych pojawiających się na UART i wysyłania na UART danych odebranych "z anteny".

    W trybie konfiguracji możemy przesłać do modułu ustawienia, które zostaną zapisane na stałe i przywrócone po zaniku zasilania:
    0xC0 + konfiguracja (5 bajtów)
    lub tymczasowo zmienić konfigurację (po resecie lub uśpieniu zostanie przywrócona konfiguracja zapisana w pamięci nieulotnej):
    0xC2 + konfiguracja (5 bajtów)

    Wysłanie 0xC1 0xC1 0xC1 wyświetla konfigurację, 0xC3 0xC3 0xC3 informacje o wersji modułu, 0xC4 0xC4 0xC4 reset modułu.

    W realterm łatwo wprowadzimy ciąg do wysłania, w konfiguracji odbioru danych wybieramy prezentację jako HEX.
    Modemy bezprzewodowe LoRa z interfejsem UART - E32 EBYTE Modemy bezprzewodowe LoRa z interfejsem UART - E32 EBYTE

    Konfiguracja to zaledwie 5 bajtów. Rozpoczynamy ciąg od 0xC0 (jeżeli chcemy zapisać konfigurację na stałe).
    Fabryczna konfiguracja to 0xC0 - 0x00 0x00 0x1A 0x17 0x44 jednak to nam nie odpowiada.

    Pierwsze dwa bajty (fabrycznie 0x00 -bajt starszy, 0x00 - bajt młodszy) to adres modułu, możemy wybrać jeden z 65535 adresów (of 0x00 0x00 do 0xFF 0xFE), moduł z adresem 0xFF 0xFF "podsłuchuje" transmisje z wszystkich adresów. Adresacja modułów pozwala na równoległe działanie grupy modułów, które nie reagują na transmisje modułów o innych adresach. Można mieć też moduł o adresie 0xFF 0xFF monitorujący cały ruch w sieci.
    Wybieramy np. adres 0x01 0x01 czyli dziesiętnie 257.

    Trzeci bajt (domyślnie 0x1A) to konfiguracja UART i szybkości transmisji bezprzewodowej. Domyślnie jest to UART:9600bps 8N1, transmisja bezprzewodowa 2,4kbps.

    Dwa najstarsze bity (7-6) to konfiguracja UART:
    00:8N1(ustawienie fabryczne)
    01:8O1
    10:8E1

    Trzy kolejne bity (5-3) to szybkość UART:
    000:1200bps
    001:2400bps
    010:4800bps
    011:9600bps(ustawienie fabryczne)
    100:19200bps
    101:38400bps
    110:57600bps
    111:115200bps

    Trzy kolejne bity (2-0) to szybkość transmisji bezprzewodowej:
    000:0.3kbps
    001:1.2kbps
    010:2.4kbps(ustawienia fabryczne)
    011:4.8kbps
    100:9.6kbps
    101:19.2kbps

    Wolniejsza transmisja bezprzewodowa to większy zasięg i odporność na zakłócenia, lecz dłuższy czas nadawania i zajmowania pasma.
    Zostawiamy tak jak jest czyli 0x1A, gdyby od strony UART potrzebna była inna szybkość np. 4800 to trzeci bajt przyjmie wtedy wartość 0x12

    Czwarty bajt to kanał radiowy (fabrycznie 0x17), niestety tutaj konfiguracja jest bardzo słaba gdyż skok strojenia to 1MHz.
    410MHz + CHAN * 1MHz. Domyślnie jest 0x17 hex czyli 23 dziesiętnie co daje 410+23->433MHz.

    Bajt piąty (fabrycznie 0x44) to m.in ustawienia mocy nadawania,

    bit 7
    0 - transmisja przezroczysta (ustawienia fabryczne)
    1 - pierwsze trzy bajty wybierają adres modułu oraz częstotliwość transmisji, po zakończeniu transmisji ustawienia wracają do zgodnych z konfiguracją - nie testowałem

    bit 6
    1 - (ustawienia fabryczne) piny TXD i AUX pracują jako push-pull, RXD pull-up
    0 - piny TXD i AUX open-collector, RXD open-collector

    bity 5-3 częstotliwość wybudzana odbiornika
    000:250ms(ustawienia fabryczne)
    001:500ms
    010:750ms
    011:1000ms
    100:1250ms
    101:1500ms
    110:1750ms
    111:2000ms

    bit 2 - zwiększenie odporności na zakłócenia - korekcja danych
    0:wyłączone FEC
    1:włączone FEC (ustawienia fabryczne)

    bity 1-0 moc nadajnika
    00: 20dBm(ustawienia fabryczne)
    01: 17dBm
    10: 14dBm
    11: 10dBm

    Zmieniamy na 10dBm i otrzymujemy wartość piątego bajtu 0x47.

    Otrzymujemy ciąg konfiguracyjny, który przesyłamy do modułu:
    0xC0 0x01 0x01 0x1A 0x17 0x47

    Testy
    Po konfiguracji modemów jeden z nich użyłem jako stacji ruchomej, która sprawdzi zasięg w interesujących mnie punktach.
    Modem na płytce stykowej połączyłem z modułem ESP32 wyposażonym w wyświetlacz OLED, do testów możecie użyć dowolny moduł lub nawet laptop. Moduł został zasilony z powerbanku i po przyciśnięciu mikrostyku "boot" wysyła "ping" do stacji bazowej oraz czeka na odpowiedź.

    Modemy bezprzewodowe LoRa z interfejsem UART - E32 EBYTE

    Testowy kod programu dla ESP32 dla "stacji ruchomej":
    Code: c
    Log in, to see the code


    W miejscu gdzie ma być bramka bezprzewodowa umieściłem drugi modem, który również połączyłem z modułem ESP32 wysyłającym komunikaty na UART(USB) laptopa.

    Modemy bezprzewodowe LoRa z interfejsem UART - E32 EBYTE

    Testowy kod "stacji bazowej":

    Code: c
    Log in, to see the code

    }

    Wyniki prób
    Modemy przy mocy ustawionej na minimum czyli 10dBm przesyłały dane między wymaganymi punktami w promieniu 200-300m. W niektórych lokalizacjach zasłoniętych przeszkodami terenowymi z metalu i betonu pojedyncze pakiety były tracone. Umieszczenie anteny "stacji bazowej" wyżej polepszało pewność transmisji. W przewidywanym zastosowaniu modemy spełnią swoje zadanie. Sprawdziłem czy modemy mogą zapewnić większy zasięg i udało się uzyskać pewną transmisję na dystansie 600m jednak dla tej odległości duży wpływ mają przeszkody terenowe i były punkty oddalone o 400m gdzie połączenie nie było możliwe.

    Dlaczego testowałem te modemy?
    Znajoma firma chce przesyłać bezprzewodowo telemetrię z kilku urządzeń. Stan urządzeń będzie przesyłany raz na dobę i będzie to dosłownie kilka bajtów. Jeszcze nie zdecydowali czy bramka będzie odpytywała urządzenia, czy urządzenia będą raportowały swój stan samoistnie. Prawdopodobnie zostanie dodane natychmiastowe raportowanie alarmów. Początkowo namawiałem na zakup modułów radiowych typu RFM, do tego prosty projekt PCB + mikrokontroler i możemy robić co chcemy z akwizycją danych i telemetrią.

    Zespół oczekiwał czegoś innego, gotowego rozwiązania, które zmieszczą w istniejącej obudowie i szybko przejdą do wdrożenia. Nie chcą kolejnych wersji PCB i kolejnych poprawek w firmware modemu. Węzłów sieci będzie kilka i nie zapowiada się ich masowy przyrost. Wybraliśmy te modemy gdyż mieszczą się w obecnej obudowie oraz po konfiguracji są "przezroczyste" dla UART. Zespół ma pełną kontrolę nad UART urządzeń + kilka wyjść NC/NO więc takie rozwiązanie spełniało warunki.

    To co mi się nie podobało to urządzenie będące czarną skrzynką, nie wiadomo czy np. wysłanie jakiegoś pakietu radiowego lub UART nie zawiesi modemu, możliwość debugowania takiego stanu będzie niemożliwa. Modem umożliwia słabą kontrolę nad kanałem radiowym i ogólnie możliwości konfiguracyjne są dość słabe. Brak informacji o mocy i jakości odbieranego sygnału. W zamian dostajemy efekt szybkiego wdrożenia i rezultat prawie taki sam jak "połączenie skrętką" rozsianych urządzeń. Urządzenia mają zasilanie sieciowe i tryby oszczędzania energii nie były nam potrzebne.

    Bezpieczeństwo rozwiązania - nie istnieje na poziomie modemów... Zakup takiego samego urządzenia pozwala na podsłuchiwanie komunikacji między urządzeniami. Jednak dane te nie są krytyczne, są niejako pomocnicze i mają zastąpić konieczność fizycznego dostępu do urządzeń. Zespół ma pełną kontrolę nad UART urządzenia i na etapie przygotowania danych zostanie zapewniona integralność danych a także sprawdzenie czy dane wysłało nasze urządzenie, być może zostanie dodane szyfrowanie.

    Patrząc na "za i przeciw" wykorzystanie gotowych modemów pozwoliło na szybkie osiągnięcie przez zespół tego co planowali. Podczas testów modemy nigdy nie przesłały uszkodzonej ramki na UART, więc muszą mieć wewnętrzne sprawdzanie sumy kontrolnej i uszkodzone pakiety są zapewne odrzucane. Ingerencja (sprzętowa) w rozbudowywane urządzenia jest praktycznie żadna i w przyszłości można wymienić modemy na "swoje" o ile będzie taka potrzeba.

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    TechEkspert
    Editor
    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.
    Has specialization in: elektronika, mikrokontrolery, rozwiązania it
    TechEkspert wrote 3221 posts with rating 2475, helped 11 times. Been with us since 2014 year.
  • HelukabelHelukabel
  • HelukabelHelukabel
  • #3
    Simon79
    Level 19  
    Zastanawiam się nad zakupem tych modułów. Można z nich zrobić bezprzewodowy uart o co mi właśnie chodzi. Mam pytanie, czy wg Twoich testów, zmniejszając prędkość przesyłania pakietów do 0.3kbps można oczekiwać wzrostu zasięgu raczej kilkanaście metrów czy kilkadziesiąt kilkaset?.
    Wiem, że zasięg zależy od dopasowania anteny, wysokości, przeszkód itd. Słyszałem o zasięgu 3km a nawet 10km.
  • #4
    _johnny_
    Level 5  
    600m to słabizna.
    Używam od wielu lat również transparentny modem na 869MHz o mocy wyjściowej 20dBm lub jak kto woli 100mW i bez problemu uzyskiwaliśmy te 600m na odcinku jednej ulicy w zabudowie miejskiej na antenie 8cm przy prędkości standardowej 9600 bod.
    Dlatego od tytułowego specjalizowanego modemu z tak żenującą prędkością transmisji oczekiwałbym czegoś więcej...
    Modem nazywa się HM-TRP-869S i kosztuje w tme jakieś 30zł, ma odczyt RSSI i zmiany kanałów.
  • #6
    TechEkspert
    Editor
    @Seba_smd czasami mam dostęp do jakiś ciekawych modułów przez ograniczony czas, zrobienie kilku zdjęć i zapisanie wyników nie zajmuje wiele czasu, a może się to komuś przydać. Z doświadczenia wiem, że po umieszczeniu materiału z komentarzy też się dowiem coś czego wcześniej nie wiedziałem.

    @Simon79 nie sprawdzałem zasięgu na prędkości innej niż domyślna, 2.4kbps było zadowalające zarówno pod względem zasięgu jak i czasu transmisji. Wg. opisu i teorii mniejsza prędkość powinna zwiększyć zasięg, jednak nie sprawdziłem tego w praktyce. Jak zwykle są dwie strony medalu, im wolniejsza transmisja tym dłużej w "eterze" i tym większe prawdopodobieństwo zakłóceń. W warunkach jakich testowałem te modemy 3-10Km można włożyć między bajki przy 10dBm, chodziło o pewne i powtarzalne transmisje i dla 200-300m było to zachowane.
    Jaki potrzebujesz zasięg?

    @_johnny_ zapomniałem dodać że te 600m było przy 10dBm i silnej zabudowie, więc uważam że LoRa radzi sobie dobrze. Gdyby antena bramki była wyżej pewnie byłoby jeszcze lepiej. Pewny zasięg 200-300m był w testowanym przypadku zwyczajnie wystarczający. Dodałem do pierwszego postu informacje o minimalnej mocy modułu ustawionej podczas testu.

    @M. S. 1W to już bardzo duża moc jak na tego typu moduły na pasma ISM.
  • #8
    TechEkspert
    Editor