För att kunna jämföra principen med att använda två nät mot ett måste mätresultaten kvantifieras (Lindskog, 2006). Detta kan göra genom att ta fram standardavvikelsen för resp. nät och totalen från mätprincipen med två nät.
Enligt Rung och von Heijne (2018) beskriver Ekvation 7 hur standardavvikelsen beräknas: 𝜎 = .∑) (+$#+̅)' $*( 0#$ (7) Där: 𝜎 är standardavvikelsen
xk är mätfelet, i detta fall det enskilda kvadrerade avståndsfelet ,𝛥𝑥'+ 𝛥𝑦'
𝑥̅ är medelvärdet av alla kvadrerade avståndsfel n = antalet mätvärden
k = visat numret på första observationen
4 Resultat
Baserat på studieundersökningen så är GPS absolut det bästa systemet, men då bassängen är placerad där den är så kommer detta inte fungera.
Den mest rimliga tekniken att använda till ändamålet är accesspunkter och ett ESP32 mikrochip eftersom arbetet hade ett low-cost perspektiv.
Vid det praktiska provet samlades mätvärden in och beräknades enligt Ekvation 7. Nät 1 hade en standardavvikelse på 0,16 meter, nät 2 på 0,20 meter och
kombinationen med nät 1 och 2 gav en standardavvikelse av det sanna värdet på 0,11 meter. Värdet beskriver nätets mätnoggrannhet även över andra positioner.
Figur 12. Resultat från mätningen med båda nätverken som visar de olika uppmätta koordinaterna för
punkterna med koordinat (3,1; 2,4). Standardavvikelse på 0,11meter.
0 0,5 1 1,5 2 2,5 3 3,5 4 4,5 5 0 1 2 3 4 5
Total (3,1; 2,4)
Figur 13. Resultaten från mätningen med nätverk 1 som visar de olika uppmätta koordinaterna för
punkterna med koordinat (3,1; 2,4). Standardavvikelse på 0,15meter.
Figur 14. Resultaten från mätningen med nätverk 2 som visar de olika uppmätta koordinaterna för
5 Diskussion
En standardavvikelse på 0,11 meter är nära målet. Förhållande till modellen och bassängens yta så är det aningen för högt. Med ett kombinerat system av UWB och WiFi eller Bluetooth så kanske ytterligare noggrannhet kan uppnås. Att använda ett kombinerat system kan bidra till en högre noggrannhet. Anledningen till att vi tror det blev svårt med WiFi är att signalstyrkan varierade och som ett resultat av detta så varierade även mätvärdet ganska kraftigt, en del olika filter gjorde det möjligt att ändå kunna presentera ett rimligt resultat.
Mottagaren (ESP32) kräver även en elektrisk matning, detta har inte projektet belyst. För att uppnå detta kan en ackumulator installeras ombord på modellen. För att ladda ackumulatorn skulle en solcellspanel kunna placeras ombord. Detta bör inte vara något större problem då bassängen är placerad utomhus och bassängen belyses viss tid under dagen. Skulle inte detta fungera, kanske möjligheten att använda sig av speglar för att dirigera solstrålarna ner till fartygsmodellen kan vara en lösning.
6 Slutsats
Att använda två system på beskrivet sätt ökade noggrannheten men för ändamålet är det fortfarande för stor avvikelse mellan beräknade värden och verkligheten.
Referenser
Apple. (2021). Apple introduces AirTag. Hämtad 2021-04-23 från https://www.apple.com/newsroom/2021/04/apple-introduces-airtag/ Arduino. (2021). ARDUINO UNO REV3. Hämtad 2021-04-23 från https://store.arduino.cc/arduino-uno-rev3
Beal, V. (2001, 2 maj). WiFi Definition and Meaning. Hämtad 2021-04-19 från https://www.webopedia.com/definitions/wifi/ (Ej använd i texten)
Bluetooth. (2021). The story behind how Bluetooth got its name Hämtad 2021-04-22 från https://www.bluetooth.com/about-us/bluetooth-origin/
Chipster. (u.å.). Allt om RFID Hämtad 2021-03-18 från https://chipster.nu/guider/allt-om-rfid
Device Plus. (2020). Arduino: The Popular Microcontroller Board! Its History and
to How to Use It. Hämtad 2021-04-29 från
https://www.deviceplus.com/arduino/arduino-the-popular-microcontroller-board-its-history-and-to-how-to-use-it/
FAS Military Analysis Network. (1998). Navigation for Weapons Hämtad 2021-04-28 Från https://fas.org/man/dod-101/navy/docs/es310/GPS/GPS.htm
Handley, R. (2021 13april). RFID JOURNAL. Contribute a Guest Article to RFID
Journal. Tillgänglig: https://www.rfidjournal.com/contribute-a-guest-article-to-rfid-journals-audience
Induo. (2020, 25 februari). INOMHUSOPTIMERING DÄR GPS-EN INTE NÅR [Blogginlägg]. Hämtad 2021-03-12 från
https://www.induo.com/b/inomhuspositionering-ips/
Kjell & Company. (2017a). Arduino-hårdvara? Hämtad 2021-03-18 från https://www.kjell.com/se/kunskap/hur-funkar-det/arduino/introduktion/arduino-hardvara
Kjell & Company. (2017b). Vad är Arduino och Genuino? Hämtad 2021-03-17 från https://www.kjell.com/se/kunskap/hur-funkar-det/arduino/introduktion/vad-ar-arduino-och-genuino
Kjell & Company. (2018a). Anslut Arduino till wifi. Hämtad 2021-03-23 från https://www.kjell.com/se/kunskap/hur-funkar-det/arduino/arduino-projekt/anslut-
Kjell & Company. (2018c). Wifi – Trådlöst nätverk. Hämtad 2021-03-02 från https://www.kjell.com/se/kunskap/hur-funkar-det/internet/lokala-natverk/wifi---tradlost-natverk
Kjell & Company. (2019). Kanalplanering. Hämtad 2021-03-02 från https://www.kjell.com/se/kunskap/hur-funkar-det/internet/lokala-natverk/kanalplanering
Lindh, T. (Red.). (1999). Navigation 3 Navigation med teletekniska hjälpmedel. Stockholm: Försvarsmakten.
Lindskog, J. (2006). Mätvärdesbehandling. Lund: Studentlitteratur.
Linksys. (u.å.). What is an Access Point and How is it Different from a Range
Extender? Hämtad 2021-04-22 från https://www.linksys.com/us/r/resource-center/what-is-a-wifi-access-point/
Marketing Team. (2020, 29 september). 5GHz vs 2.4GHz – What is the best WiFi
frequency? Hämtad 2021-04-19 från https://www.tanaza.com/blog/5ghz-vs-2-4ghz/ RANDOM NERD TOUTORIALS. (u.å.). ESP32 Useful Wi-Fi Library Functions
(Arduino IDE) Hämtad 2021-03-23 från
https://randomnerdtutorials.com/esp32-useful-wi-fi-functions-arduino/ Rung, A., von Heijne, E. (2018). Matematik numerus 2C. Stockholm: Liber.
Sempler, K. (2005, 14 december). NyTeknik. Så funkar rfid-taggarna. Tillgänglig: https://www.nyteknik.se/popularteknik/sa-funkar-rfid-taggarna-6370691
Singh, V. (2021, 7 januari). Difference Between C and C++ [Blogginlägg]. Hämtad 2021-04-20 från https://hackr.io/blog/difference-between-c-and-cplusplus
Stirparo, P., Loeschner, J., & Cattani, M. (2012). Bluetooth technology: security features, vulnerabilities and attacks. Digital Citizen Security. doi:
10.13140/RG.2.2.23401.49760
The Nautical Institute. (u.å.). Dynamic positioning. Hämtad 2021-05-01 från
Bilaga 1
Den kod som användes för programmering.
#include <WiFi.h> #include <math.h>
float sensBx1 = 8.8; // Avstånd mellan AP nät 1
float sensBx2 = 8.8; // Avstånd mellan AP nät 2
float sensAy1 = 4.7; // Avstånd mellan Näten i Y-led
float xNet1; // X-koordinat för nät 1
float yNet1; // Y-koordinat för nät 1
float xNet2; // X-koordinat för nät 2
float yNet2; // Y-koordinat för nät 2
float avarageRSSI[5][4]; // Matrismed 2 dimensioner för lagrins av medelvärde // av RSSI-värden
float avRSSI1; // Medelvärde RSSI SSID 1
float avRSSI2; // Medelvärde RSSI SSID 2
float avRSSI3; // Medelvärde RSSI SSID 3
float avRSSI4; // Medelvärde RSSI SSID 4
float avRSSI5; // Medelvärde RSSI båda nätens X
float avRSSI6; // Medelvärde RSSI båda nätens Y
/* Funktion för att beräkna avstånd för nät 1 */ void fCalcNet1() {
yNet1 = (pow(avRSSI2,2)-pow(avRSSI1,2)- // Beräkning av Y-koordinat med hjälp av cirkelns
pow(sensBx1,2))/(sensBx1*2); // ekvation
xNet1 = sqrt(pow(avRSSI1,2)-pow(xNet1,2)); // Beräkning av X-koordinat med hjälp av cirkelns // ekvation
if (yNet1 < 0) { // Kontroll så endast positiv Y-position används
yNet1 = yNet1 * -1; // Om Y-värdet är negativt byts tecken till positivt }
if (xNet1 < 0) { // Kontroll så endast positiv X-position används
xNet1 = xNet1 * -1; // Om X-värdet är negativt byts tecken till positivt }
}
/* Funktion för att beräkna avstånd för nät 2 */ void fCalcNet2() {
yNet2 = (pow(avRSSI4,2)-pow(avRSSI3,2)- // Beräkning av X-koordinat med hjälp av cirkelns
(sensBx2,2))/(sensBx2*2); // ekvation
xNet2 = sqrt(pow(avRSSI3,2)-pow(xNet2,2)); // Beräkning av Y-koordinat med hjälp av cirkelns //ekvation
if (yNet2 < 0) { // Kontroll så endast positiv Y-position används
yNet2 = yNet2 * -1; // Om Y-värdet är negativt byts tecken till positivt }
if (xNet2 < 0) { // Kontroll så endast positiv X-position används
xNet2 = xNet2 * -1; // Om X-värdet är negativt byts tecken till positivt }
}
void setup() {
Serial.begin(115200); // Starta seriel kommunikation för loggning
int nNetworkCount = WiFi.scanNetworks(); // Avläsning av antal nätverk som kan upptäckas
for(int nNetwork = 0; nNetwork < // Loop som körs lika många ggr som antalet funna
nNetworkCount; nNetwork++){ //nätverk
String scSSID = WiFi.SSID(nNetwork); // SSID för det nummer på nätverk som bearbetas i // loopen
if (scSSID == "Kaj-Fi1"){ // Kontroll SSID motsvarar "Kaj-Fi1"
double dDst1 = // Beräkning av avståndet med räta linjens
pow(10, -(double)WiFi.RSSI(nNetwork)/27-1); // ekvation
for (int x=3; x > 0 ; x--){ // Loop för att flytta alla lagrade värden i matrisen ett avarageRSSI[0][x] = avarageRSSI[0][x-1]; // steg
}
avarageRSSI[0][0] = dDst1; // Det senaste värdet lagras i matrisen avRSSI1 = (avarageRSSI[0][0]+avarageRSSI[0][1]+ // Medelvärde av värden i matrisen beräknas avarageRSSI[0][2]+avarageRSSI[0][3])/4; //
}
else if (scSSID == "Kaj-Fi2"){ // Kontroll SSID motsvarar "Kaj-Fi2" double dDst2 = pow(10, - // Beräkning av avståndet med räta linjens (double)WiFi.RSSI(nNetwork)/28-1); // ekvation
for (int x=3; x > 0 ; x--){ // Loop för att flytta alla lagrade värden i matrisen ett avarageRSSI[1][x] = avarageRSSI[1][x-1]; // steg
}
avarageRSSI[1][0] = dDst2; // Det senaste värdet lagras i matrisen avRSSI2 = (avarageRSSI[1][0]+avarageRSSI[1][1]+ // Medelvärde av värden i matrisen avarageRSSI[1][2]+avarageRSSI[1][3])/4; //
}
fCalcNet1(); // Starta beräkning av koordinater för Nät 1
if (scSSID == "Kaj-Fi3"){ // Kontroll SSID motsvarar "Kaj-Fi3"
double dDst3 = pow(10, - // Beräkning av avståndet med räta linjens
(double)WiFi.RSSI(nNetwork)/28-1); // ekvation
for (int x=3; x > 0 ; x--){ // Loop för att flytta alla lagrade värden i matrisen ett avarageRSSI[2][x] = avarageRSSI[2][x-1]; // steg
}
avarageRSSI[2][0] = dDst3; // Det senaste värdet lagras i matrisen avRSSI3 = (avarageRSSI[2][0]+avarageRSSI[2][1]+ // Medelvärde av värden i matrisen avarageRSSI[2][2]+avarageRSSI[2][3])/4; //
}
else if (scSSID == "Kaj-Fi4"){ // Kontroll SSID motsvarar "Kaj-Fi3" double dDst4 = pow(10, -
(double)WiFi.RSSI(nNetwork)/27-1); // Beräkning av avståndet med räta linjens ekvation for (int x=3; x > 0 ; x--){ // Loop för att flytta alla lagrade värden i matrisen ett avarageRSSI[3][x] = avarageRSSI[3][x-1]; // steg
}
avarageRSSI[3][0] = dDst4; // Det senaste värdet lagras i matrisen avRSSI4 = (avarageRSSI[3][0]+avarageRSSI[3][1]+ // Medelvärde av värden i matrisen avarageRSSI[3][2]+avarageRSSI[3][3])/4; //
} }
fCalcNet2(); // Starta beräkning av koordinater för Nät 1
double xTot = ((sensBx1-xNet1)+xNet2)/2; // Beräkna medelvärdet av de två nätens X-koordinater for (int x=3; x > 0 ; x--){ // Loop för att flytta alla lagrade värden i matrisen ett avarageRSSI[4][x] = avarageRSSI[4][x-1]; // steg
avarageRSSI[4][0] = xTot; // Det senaste värdet lagras i matrisen avRSSI5 = (avarageRSSI[4][0]+avarageRSSI[4][1]+ // Medelvärde av värden i matrisen avarageRSSI[4][2]+avarageRSSI[4][3])/4; //
double yTot = ((sensAy1-yNet1)+yNet2)/2; // Beräkna medelvärdet av de två nätens Y-koordinater for (int x=3; x > 0 ; x--){ // Loop för att flytta alla lagrade värden i matrisen ett avarageRSSI[5][x] = avarageRSSI[5][x-1]; // steg
}
avarageRSSI[5][0] = yTot; // Det senaste värdet lagras i matrisen avRSSI6 = (avarageRSSI[5][0]+avarageRSSI[5][1]+ // Medelvärde av värden i matrisen avarageRSSI[5][2]+avarageRSSI[5][3])/4; // /* Endast för loggning */ Serial.print("KF1: "); Serial.print(avRSSI1); Serial.print(", KF2: "); Serial.print(avRSSI2); Serial.print(", X1:"); Serial.print(xNet1); Serial.print(", Y1:"); Serial.print(yNet1); Serial.print(" | ");
Serial.print(" KF3: "); Serial.print(avRSSI3); Serial.print(", KF4: "); Serial.print(avRSSI4); Serial.print(", X2: "); Serial.print(xNet2); Serial.print(", Y2: "); Serial.print(yNet2); Serial.print(" | ");
Serial.print(" X: "); Serial.print(avRSSI6); Serial.print(", Y: "); Serial.println(avRSSI5); }