Szenzorhálózatok - HF: Szomszédok felderítése

A VIK Wikiből
A lap korábbi változatát látod, amilyen Unknown user (vitalap) 2012. október 22., 12:46-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|SzenzorHalozatokHFSzomszedok}} ==Feladat: (1) szomszédok felderítése== ===Részletes kiírás=== Készítsen olyan minta alkalmazást…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


Feladat: (1) szomszédok felderítése

Részletes kiírás

Készítsen olyan minta alkalmazást, ahol a szenzorhálózati csomópontok (mótok) képesek önállóan felderíteni a kommunikációs sugarukon belül elérhető szomszédaikat. A feladat minden mót számára egy táblázat létrehozása és folyamatos karbantartása a szomszédairól, figyelembe véve, hogy a szomszédos csomópontok eltűnhetnek ill. új csomópontok is megjelenhetnek a hálózatban.

Adjon megoldást arra is, hogy a csomópontok eljuttassák a szomszédossági információkat egy PC-hez kötött nyelő állomásnak, többugrásos (multi-hop) hálózatot feltételezve (azaz amikor nem minden állomás képes közvetlenül a nyelővel kommunikálni). A PC képernyőjén jelenjen meg a hálózat logikai gráfja, azaz a gráf csomópontjai a mótok, az élek pedig egymással közvetlenül kommunikálni képes mótokat kötnek össze.

Segítség

A feladat megoldásához a GenericComm komponensre lesz szükség, amivel üzeneteket lehet küldeni és fogadni. Létre kell hozni valamilyen saját üzenetformátumot, amibe bele lehet tenni a küldő címét. Minden mote periodikusan elküld egy ilyen csomagot a saját címével mindenkinek, azaz a broadcast címre (TOS_BCAST_ADDR). Ha valaki vesz egy ilyen csomagot, akkor bejegyzi a táblázatába, hogy az a mote a közelben van. Azokat a mote-okat, amiktől érkezett valamikor üzenet, de azóta már sok idő eltelt, törölni kell a táblázatból. (Lehet úgy is, hogy időnként törli az egészet, és egy bizonyos ideig vár újabb csomagokat, és akiktől érkezett, azokat tekinti szomszédainak. Arra azért ügyelni kell, hogy a felhasználó ne lásson olyat, hogy nincsenek szomszédok, vagy kevés szomszéd van, miközben biztos szomszédai vannak, csak épp törölte a listát, azaz amíg össze nem gyűlt teljesen az új szomszédlista, addig a régit meg kell őrizni.)

A feladatból első körben el lehet hagyni a multihop kommunikációt, és a mitmóton megjeleníteni azt, hogy milyen szomszédai vannak. Erre lehet használni a LED-eket, pl. úgy, hogy ha max. 4 mote van, akkor 1-1 LED tartozhat a mote-okhoz, de jobb megoldás, ha sorban végigmegy a szomszédainak listáján, és binárisan megjeleníti a címüket, mindegyiket 0,5-1 másodpercig.

Szükséges komponensek:

  • Kell egy komponens, ami az üzeneteket küldözgeti
    • A GenericComm-hoz kapcsolódik, SendMsg interfésszel
    • Ez egy Timer-t használhat arra, hogy periodikusan küldje az üzeneteket
  • Kell egy komponens, ami fogadja az üzeneteket
    • A GenericComm-hoz kapcsolódik, ReceiveMsg interfésszel
    • A fogadott csomagokból kideríti, hogy ki küldte, és ezt továbbadja a következő komponensnek
  • Kell egy komponens, ami a táblázatot nyilvántartja
    • Az interfészén keresztül lehessen jelezni, hogy valakitől érkezett csomag
  • Kell egy komponens, ami az eredményt megjeleníti.
    • Ez kiolvassa a szomszédsági táblázatot
    • és periodikusan megjeleníti a címeiket a LED-eken
    • Egy Timer-t és a Leds4C komponens Leds4 interfészét használja a periodikus megjelenítésre.

-- Laci - 2007.04.19.