Contiki - WSN Wiki hálózati szimulátorok
Felhasználói eszközök
Webhelyeszközök
Tartalomjegyzék
A Contiki operációs rendszer fő "kedvezményezettjei" a vezeték nélküli szenzorhálózat (WSN) szenzorcsomópontjai. Ezen csomópontok jellemzői (alacsony költség, alacsony feldolgozási és memóriakapacitások és korlátozott energiatartalék) lehetetlenné teszik a fejlett operációs rendszer futtatását. Emiatt egy "alacsony szintű" rendszer, például a Contiki használata több mint megfelelő.
A vezeték nélküli érzékelőhálózat felépítését az alábbi ábra mutatja:

Amint láthatja, a hálózat zöme tucatnyi, esetleg száz szenzoros csomópontból áll, amelyek többé-kevésbé ugyanazt a programot futtatják. Legtöbbször a program magában foglal egy olyan folyamatot, amely adatokat gyűjt a környezettől, és elküldi azokat egy süllyesztési csomópontra, valamint egy másik folyamatot, amely végrehajtja a hálózati koordinátorból (átjáró csomópont) érkező esetleges parancsokat.
Gyakran szükség van egy elosztott algoritmus kifejlesztésére, amely az egész hálózaton keresztül fut, hogy lehetővé tegye az üzenetek csomópontok közötti cseréjét multi-hop módon. Egy ilyen algoritmus valós megvalósítása nehézkes, különösen a nagy számú csomópont miatt, amelyeket a fejlesztési fázisban gyakran át kell programozni.
Emiatt a fejlesztés korai szakaszában célszerűbb hálózati szimulátort használni. A Contiki két szimulátort használ erre a célra: az Mspsim-et a szenzoros csomópont szintjén, a Cooja-t pedig egy teljes csomópont-hálózat szimulációjára.
MSP-k emulátor a Texas Instruments ultra-alacsony fogyasztású processzorainak MSP430 sorozatához. Tmote Sky szenzoros csomópontokon használják. A szimulátor támogatja az IntelHEX és az ELF adatbeviteli formátumot, és segédprogramokkal rendelkezik a verem figyeléséhez, töréspont beállításához és profilozáshoz.

COOJA egy Java-ban írt hálózati szimulátor, amely a Contikit futtató vezeték nélküli érzékelőhálózatok szimulálására szolgál. A COOJA szimulálhatja a heterogén szenzorhálózatokat, ahol minden csomópont eltérhet a többitől, nemcsak az általa futtatott szoftver, hanem a hardver szempontjából is. A szimulált COOJA csomópont három alapvető tulajdonsággal rendelkezik: adatmemória, csomópont típus és hardver perifériák. A szimulátor kétféleképpen képes végrehajtani a kódot: vagy a gazdagép processzorához fordított natív kód, vagy az MSPsim emulátor segítségével. A COOJA nem Contiki csomópontokat is szimulálhat Java-ban, azzal az előnnyel, hogy a szimulációs idő sokkal jobb a korábbi változatokhoz képest.

Ebben a laboratóriumban megtanulja használni mindkét szimulátort.
MSP-k
Az MSPsim nagyon egyszerűen futtatható a kód fordításakor. A következő paranccsal indítania kell egy MSPsim példányt, és szimulálja a hello-world példát:
Az egyik nyitott ablakban (USART1 Port Output) a Contiki rendszerindítási sorrend által kinyomtatott szövegsorok láthatók. Az MSPsim tartalmaz még világító LED-eket és nyomható gombokat is, akárcsak egy valódi platform esetében. Próbálja megnyomni a reset gombot, és nézze meg, mi történik.
Feladatok
1. Feladat: Bontsa ki a hello-world.c programot, hogy a LED-ek villogjanak (időzítő beírása), és a "Felhasználó" gomb megnyomásakor (esemény beírása) szöveget nyomtasson a soros interfészre.
TIPP: Nézze meg a "core/dev/leds.h" és a "core/dev/button-sensor.h" elemeket, és ne felejtse el megtenni a printf
Nagyon hasznos alkalmazás a shell. Ez lehetővé teszi, hogy minimális héj legyen a soros kapcsolaton vagy akár a rádiós kapcsolaton keresztül.
2. gyakorlat: Futtassa a Tmote Sky shell alkalmazását az MSPsim alkalmazásban:
A help parancs felsorolja az összes elérhető parancsot. Próbáld ki őket, és játssz velük.
3. gyakorlat: A meglévő kód használatával hajtson végre egy új shell parancsot, amely a LED be- vagy kikapcsolására utasítja.
TIPP: Használja az „apps/serial-shell/serial-shell.h” és az „apps/shell/shell.h” kifejezéseket
Fordítóprogram
COOJA
A COOJA használatához kövesse az alábbi lépéseket:
3. Hozzon létre egy új szimulációt: Fájl → Új szimuláció. Írja be a nevét Szimuláció neve és nyomja meg Teremt
4. Hozzon létre egy új csomópont-típust: Mote Types → Mote type létrehozása → Sky Mote Type. Írj be egy Leírás (A "Gogu" vagy a "gigi" divatosnak tűnik ekkor) akkor Tallózás amíg el nem érsz példák/mondókák/példa-abc.c. nyomja meg Összeállítás és amikor mindennek vége, nyomja meg Teremt.
5. Adjon hozzá csomópontokat a szimulációhoz: Motes → Típusok hozzáadása → [“gogu” sau “gigi”]. hozzá 5. csomópontok akkor adnak Létrehozás és hozzáadás.
Az 5 csomópont véletlenszerű koordinátákon jön létre a síkban. Másik csomópont-elrendezést is választhat a Véletlen helyzet, lineáris, ellipszis, vagy Kézi pozicionálás.
6. Győződjön meg róla, hogy van Bővítmények → Naplófigyelő és beépülő modulok → Szimulációs megjelenítő aktív.
7. Nyomja meg a gombot Rajt a kezelőpanelen a szimuláció elindításához.
Először meg kell vizsgálnia, hogy a csomópontok kommunikálnak-e egymással. A COOJA alapértelmezett modellt használ a rádiójelek terjesztésére, az úgynevezett Unit Disk Graph Model (UDGM) néven. Válasszon az UDGM viewer menüből, és a szimulációban láthatja.
A zöld kör a központi csomópont átviteli sugarát jelöli, vagyis a csomópont kommunikálhat az adott körön belül található bármely más csomópontdal.
A szürke kör az interferencia zónát jelöli. Ha egy csomópont ezen a területen van, akkor nem fogadhat csomagokat más csomópontoktól, ha a kiválasztott csomópont ekkor küld adatokat. Más szóval, ez a terület egy zavaró terület, amelyben a csomópont adó-vevője lehetetlenné teszi a többi csomópont megfelelő kommunikációját. Ha két csomópontot akar kommunikálni, két lehetősége van: vagy húzza az egyik csomópontot, amíg el nem éri a másik csomópont kommunikációs sugarát, vagy növeli a kommunikációs sugarat az ablak menüjéből vagy az adott csomópontra jobb gombbal kattintva megjelenő menüből.
Feladatok
1. Feladat: Ez a gyakorlat megmutatja, hogyan használhatja a rím adási struktúrákat, hogy üzenetet küldjön a bázisállomásnak. Nyissa meg a fent összeállított példát (rime/example-abc.c), és keresse meg a következőt:
Cserélje ki a Hello szót az üzenetére, és változtassa meg a második paramétert új hosszúságúra. Ne használjon négybetűs szavakat. Fordítsa le a kódot és szimulálja a COOJA-ban. Figyelje meg, mi történik.