Contiki - WSN Wiki Network Simulators
Nástroje používateľa
Nástroje stránky
Obsah
Hlavnými „príjemcami“ operačného systému Contiki sú uzly senzorov v bezdrôtovej sieti senzorov (WSN). Vlastnosti týchto uzlov (nízke náklady, nízke spracovateľské a pamäťové schopnosti a obmedzené rezervy energie) znemožňujú spustenie pokročilého operačného systému. Z tohto dôvodu je použitie systému „nízkej úrovne“, ako je Contiki, viac než postačujúce.
Architektúra bezdrôtovej siete senzorov je uvedená na nasledujúcom obrázku:

Ako vidíte, prevažnú časť siete tvoria desiatky, možno dokonca stovky senzorických uzlov, ktoré všetky prevádzkujú viac-menej rovnaký program. Program väčšinou zahŕňa proces, ktorý zhromažďuje údaje z prostredia a odosiela ich do uzla umývadla, a ďalší proces, ktorý vykonáva všetky príkazy pochádzajúce od koordinátora siete (uzol brány).
Často je potrebné vyvinúť distribuovaný algoritmus, ktorý beží v celej sieti, aby sa umožnila výmena správ medzi uzlami viacskokovým spôsobom. Realizácia takéhoto algoritmu v reálnom živote je zložitá, najmä kvôli veľkému počtu uzlov, ktoré je potrebné vo fáze vývoja často preprogramovať.
Z tohto dôvodu je v počiatočných fázach vývoja vhodnejšie používať sieťový simulátor. Contiki na tento účel používa dva simulátory: Mspsim na úrovni senzorických uzlov a Cooja na simuláciu celej siete uzlov.
MsP je emulátor pre sériu MSP430 procesorov s veľmi nízkym výkonom od spoločnosti Texas Instruments. Používajú sa na senzorických uzloch Tmote Sky. Simulátor podporuje vstupné formáty údajov IntelHEX a ELF a má pomôcky na monitorovanie zásobníka, nastavenie zarážky a profilovanie.

COOJA je sieťový simulátor napísaný v prostredí Java a je určený na simuláciu bezdrôtových senzorových sietí so systémom Contiki. COOJA dokáže simulovať heterogénne senzorové siete, kde sa každý uzol môže líšiť od ostatných, a to nielen z pohľadu softvéru, ktorý prevádzkuje, ale aj z hľadiska hardvéru. Simulovaný uzol COOJA má tri základné vlastnosti: dátovú pamäť, typ uzla a hardvérové periférie. Simulátor môže vykonávať kód dvoma spôsobmi: buď natívnym kódom skompilovaným pre hostiteľský procesor, alebo použitím emulátora MSPsim. COOJA môže tiež simulovať uzly, ktoré nie sú Contiki, implementované v Jave, s výhodou, že čas simulácie je v porovnaní s predchádzajúcimi variantmi výrazne vylepšený.

V tomto laboratóriu sa naučíte používať oba simulátory.
MsP
MSPsim je možné veľmi ľahko spustiť pri kompilácii kódu. Nasledujúci príkaz by mal spustiť inštanciu MSPsim a simulovať váš príklad z hello-sveta:
V jednom z otvorených okien (USART1 Port Output) uvidíte riadky textu vytlačené bootovacou sekvenciou Contiki. Súčasťou MSPsimu sú tiež LED diódy, ktoré je možné rozsvietiť, a tlačidlá, ktoré je možné stlačiť, rovnako ako v prípade skutočnej platformy. Skúste stlačiť tlačidlo reset a uvidíte, čo sa stane.
Cvičenia
Cvičenie 1: Rozbaľte program hello-world.c, aby LED diódy blikali (zadajte časovač) a vytlačte text na sériové rozhranie po stlačení tlačidla „Používateľ“ (zadajte udalosť).
TIP: Prezrite si „core/dev/leds.h“ a „core/dev/button-sensor.h“ a nezabudnite urobiť printf
Veľmi užitočnou aplikáciou je shell. Vďaka tomu môžete mať minimálne sériové pripojenie alebo dokonca aj rádiové spojenie.
Cvičenie 2: Spustite shell aplikáciu pre Tmote Sky v MSPsim:
Príkaz pomocníka uvádza zoznam všetkých dostupných príkazov. Vyskúšajte ich a hrajte sa s nimi.
Cvičenie 3: Pomocou existujúceho kódu implementujte nový príkaz shellu, ktorý dáva príkazu LED na zapnutie alebo vypnutie.
TIP: Použite „apps/serial-shell/serial-shell.h“ a „apps/shell/shell.h“
Zostavovateľ
COOJA
Ak chcete používať COOJA, musíte postupovať podľa týchto krokov:
3. Vytvorte novú simuláciu: Súbor → Nová simulácia. Zadajte názov pre Názov simulácie a stlačte vytvorené
4. Vytvorte nový typ uzla: Typy Mote → Vytvorte typ Mote → Typ Sky Mote. Zadajte a Popis („Gogu“ alebo „gigi“ znie v tejto chvíli trendy) Prechádzať kým sa nedostanete priklady/riekanky/priklad-abc.c. stlačte Zostaviť a keď je po všetkom, stlačte vytvorené.
5. Pridajte uzly do simulácie: Moty → Pridať motívy typu → [“gogu” sau “gigi”]. pridať 5 uzly potom dajú Vytvorte a pridajte.
5 uzlov je vytvorených v náhodných súradniciach v rovine. Môžete si tiež zvoliť iné rozloženie uzla pomocou Náhodná pozícia, lineárna, elipsa, alebo Ručné polohovanie.
6. Uistite sa, že máte Doplnky → Prijímač protokolov a doplnky → Vizualizér simulácie aktivovaný.
7. Stlačte začať na ovládacom paneli na spustenie simulácie.
Prvá vec, ktorú musíte urobiť, je skontrolovať, či uzly navzájom komunikujú. COOJA používa predvolený model na šírenie rádiových signálov nazývaný Unit Disk Graph Model (UDGM). Vyberte z ponuky prehliadača UDGM a uvidíte to v simulácii.
Zelený kruh predstavuje polomer prenosu centrálneho uzla, tj. Uzol môže komunikovať s akýmkoľvek iným uzlom vo vnútri príslušného kruhu.
Sivý kruh predstavuje oblasť rušenia. Ak sa uzol nachádza v tejto oblasti, nemôže prijímať pakety z iných uzlov, ak vybraný uzol v tom čase odosiela údaje. Inými slovami, príslušná oblasť je oblasťou rušenia, v ktorej uzlový vysielač a prijímač znemožňuje správnu komunikáciu s ostatnými uzlami. Ak chcete zabezpečiť komunikáciu dvoch uzlov, máte dve možnosti: buď potiahnite jeden uzol, kým nedosiahne komunikačný polomer druhého uzla, alebo zväčšite komunikačný polomer z ponuky okna alebo z ponuky, ktorá sa zobrazí kliknutím pravým tlačidlom myši na daný uzol.
Cvičenia
Cvičenie 1: Toto cvičenie vám ukáže, ako používať rýmové vysielacie štruktúry na odoslanie správy na základňovú stanicu. Otvorte príklad, ktorý ste skompilovali vyššie (rime/example-abc.c), a vyhľadajte riadok s:
Nahraďte správu Hello a zmeňte druhý parameter na novú dĺžku. Snažte sa nepoužívať štvorpísmenové slová. Zostavte kód a simulujte v COOJA. Všimnite si, čo sa deje.