blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
Programátor
deadawp



Test dosahu LoRa 433 MHz RA-02
pridal deadawp 4.4. 2025 o 15:05 (naposledy upravené 5.4. 2025 o 10:56)

Modul RA-02 od AI-Thinker - čínskeho populárneho výrobcu elektroniky (ESP32-CAM, ESP32-S a iné), je založený na Semtech SX1278 a ponúka zaujímavé riešenie pre bezdrôtový prenos. Okrem LoRa (CHIRP) modulácie podporuje aj FSK (frekvenčnú kľúčovanú) či OOK (On-Off Keying – bipolárnu) moduláciu, ktoré sa hodia najmä podľa účelu použitia pre rôzne aplikácie, kde sa vyžaduje vyššia priepustnosť, či ľahšie implementácia a kompatibilita s inými prijímačmi. Modul má ISM spektrum od 410 do 525 MHz a teda je ho možné použiť v nelicencovanom hlavnom pásme 433 MHz, špecificky 433.05 MHz – 434.79 MHz. Aj keď sa toto frekvenčné spektrum môže javiť ako neefektívne, je to spôsobené tým, že modul je hlavne pre čínsky trh, kde sú vyhradené špecifické frekvencie pre LPWAN siete, kde by sa dal primárne použiť. Modul je vybavený štandardným u.FL konektorom pre pripojenie antény a má na PCB aj filtračné kondenzátory.

Výrobca udáva dosah modulu až 10 kilometrov, avšak výkon, ktorý by to umožnil nemôžete v tomto pásme legálne používať. V porovnaní s inými LoRa modulmi dosahuje menší dosah, nakoľko iné moduly, založené najmä na SX1276 umožňujú prepínanie aj na rozsah 868 a 915 MHz a použitie vyššieho vysielacieho výkonu, až 25 mW. V našom prípade na 433 MHz je záväzný vysielací výkon 10 mW, čo odpovedá 10 dBm.

Modul je napájaný na 3.3V, využíva SPI zbernicu a tiež DIO0 pin ako interrupt pre signalizáciu ukončeného vysielania, alebo prijímania paketu. Vhodné napäťové úrovne pre toto má ESP32 a tak som využil Lolin32 (Wemos dizajn). Vytvoril som si jednoduchú DPS, kde sa komponenty osadili na pin headre + je tam možnosť pripojiť aj teplotný snímač DS18B20 na OneWire zbernicu v normálnom zapojení s adaptérom, ktorý obsahuje rezistor 4,7 kohm. Tiež pripojenie I2C periférie a použitie digitálneho výstupu, prípadne digitálneho / analógového vstupu. V mojom prípade bude neskôr použitie viazané na napäťový delič, ktorý bude snímač napätie autobatérie, ktorá napája elektrický oplotok.

Zostavil som si vysielač a prijímač pre test dosahu. K vysielaču som pridal DS18B20, ktorý bude merať teplotu a posielať ju skrz LoRa moduláciu. Prijímač dostal indikačnú modrú LED diódu, ktorá indikuje prijaté dáta. Dáta boli zapuzdrené do štruktúry, ktorá okrem teploty obsahovala aj inkrementačné počítadlo, aby bolo možné pozorovať, či došlo k výpadku medzi jednodlivými paketmi, alebo boli prijaté. Štruktúra tak zaberala 8 bajtov (64-bitov) payloadu, keďže dátový typ int aj float zhodne zaberajú 4B.



Pre optimalizáciu prenosu na dosiahnutie požadovanej vzdialenosti (testovacia oblasť vzdialená cez 800 metrov s Line of Sight) som na stranách vysielača a prijímača použil identickú konfiguráciu, ktorá obsahovala:

  • Strednú frekvenciu 433.175 MHz
  • Šírka pásma 125 kHz
  • Spreading factor 12
  • Kódovací pomer 4/8
  • 8-symbolová preambula
  • Sync word 0x12
  • Zapnuté CRC

Šírka pásma definuje rozsah frekvencií okolo (hlavnej) strednej frekvencie na ktorej LoRa zariadenia pracuje. Teda v našom prípade to bude 433.175 MHz ± 62.5 kHz, čo odpovedá rozsahu 433.1125 MHz do 433.2375 MHz, ktorý je validný rosah v 433 MHz nelicencovanom pásme, ktoré sa môže voľne používať. Užšie pásmo je výhodnejšie pre dosiahnutie vyšších vzdialeností na úkor menšieho bitratu. Šírka pásma je štandardne ešte 250 alebo 500 kHz.

Spreading factor 12 definuje šírku časovej oblasti vysielaného signálu. Prijímač nastavený na spreading factor 12 (najvyššia hodnota) je citlivý a dokáže prijímať dáta aj z veľkých vzdialeností. Na druhú stranu však dramaticky znižuje bitrate prenosu. Vzhľadom nato, že posielame iba 2 dáta s veľkosťou pár bajtov, je to úplne bezpredmetné. V prípade iných spreading factorov, napríklad 7 budeme mať rýchly prenos, avšak na úkor nižšej prenosovej rýchlosti.

Kódovací pomer 4/8 znamená, že za každý 4-bitový blok dát sa pridávajú 4 paritné (korekčné) bity. Tento pomer 4/8 je jedným z najvyšších dostupných kódovacích pomerov, ktorý poskytuje vysokú mieru redundancie voči rušeniu, ale zároveň výrazne zvyšuje veľkosť prenášaných dát, pretože na každý 4-bitový blok dát sa pridajú ďalšie 4 bity. Pre generovanie týchto korekčných bitov sa využíva Reed-Solomonovo kódovanie.

Preambula nie je súčasťou payloadu paketu a teda neberie efektívny priestor na zapuzdrenie dát. Preambula predlžuje airtime, avšak je nápomocná pre synchronizáciu prijímača, ktorý sa naladí na frekvenciu vysielača pre dosiahnutie spoľahlivého prijatia kompletného paketu v celej dĺžke. Toto je iba variabilná časť preambuly, ku ktorej je vložený sync word a tvorí tak celú pomyselnú preambulu.

Sync word je mechanizmus filtrovania, ktorý umožňuje prijímaču odfiltrovať pakety, ktoré môžu pochádzať aj od iných zariadení vysielajúcich s LoRa (CHIRP) moduláciou na totožnej frekvencii. S nastaveným sync wordom prijímač príjme iba pakety, kde sa sync word rovná nastavenému. Takýmto spôsobom si môžete vytvoriť celú LoRa privátnu sieť s množstvom snímačov a vlastnou bránou, ktorá môže dáta prijímať a pushovať ich do 3rd party služby. Štandardný LoRa prenos nie je šifrovaný, ale môžete dosiahnuť šifrovanie payloadu implementáciou knižnice AESLib, čím zašifrujete payload pre jeho odoslaním, prenos ako taký nie je šifrovaný. Prijímač musí vykonať dešifrovanie správy pre jej získanie v pôvodnom znení.

Zapnutím CRC dosiahneme detekciu chýb, ktorá sa aplikuje na celý paket. CRC hodnota sa pridá na koniec paketu a slúži ako mechanizmus na overenie, či crc súčet payloadu odpovedá pripojenému v pakete. Ak nie, celý paket sa zahodí a na prijímači ani nie je vyhodnotený ako prijatý, teda nie je možné s LoRa Arduino knižnicou prečítať ani obsah takéhoto paketu.


Prípravy pre test:
Vysielač a prijímač používali rovnakú všesmerovú (OMNI) anténu, ktorá má charakteristiku vyžarovania okolo osi antény. Vysielač bol osadený na balkón a bol napájaný skrz malú 1000 mAh Li-pol batériu a bol statický. Nad zemou bol cca 7 metrov. Prijímač bol mobilný a napájaný skrz powerbanku vo výške asi 1,1 metra nad zemou, pričom na prijímači bežal aj webserver na ESP32 v AP móde, kde bolo možné pozorovať okrem prijatých dát teploty aj výkon prijatého signálu (RSSI) a tiež odhadovanú kalkuláciu vzdialenosti vzhľadom na RSSI.

Prepočet vzidalenosti z RSSI sa počas testu ukázal ako nespoľahlivý, nakoľko vzdialenosť vôbec neodpovedala realite, ani keď išlo o priamy LoS prenos a odchýlky boli extrémne. Výpočet využíval empirický vzorec s konštantami, ale nešlo o teoretický model: float distance = pow(10, (27.55 - (20 * log10(433)) - rssi) / 20.0); Keďže AP s webserverom bežalo na 2,4 GHz, neovplyvňovalo LoRa prenos a bolo ho možné používať v reálnom čase bez potreby vypínania počas príjmu LoRa prijímača. Nespôsobovalo mu žiadnu interferenciu

Zameral som sa tri referenčné body, kde som meral výkon prijatého signálu, dáta o výškovom prevýšení sú už prepočítané vrátane zohľadnenia výšky antén od zeme. Prvé miesto bolo vzdialené 619 metrov od vysielača s výškovým prevýšením 35 metrov bez LoS (bez priamej viditeľnosti vysielača na prijímač). Zákryt robil kopec, avšak prijímač bol schopný prijímať dáta aj bez priamej viditeľnosti s vysielačom. Hodnota RSSI bola -103 dBm, čo je možné klasifikovať ako horší príjem, avšak citlivosť RA-02 LoRa modulu je -137 dBm, teda je tam ešte dostatočná rezerva na spoľahlivý príjem.    



Druhý testovací bod sa nachádzal vo vzdialenosti 825 metrov od vysielača s výškovým prevýšením 56 metrov. Išlo o LoS, teda priamu viditeľnosť medzi vysielačom a prijímačom. V tomto prípade bola hodnota RSSI zaznamenaná na hodnote v rozsahu 87 až 91 dBm, čo je možné klasifikovať ako dobrú hodnotu príjmu. Nakoľko v ceste neboli prekážky, ktoré musel signál prekonať, podarilo sa dostať kvalitnejší príjem o 106 metrov ďalej, čím sa odkryl vysielač, keďže prijímač bol vyššie ako vysielač a mal naň priamu viditeľnosť.

 

Tretie testované miesto sa nachádzalo vo vzdialenosti 844 metrov od vysielača s výškovým prevýšením 55 metrov a bolo situované ešte viac na východ s takmer priamou viditeľnosťou na vysielač, pred ktorým je vo vzdialenosti asi 30 metrov strom, orech s opadaným lístim, teda interferencia nebola až taká veľká, ale bola tam. Výkon prijatého signálu na prijímači bol -97 dBm.

Prijímač spoľahlivo indikoval prijaté dáta bliknutím LED diódou po dobu 500 ms. Tento indikátor sa splnil až po získaní paketu, teda až po overení CRC, Sync Wordu a pod, kedy bol paket nevyfiltrovaný. Na základe nameraých dát si myslím, že dosah môže byť niekde pod 2 km v reálnych podmienkach s 10 mW vysielacím výkonom na strane vysielača.

LoRa vysielač bude nasadený po namontovaní oplotku, ktoré je plánované po posadení zemiakov a bude v pravidelných intervaloch reportovať teplotu, možno aj iné zaujímavé dáta ako detekcia pohybu, prítomnosti, ale najmä bude monitorovať napätie batérie, ktorá bude napájať oplotok. Nakoľko bude batéria 12V, resp. v prípade dobíjania môže mať až 14,8V, budeme musieť použiť vhodný napäťový delič, štandardne pre tento rozsah 5:1, čím 5-násobne znížime napätie na GPIO mikrokontroléra. Dostaneme sa tak na GPIO úroveň ESP32 okolo 3V pri plnom napätí batérie pri maximálnom dobíjaní.

Rovnako tak strednú frekvenciu môžete posunúť aj vyššie vo frekvenčnou rozsahu nelicencovaného pásma 433 MHz. Mnoho zariadení, ktoré sú na 433 MHz využívajú práve spodnú časť, ide najmä o rôzne ovládače garážových brán, zvončekov a mnoho iného. Aj keď je LoRa modulácia iná v porovnaní s inými, môže tu dochádzať k rušeniu najmä, ak vysielajú v rovnakom čase. Z tohto dôvodu je preambula šikovným nástrojom pre naladenie prijímača ešte pred posielaním samotného paketu.

V pásme 433 MHz platí, že nemôžete prenášať zvuk a video. Za určitých podmienok je možné prenášať hlasové služby a aj to len s menším výkonom 1 mW. Rovnako tak v pásme treba rešpektovať aj duty cycle. V mojom prípade bolo duty cycle 0,07, t.j. 7%,  i keď bolo vysielanie pomerne frekventované, tak netrvalo dlho. Duty cycle by sa násobne navýšil s posielaním väčšieho množstva dát, kedy je nutné duty cycle korigovať početnosťou vysielaní. Do duty cycle sa berie celkový airtime čas, kedy zariadenie vysiela, teda vrátane preambuly atď. Prenášať skrz jeden paket môžete maximálne 256 B payloadu (2048 bitov).



Prístupov 74
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Návrh jednoduchých PCB v EasyEDA
[ 5.4.2025] (príspevkov 0)
Test dosahu LoRa 433 MHz RA-02
[ 4.4.2025] (príspevkov 0)
Lolin32 vs. Lolin32 Lite - čo je dobré v...
[ 21.3.2025] (príspevkov 0)
ZK-4KX buck/boost regulátor s krabičkou
[ 16.3.2025] (príspevkov 0)
Protherm kotol chyba F.28 - reštart kotl...
[ 2.3.2025] (príspevkov 0)
ESP32 hlasové ovládanie s Firebase Realt...
[ 1.3.2025] (príspevkov 0)
Maticový displej s MAX7219
[ 22.2.2025] (príspevkov 0)
EBYTE E32-433T20D s dosahom až 3 km?
[ 19.2.2025] (príspevkov 0)