Autor: inż. Łukasz Pulik
Promotor: dr inż. Dominik Łuczak
Praca dyplomowa inżynierska. Studia niestacjonarne.
Celem pracy było zaprojektowanie systemu antywłamaniowego z wykorzystaniem aplikacji mobilnej w systemie Android, która pozwoliłaby wykryć włamanie przy zastosowanych czujnikach zmian pola magnetycznego oraz zmian przyspieszenia. Aplikacja mobilna łączy się z aplikacją desktopowa, nadzoruje ona działanie oraz gromadzi wszelakie dane napływające z detektora włamania i wykorzystuje je w znajdującym się w nim algorytmie wykrywającym otwarcie drzwi. Komunikacja pomiędzy aplikacjami opiera się na protokole TCP. Metoda detekcji włamania która została w systemie zaimplementowana opiera się na sprawdzeniu kąta otwarcia drzwi, na których znajduje się urządzenie mobilne z zainstalowaną aplikacją. Rysunek 1 przedstawia trzy główne okna aplikacji mobilnej.
Rysunek 1: Okna dostępne w aplikacji mobilnej
Środkowe okno (Rysunek 1) wykorzystywane jest w celu sterowania detektorem, w samym jego centrum znajduje się przycisk w postaci obrazu który komunikuje się z centralą systemową. W zależności od stanu, czyli obrazka, przycisk wykonuje różne przypisane akcje.
Implementując architekturę akcelerometru w aplikacji mobilnej w czasie odczytu wartości występuje niedokładność związana z błędnymi pomiarami. Czujnik nie mierzy rzeczywistych wartości przyspieszenia urządzenia. Spowodowane jest to tym, że algorytm korzysta z zależność w którym grawitacja zawsze wpływa na mierzone przyspieszenie. W celu usunięcia wpływu grawitacji zastosowano filtr górnoprzepustowy oraz filtr dolnoprzepustowy.
Drugim ogniwem systemu antywłamaniowego jest centrala systemowa. Jest to aplikacja desktopowa napisana przy użyciu języka Java posiadająca przejrzysty interfejs użytkownika. Jej zadaniem jest utrzymanie ciągłej kontroli nad aplikacją mobilna. Zaimplementowano w niej główny algorytm służący dla celu wykrycia włamania (Rysunek 2).
Rysunek 2: Interfejs graficzny aplikacji okienkowej
Algorytm wykrycia włamania opierał się na zależności macierzy obrotów, wektora pola magnetycznego oraz wektor przyspieszenia ziemskiego dla których można było wyznaczyć wartości katów rotacji obiektu ⯑ (1), ⯑ (2), ⯑ (3). Na podstawie kąta Theta algorytm oblicza kąt otwarcia drzwi.
Centrala systemowa posiada możliwość wyeksportowania bazy danych która zawiera wszystkie zapisane wartości z obu czujników. Dla dalszej interpretacji zapisanych wartości został stworzony kod w środowisku Matlab który sprawdza czy w czasie działania systemu nie nastąpiła próba wywarzenia drzwi. Na wykresie wygenerowanym w programie Matlab próbki znajdujące się poza granicą normy wykazują silne uderzenia (Rysunek 3).
Rysunek 3: Próbki wartości przyspieszenia względem czasu wygenerowane w programie Matlab
Na zakończenie pracy zostały wykonane testy dla drzwi lewo oraz prawoskrętnych, które sprawdzają poprawność działania systemu. Tabela 1 zawiera wyniki z kątomierza nastawnego oraz maksymalne i minimalne wartości kąta obliczonego przez algorytm. Błąd to różnica średniej arytmetycznej i kąta rzeczywistego.
Tabela 1: Przedstawienie kątów obliczonych przez algorytm dla drzwi lewoskrętnych
Kąt (kątomierz) |
Minimalny kat (algorytm) |
Maksymalny kąt (algorytm) |
Średnia arytmetyczna |
Błąd |
0.0 |
0.2 |
1.2 |
1.0 |
1.0 |
10.0 |
9.6 |
11.2 |
10.4 |
0.4 |
20.0 |
20.3 |
21.4 |
20.85 |
0.85 |
30.0 |
29.8 |
30.8 |
30.3 |
0.3 |
40.0 |
40.1 |
42.0 |
41.05 |
1.05 |
50.0 |
50.4 |
51.7 |
51.05 |
1.05 |
60.0 |
58.9 |
60.3 |
59.6 |
0.4 |
70.0 |
69.4 |
71.0 |
70.2 |
0.2 |
80.0 |
80.6 |
81.6 |
81.1 |
1.1 |
90.0 |
89.7 |
90.8 |
90.25 |
0.25 |