LoRa
Long Range Radio
Varianta komunikace na velkou vzdálenost pro SubT.
LoRa je typ radiove modulace pro komunikaci na dlouhe vzdalenosti:
Vyrobcu (podobne jako u wifi nebo bluetooth) je spousta, kazdy "node" potrebuje
modem
(https://www.semtech.com/products/wireless-rf/lora-transceivers/sx1276) (v
USA je to k dispozici na frekvenci 915MHz) a nejaky procesor. Bud to muzes
koupit hotove v krabicce, nebo jako pytlik soucastek nebo neco mezi tim.
Ja tu mam dva kusy Heltec LoRa 32 V2
(https://heltec.org/project/wifi-lora-32/) coz je ESP32 (procesor) a SX1276
(modem) plus 0.96" OLED display, na pridelani na robota podle mne naprosto
vyhovujici (velikosti i cenou), ale pokud bychom se rozhodli "nodes" odhazovat
cestou, tak by asi byl optimalni jiny format.
- jsou to radia, zadna network vrstva, t.j posloucha a posila to data z/do vzduchu
- Lze to pripojit pres Serial over USB nebo UART (vylozene jen TX/RX draty); taky to umi wifi (klient i access point) a tusim i Bluetooth takze by s tim robot mohl komunikovat bezdratove
- takze kdyz byste to pripojili k pocitaci na robotovi, tak byste napriklad to radio mohli instruovat, aby kazdych 30 sekund vyslalo seznam doposud najitych artefaktu a doufat, ze to base station uslysi (pripadne to muze slyset jiny robot a poslat to dal)
- samozrejme by to mohlo posilat prubezne informace typu rychlost, vzdalenost od zdi, apod
- v opacnem smeru by robot mohl poslouchat jestli neprijdou od basestation nejake pokyny
- co se dosahu tyce, dal jsem jednu jednotku do sklepa (dum je na kopci) a s druhou jsem odesel pod kopec (tj prima cara mezi obema jednotkami musela byt urcite 50m skrz zem) a na asi 200m vzdalenosti to stale fungovalo (jak jsem asi psal, v urban environment - tj skrze domy apod - by to melo mit dosah aspon 2km)
- existuji nejake nadstavbove protokoly, ktere zabezpeci adresovani, security, apod, ale to nevim, jestli potrebujeme, skoro muze byt snazsi si tech par dodatku udelat sami
- takze bud bychom mohli namontovat jednu jednotku na kazdeho robota (a ty bud budou fungovat samostatne nebo v nejakem mesh-i, kde informace ruzne preposilaji) nebo se pokusime o nejake to odhazovani
Modul ocekavam ze bude pripojen pres USB (poskytnu 30cm USB kabely, bylo by
dobre vedet, jestli mate nejake standardizovane uchyty podle kterych bych
vytiskl krabicky) do ktereho budete z vaseho kodu "tisknout" (println) pro
vysilani a ze ktereho budete cist (readline) pro prijem, tj napr pro broadcast
pozice robota by vas kod mohl vypadat takto:
with open('/dev/usb/xxx', 'w') as radio: radio.write(robot.ID + "X"+ pos.x + "Y" + pos.y)
Pro maximalni dosah/penetraci je potreba omezit delku payloadu na 40 bytu, ale
jestli budete potrebovat posilat neco vetsiho, tak se o tom muzeme bavit.
Ja myslim, ze moznosti jsou docela jasne - unreliable intermittent
connectivity. S tim, ze pokud se spokojis s par bytama, melo by to pro scenar
na ktery se doufam pripravujeme (t.j. robot odjede dale nez 20m od vchodu) byt
daleko spolehlivejsi a s vetsim dosahem, nez pokud vyzadujes komunikaci s
charakteristikou wifi.
Dodani seznamu artefaktu ke vchodu do tunelu je cely point SubT Challenge,
takze podle mne bychom meli mit minimalne to co jsem popsal, zejmena kdyz je na
to na robotovi potreba 5 radek kodu. Samozrejme, pokud nasi roboti nehledaji
artefakty ale jen nataci video, ktere je potreba privezt zpet a analyzovat u
vchodu, tak toto neni applicable.
Dale predpokladam, ze informace o stavu robotu a posilat pokyny by take bylo
zajimave (jak pises a jak jsme videli v STIX) - jestli robot jede, stoji, kam
miri, jak je daleko ode zdi, jestli mu mame dat pokyn, aby zacal couvat, jestli
mame poslat dalsiho robota nebo si ho nechat prinest, apod.
Co tohle?
https://nootropicdesign.com/projectlab/2018/10/20/lora-mesh-networking/
Mohlo by něco takového běžet "uvnitř"?
Bylo by možné ty moduly přes usb připojit k PC tak, že PC by se už nemuselo o síť nijak starat?
Takhle vypadaji ty zapouzdrene komunikatory pro jednotlive roboty plus base
station. Kdyby mi ti co stavi ty roboticke platformy dali info o tom, jake jsou
k dispozici uchyty, mohu to trochu upravit, aby se to dalo k platforme lepe
pridelat.
Ta antenka by snad mela optimalne smerovat vzuru a asi by bylo lepsi aby to
bylo na robotu spise vyse nez nize. USB kabel bude 30cm, tak aby to dosahlo.
Idealne by ta antena nebyla moc blizko
Napriklad pokud by byla vertikalni trubka, tam bych ten tvar trochu zaoblil a
pridal ouska pro zip-tie. Pokud by se spise neco sroubovalo, tak bych pridal
neco kam by se dal dat sroubek. Kazdopadne vzdycky se to da prilepit paskou.
Krabička se dá předělat jak bude potřeba ale ta na fotce je taková minimální.
Rozměry snad jsou jakž takž patrné z toho měřítka na fotce, nemám to teď před
sebou ale krabička vypadá tak na 8x5x2 cm, anténa je tak 7cm dlouhá a 1cm
průměr.
USB není nezbytné, taky to umí WiFi a Bluetooth takže se to může tvářit jako
access point a fungovat jako server. To je ale potřeba vědět dopředu, aby se to
dalo naprogramovat. Napájet se to dá z baterie jestli je problém i proud.
FB 20/7
Tak jsem ty radia naprogramoval tak jak jsem o tom psal, tj
- pripoji se to kabelem (co dodam) do USB-A konektoru pocitace na robotovi nebo na zakladne (e.g., RaspPi, laptop, etc)
* obsahuje to chip CP2102 USB-to-serial port takze pocitac musi mit odpovidajici
driver (standard v Ubuntu napriklad) a komunikovat pres ten port jako se
seriovym zarizenim rychlosti 115200 baud
- kazdemu radiu jsem priradil unikatni ID (1, 2, 3, …)
- jednou za 1-2 sekundy se to radio vzbudi a pokud je neco na serial input, tak to cte, kdyz to narazi na newline, tak z toho udela packet a broadcastuje ho (na zacatek paketu se prida ID a pipe, tj paket by mohl byt neco jako "1|speed=4"
- soucasne to posloucha na prijmu, kdyz se ve vzduchu objevi nejaky paket (ne vlastni), tak ho prijme a vytiskne do STDOUT
- na svem displeji to zobrazuje aktivity a stats (pakety prijmuty/odeslany, co zrovna se prijmulo/odeslalo, atd)
Umi to spoustu jinych komunikaci, treba wifi nebo bluetooth kdyby to bylo k
necemu uzitecne.
The maximum user data size depends on the data rate. For the minimal and the
maximal data rate in Europe, the maximum data sizes are respectively 59 and 250
B. As the LoRa preamble is composed of eight symbols, a node may spend long
time in Rx (resp. Tx) mode depending on the chosen modulation.