blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
PHP, Arduino programátor
deadawp



Určenie vzdialenosti / polohy v bezdrôtových technológiách
pridal deadawp 3.9. 2020 o 23:43



V bezdrôtovej technike existuje mnoho spôsob, ako je možné určiť vzdialenosť, alebo polohu bodu nachádzajúceho sa v sieti. Pri určovaní polohy je nutné mať referenčné body s nemennou polohou, vďaka ktorej vieme odhadnúť polohu iného bodu. Dnes sa budeme zaoberať iba meraním na strane prijímača.

Určenie vzdialenosti na základe času
Ak je vysielač a prijímač časovo synchronizovaný, napríklad prostredníctvom NTP servera, či DCF77 je možné využiť jednoduchý výpočet vzdialenosti na základe času príchodu signálu.

  • d = c* Τ --> vzdialenosť = rýchlosť svetla * počet sekúnd

Určenie vzdialenosti na základe výkonu prijatého signálu - RSSI
RSSI (Výkon prijatého signálu) je jedným zo spôsobov v bezdrôtovej technike, ako určiť vzdialenosť prijímača (klienta) od vysielača. Výkon prijatého signálu klesá s konštantným koeficientom, takzvaným činiteľom útlmu, ktorý závisí od prostredia, ktorým signál prechádza.

Avšak RSSI prináša aj určitú formu skreslenia, nakoľko signál môže byť prijatý aj prostredníctvom priamej vlny, ale aj odrazov, ktoré do značnej miery prinášajú rušenie, ktoré nie je možné vždy predvídať a pripočítať danú odchýlku. Odrazy je možné do istej miery eliminovať napríklad časovou synchronizáciou vysielača a prijímača, nakoľko rýchlosť šírenia signálu je konštantná.

Činiteľ útlmu:

  • 2 - priama viditeľnosť (Line of Sight)
  • 3.6 - prechod stenou, prekážkou (strom)
  • vyššie činitele útlmu existujú v iných prostrediach prechodu - želežobetón, viacero stien...

Najčastejšie sa operácie pre výpočet vzdialenosti prostredníctvom RSSI používajú v prípade, že medzi vysielačom a prijímačom existuje viditeľné spojenie bez prekážok - tzv. Line of Sight (priama viditeľnosť). Aby bolo možné odhadnúť vzdialenosť z RSSI, je nutné poznať aj vysielací výkon vysielača.
Základný vzorec (možno vyjadriť d):

  • PR (dB) = PT (dB) - 10*cinitel_ulmu*log10d
  • d= 10 ^ ((PT (dB) – PR (dB))/(10 * cinitel_ulmu))

Patch loss vzorec - strata po prechode prostredím:

  • PL (dB) = Pt (dB) – Pr (dB)

Platformy ESP8266 a ESP32 majú 2,4 GHz anténu pre WiFi vysielanie. Pri ESP32 je možné spomínanú anténu využiť aj pre Bluetooth Low Energy (BLE). Výkonové charakteristiky sú pre vstavanú PCB anténu.

Výkonové charakteristiky ESP32 (enumerické konštanty) v Arduino Core:

  • 19.5 dBm
  • 19 dBm
  • 18.5 dBm
  • 17 dBm
  • 15 dBm
  • 13 dBm
  • 11 dBm
  • 8.5 dBm
  • 7 dBm
  • 5 dBm
  • 2 dBm
  • -1 dBm

Výkonové  charakteristiky ESP8266 (plne voliteľné používateľom):

  • 0 až 20.5 dBm (float)

Z praktického hľadiska môžeme RSSI s vhodne navrhnutou klientskou aplikáciou plne využiť napríklad pre nízkonákladový pozičný navigačný interiérový systém, kde nie je možné využiť GPS, alebo inú technológiu pre určenie polohy od bodu so známou polohou.

Typickou technológiou, pre ktorú je možné RSSI v interiéri využiť (a aj sa používa) pre navigačný systém je Bluetooth.  Beacon (one-way maják) vysielajúci konštantný signál s istým výkonom môže byť prijatý na strane prijímača a na základe RSSI je možné určiť vzdialenosť od beaconu, ktorá sa dynamicky mení na základe pohybujúceho sa mobilného terminálu (prijímača). Vyššou verziou obdobného systému je možnosť určenia polohy v priestore samotného prijímača s využitím viacerých beaconov v priestore s ich známymi polohami (súradnicami). 

Na základe známych súradníc referenčných bodov je možné určiť polohu prijímača v 2D, alebo 3D priestore. Metódy pre 3D polohu môžu byť komplexnejšie, ale aj primitívne.. Jedna z najprimitívnejších metód pre 3D polohu je pridanie tretieho rozmeru na základe referenčných bodov umiestnených na poschodiach, ktoré tretí rozmer reprezentujú. Predpoklad je, že prijímač príjme vyšší výkon práve od zariadenia na poschodí na ktorom sa nachádza.

Určenie samotnej polohy prebieha prostredníctvom kružnicovej / štvorcovej trilatérácie, čo umožňuje zároveň určiť aj približný smer, alebo sektor, v ktorom sa nachádza bod. 

Program pre výpočet vzdialenosti od SSID AP - ESP8266:

#include <ESP8266WiFi.h>
const char * ssid = "ESP8266_AP_SSID";
const char * password = "WIFI_PASSWORD";
unsigned long cas = 0;
float vykon_vysielaca = 19.5;
float cinitel_utlmu = 2;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi uspesne pripojene");
Serial.println("IP adresa: ");
Serial.println(WiFi.localIP());
Serial.println("Ready");
}

void loop() {
if ((millis() - cas) >= 1000) {
cas = millis();
int vykon_prijateho_signalu = WiFi.RSSI();
float vypocet1 = vykon_vysielaca – vykon_prijateho_signalu;
float vypocet2 = vypocet1 / (10 * cinitel_utlmu);
float vzdialenost = pow(10, vypocet2);
Serial.print("RSSI: ");
Serial.println(rssi);
Serial.print("Vzdialenost: ");
Serial.println(vzdialenost);
}
}



Prístupov 1133
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
Ovládanie Arduina cez UART z počítača
[ 19.11.2020] (príspevkov 0)
ArduinoJson - knižnica pre parsovanie JS...
[ 15.11.2020] (príspevkov 0)
Overenie kradnutých vozidiel - Arduino +...
[ 11.11.2020] (príspevkov 0)
Hladinomer + Zrážkomer - Arduino / ESP82...
[ 2.11.2020] (príspevkov 0)
RFID vrátnik - update Október 2020
[ 29.10.2020] (príspevkov 0)
Digitálny potenciometer, prerušenie, deb...
[ 28.10.2020] (príspevkov 0)
Integrácia zrážkomera RG-11 do projektu ...
[ 22.10.2020] (príspevkov 0)
WiFi Termostat - ESP8266 - WiFiManager -...
[ 28.9.2020] (príspevkov 0)
Izbový termostat - Portovanie programu -...
[ 22.9.2020] (príspevkov 0)
RFID vrátnik - Ukončenie projektu
[ 9.9.2020] (príspevkov 0)