thumb|500px|Typowa topologia bezprzewodowej sieci czujnikowej Bezprzewodowa sieć czujnikowa, WSN (od ang. wireless sensor network) – sieć złożona z wielu urządzeń rozlokowanych na pewnym obszarze w celu realizacji wspólnego zadania. Podstawowym elementem sieci jest węzeł wyposażony w czujnik monitorujący zmienność pewnych zjawisk (temperatury, wilgotności, obecności lub nieobecności obiektu, dźwięku, ciśnienia, ruchu, stopnia zanieczyszczenia powietrza) w różnych miejscach. Początkowo technologie oparte na bezprzewodowych sieciach czujnikowych rozwijane były tylko na potrzeby militarne, jednak zyskują one coraz szersze zastosowanie w dziedzinach życia codziennego (monitorowanie środowiska, zarządzanie ruchem, automatyzacja w domach).

Typowy węzeł bezprzewodowej sieci czujnikowej zbudowany jest z nadajnika-odbiornika radiowego, modułu pamięci, mikroprocesora oraz baterii lub innego źródła energii. Koszt pojedynczego węzła to kwota od kilkunastu centów do kilkuset dolarów, w zależności od jego parametrów.

Najważniejsze parametry, którymi różnią się między sobą sieci czujnikowe oraz które odróżniają je od innych sieci (na przykład komputerowych), to: małe fizyczne rozmiary węzłów optymalizacja komunikacji bezprzewodowej, między innymi poprzez implementację wydajnych algorytmów oraz metod trasowania, w celu oszczędzania energii ograniczenie mocy obliczeniowej i pamięci w celu dalszej minimalizacji zużycia energii zdolność do samoorganizacji odporność na uszkodzenia węzłów silne zabezpieczenie komunikacji (najczęściej bezprzewodowej) przed błędami transmisji istotny nacisk na szybkość przesyłu informacji (szczególnie w sieciach czujnikowych mających ostrzegać przed zagrożeniami) minimalizacja lub całkowity brak udziału człowieka w utrzymaniu sprawności sieci jednorazowość: po zużyciu baterii lub uszkodzeniu węzły sieci czujnikowych często nie są naprawiane, lecz zastępowane nowymi.

Historia Jako najwcześniejsze przykłady nieświadomie kreowanych sieci czujnikowych można przyjąć już sieci radarów naziemnych do kontroli ruchu powietrznego, zbudowanych przed wybuchem drugiej wojny światowej u wybrzeży Wielkiej Brytanii (Chain Home), lub pierwsze sieci energetyczne zdolne do wykrywania spadku napięcia. Rozwój sieci czujnikowych był na początku napędzany głównie przez przemysł militarny (SOSUS, AWACS). Sieci takie służyły jedynie detekcji obiektów i istotną rolę pełnili w nich ludzie.

Prace nad sieciami czujnikowymi w dzisiejszym rozumieniu tego pojęcia rozpoczęły się około roku 1980 w ramach programu Distributed Sensor Network (DSN), realizowanego w amerykańskiej Agencji Zaawansowanych Obronnych Projektów Badawczych (DARPA). Badano wówczas możliwość stworzenia sieci czujnikowej w oparciu o wczesną wersję internetu, który miał w tamtych czasach około 200 hostów, a węzły sieci musiały być przewożone ciężarówkami. Systemy kontrolno-pomiarowe produkowane przed rokiem 1980 posiadały wyraźnie wydzielony komputer centralny, który wykonywał wszystkie obliczenia i do którego spływały dane z nieinteligentnych czujników. W latach 80., wraz z postępami w elektronice i informatyce, zaczęto stosować w nich proste rozwiązania sieciowe, m.in. w postaci tzw. direct digital controllers (DDC), umożliwiając dodatkowo ograniczone przetwarzanie informacji w modułach wejścia/wyjścia. Wśród rozwiązań militarnych z lat 80. i 90. pojawiały się takie, które w coraz większym stopniu samodzielnie przetwarzały dane i podejmowały na ich podstawie decyzje (np. Cooperative Engagement Capability – CEC lub Remote Battlefield Sensor System – REMBASS) bez udziału człowieka. Zmieniały się również sposoby połączenia węzłów z jednostką centralną: od prostych połączeń dial-up, poprzez protokół ethernet, aż po wyspecjalizowane protokoły komunikacji (np. w sieciach LonWorks, BACnet) w połowie lat 90.

Przełomowe okazały się lata dziewięćdziesiąte, kiedy powstały między innymi protokoły LonTalk i BACnet, a na Uniwersytecie w Wallongong w Australii rozpoczęto prace nad wireless ad hoc control networks, które posiadały typowe cechy współczesnych sieci czujnikowych.

Od 1995 roku rozwijana jest norma IEEE 1451, która określa konstrukcję inteligentnych przetworników (ang. smart transducer) oraz sposób ich połączenia z mikrokontrolerami. Zgodność z normą IEEE 1451 wykazuje wiele spotykanych obecnie rozwiązań w dziedzinie bezprzewodowych sieci czujnikowych (ZigBee, Wi-Fi, Bluetooth).

Na przełomie stuleci ważnym krokiem w rozwoju sieci czujnikowych był program agencji DARPA o nazwie SensIT. Położono w nim nacisk na podniesienie poziomu zaawansowania sieci, zdolność do dynamicznej i automatycznej reorganizacji w wypadku zmiany ilości i położenia węzłów sieci oraz zwiększenie sprawności przetwarzania danych w jej ramach.

Nowe technologie (na przykład mikroukłady elektromechaniczne) pozwalają na miniaturyzację, zwiększenie wydajności, a zarazem obniżenie kosztów produkcji, czujników i – co za tym idzie – rozpowszechnienie sieci czujnikowych. Wiele firm (między innymi Ember, Echelon, Sensoria) oferuje gotowe urządzenia, wyposażone w czujniki, mikrokontrolery oraz urządzenia nadawczo-odbiorcze.

W związku z rozpowszechnieniem urządzeń bezprzewodowych (telefonów komórkowych, odbiorników GPS) oraz popularyzacją dostępu do internetu, bezprzewodowe sieci czujnikowe mogą obecnie korzystać ze zróżnicowanych rozwiązań komunikacyjnych, dopasowanych do ich przeznaczenia. Od początku XXI wieku można zaobserwować doskonalenie algorytmów, protokołów, jak również samych urządzeń elektronicznych używanych w sieciach czujnikowych.

Zastosowania Bezprzewodowe sieci czujnikowe znajdują zastosowanie w: wojskowości medycynie kontroli ruchu powietrznego nadzorze ruchu drogowego ochronie zdrowia i mienia automatyzacji procesów przemysłowych i produkcyjnych ochronie i badaniach nad środowiskiem naturalnym budownictwie inteligentnych budynkach.

Samoorganizacja węzłów sieci czujnikowych Algorytmy stosowane do samoorganizacji sieci czujnikowych muszą być w stanie działać lokalnie, gdyż najczęściej rozmiar sieci przekracza zasięg pojedynczego węzła a ich rozmieszczenie jest przypadkowe i nieregularne. Każdy węzeł sieci czujnikowej stanowi więc autonomiczne urządzenie.

Głównym zadaniem algorytmów samoorganizacyjnych jest stworzenie struktury sieci po rozmieszczeniu węzłów oraz utrzymywanie jej przez jak najdłuższy czas. Oznacza to, że algorytmy samoorganizacji zdolne są także do naprawy struktury sieci w przypadku utraty pewnych węzłów i przyłączania nowych węzłów. Celem działania algorytmów samoorganizacyjnych, po pierwotnym zorganizowaniu sieci, jest zapobieżenie podziałowi sieci i minimalizacja utraty danych podczas transmisji. Struktura sieci tworzona jest tak, aby maksymalnie wydłużyć czas działania baterii węzłów.

Zazwyczaj organizacja sieci czujnikowej rozpoczyna się od detekcji sąsiadów oraz pomiaru odległości od nich. Lokalizacja geometryczna węzła uzyskiwana jest w jeden z trzech sposobów: na podstawie pomiaru RSSI (Radio Signal Strength Indication) – przy sieciach bezprzewodowych, na podstawie pomiaru czasu przesyłu pakietów, poprzez komunikację z węzłami referencyjnymi, których położenie jest znane.

Dzięki działaniu specjalnych algorytmów lokalizacyjnych, wykrywana jest topologia sieci, a dopiero później ma miejsce jej właściwa organizacja.

Niektóre algorytmy są w stanie zdecydować o nieużywaniu tych wykrytych węzłów, które nie są niezbędne do realizacji zadania, aby zaoszczędzić ich baterie (ang. Dominating Set based algorithms). Inne wykorzystują wszystkie znalezione węzły, ale ograniczają sposoby ich połączenia (ang. Link-pruning algorithms). Większa ilość krótkich przesłań jest bardziej wydajna z punktu widzenia oszczędności energii oraz zmniejsza ryzyko interferencji w przypadku komunikacji bezprzewodowej.

Struktura sieci może przyjmować różne postaci, w zależności od tego czy wszystkie węzły są identyczne, czy też istnieją węzły wyróżnione, spełniające specyficzne funkcje. Często struktura sieci budowana jest wokół pojedynczego urządzenia, do którego spływają wszystkie dane (ang. data sink). Hierarchicznej architekturze sprzyja zwiększona możliwość przetwarzania (np. uśredniania, kompresowania) danych w wyróżnionych węzłach, co pozwala zmniejszyć sumaryczną ilość przesyłanych danych. Wydzielone fragmenty sieci czujnikowych komunikujące się z jednym węzłem liderem nazywa się klastrami. Czasami, oprócz korzyści wynikających z hierarchicznej architektury sieci, tworzenie klastrów może mieć na celu utworzenie grupy węzłów znajdujących się na zadanym obszarze do wykonania konkretnego zadania.

TopDisc TopDisc to algorytm służący do wykrywania topologii sieci. Jeden z węzłów w sieci rozsyła żądanie topology discovery request, które przekazywane jest przez wszystkie węzły. Czas, po którym dany węzeł wysyła odpowiedź na to żądanie, zależy od tego, po ilu „przeskokach” (ang. hops) je otrzymał. Im bliżej znajduje się on od węzła rozsyłającego, tym dłużej będzie zwlekał z odpowiedzią, aby najpierw zebrać dane z bardziej oddalonych fragmentów sieci. Liczba przeskoków wskazuje na odległość danego węzła od węzła rozsyłającego. Na podstawie tej informacji możliwe jest utworzenie przybliżonej topologii sieci.

Connected dominant set (CDS) Konstrukcja sieci w przypadku tego algorytmu następuje w dwóch fazach. Najpierw ma miejsce proces oznaczania: te węzły, które mają dwóch niepołączonych sąsiadów oznaczają się jako możliwe węzły dominujące. Aby dodatkowo zmniejszyć liczbę takich węzłów, w drugiej fazie organizacji sieci rozsyłana jest wiadomość identyfikująca węzeł jako oznaczony lub nieoznaczony. Na jej podstawie, jeśli wokół danego oznaczonego węzła znajduje się k innych węzłów oznaczonych jako dominujące, staje się on węzłem nieoznaczonym. Parametr k może przyjmować różne wartości, zależnie od potrzeb danej sieci.

W wyniku działania tego algorytmu połączone w sieci są tylko węzły dominujące, które są odpowiedzialne za odbiór danych od nieoznaczonych węzłów i przesłanie ich dalej. Zaletą tego algorytmu jest jego nieskomplikowanie.

Low-energy self-organization scheme (LEGOS) Algorytm ten oprócz pierwotnej organizacji sieci zawiera funkcje podtrzymujące jej trwanie. W celu zaoszczędzenia baterii węzłów reorganizacja sieci może następować lokalnie, na przykład w miejscu awarii lub dołączenia nowego węzła. W LEGOS wyróżnione są trzy rodzaje węzłów: lidery (leader), z których tworzony jest szkielet sieci, bramy (gateway), odpowiedzialne za połączenia między liderami, człony (member), połączone wyłącznie z liderami.

Organizacja sieci w algorytmie LEGOS opiera się na spontanicznym przyłączaniu nowych węzłów do istniejącego szkieletu. Każdy węzeł najpierw oczekuje na wiadomość LDBR (leader broadcast msg), w której uzyskuje informację o istniejących już w okolicy liderach. Domyślnie węzeł rozpoczyna procedurę przyłączenia się jako członek sieci do najbliższego lidera, od którego otrzymał wiadomość. Jednak jeśli żadna wiadomość LDBR nie nadejdzie, węzeł rozsyła komunikat Member_Solicitation_Msg, aby odszukać istniejących w otoczeniu członków sieci lub bramy. Następuje rejestracja nowego węzła w sieci jako lidera, z pomocą istniejącego, najbliższego (a więc oddalonego o dwa przeskoki), lidera. Jeśli w komunikacji pomiędzy liderami pośredniczyła brama, rejestracja nowego lidera kończy procedurę; jeśli pośredniczył zwykły członek, staje się on bramą.

Istnieje również odmiana algorytmu nazywana p-LEGOS, która zezwala na pośredniczenie p bram pomiędzy każdymi dwoma liderami. Pozwala to na zmniejszenie liczby liderów w silnie rozproszonych sieciach.

Lokalne minimalne drzewo rozpinające (minimum spanning tree – MST)