User Tools

Site Tools


lab11

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lab11 [2016/01/19 19:21]
dan.tudose [MSPsim]
lab11 [2016/01/19 19:34] (current)
dan.tudose [Contiki - Simulatoare de Retea]
Line 4: Line 4:
 Arhitectura unei retele de senzori wireless este data in figura de mai jos: Arhitectura unei retele de senzori wireless este data in figura de mai jos:
  
-{{:si:lab:537px-wsn.svg.png|}}+{{:537px-wsn.svg.png|}} 
  
 Dupa cum se poate observa, grosul retelei este format din zeci, poate chiar sute de noduri senzoriale care ruleaza toate mai mult sau mai putin acelasi program. De cele mai multe ori programul implica un proces care colecteaza date din mediu si le trimite catre un nod sink si un alt proces care executa eventualele comenzi venite de la coordonatorul retelei (nodul gateway). Dupa cum se poate observa, grosul retelei este format din zeci, poate chiar sute de noduri senzoriale care ruleaza toate mai mult sau mai putin acelasi program. De cele mai multe ori programul implica un proces care colecteaza date din mediu si le trimite catre un nod sink si un alt proces care executa eventualele comenzi venite de la coordonatorul retelei (nodul gateway).
Line 15: Line 16:
 Simulatorul accepta un format de intrare al datelor IntelHEX si ELF si are utilitati pentru monitorizarea stivei, setarea de breakpointuri si profiling.  Simulatorul accepta un format de intrare al datelor IntelHEX si ELF si are utilitati pentru monitorizarea stivei, setarea de breakpointuri si profiling. 
  
-{{:si:lab:mspsimsky.png?800}}+{{:943a26c0ef177a34cea1b698d84ac301.media.900x675.png?800|}} 
  
 **COOJA** este un simulator de retea scris in Java si este destinat simularii retelelor de senzori wireless care ruleaza Contiki. COOJA poate sa simuleze retele de senzori eterogene, unde fiecare nod poate fi diferit fata de restul, nu numai din perspectiva softului pe care il ruleaza dar si din punctul de vedere al hardware-ului. **COOJA** este un simulator de retea scris in Java si este destinat simularii retelelor de senzori wireless care ruleaza Contiki. COOJA poate sa simuleze retele de senzori eterogene, unde fiecare nod poate fi diferit fata de restul, nu numai din perspectiva softului pe care il ruleaza dar si din punctul de vedere al hardware-ului.
 Un nod simulat de COOJA are trei proprietati de baza: memoria de date, tipul nodului si perifericele hardware. Simulatorul poate sa execute cod in doua moduri: fie cod nativ compilat pentru procesorul gazda, fie folosind emulatorul MSPsim. COOJA poate sa simuleze si noduri non-Contiki, implementate in Java, cu avantajul ca timpul de simulare este cu mult imbunatatit fata de variantele precedente. Un nod simulat de COOJA are trei proprietati de baza: memoria de date, tipul nodului si perifericele hardware. Simulatorul poate sa execute cod in doua moduri: fie cod nativ compilat pentru procesorul gazda, fie folosind emulatorul MSPsim. COOJA poate sa simuleze si noduri non-Contiki, implementate in Java, cu avantajul ca timpul de simulare este cu mult imbunatatit fata de variantele precedente.
  
-{{:si:lab:timeline_screenshot.png|}}+{{ ::timeline_screenshot.png|}}
  
 In acest laborator veti invata sa folositi ambele simulatoare. In acest laborator veti invata sa folositi ambele simulatoare.
Line 57: Line 59:
  
   * Compilatorul necesar este msp-gcc, puteți să îl downloadați de {{ http://elf.cs.pub.ro/~si/msp430-gcc.zip | aici }}. Calea trebuie să fie /opt/msp430 (trebuie adăugat și în PATH)   * Compilatorul necesar este msp-gcc, puteți să îl downloadați de {{ http://elf.cs.pub.ro/~si/msp430-gcc.zip | aici }}. Calea trebuie să fie /opt/msp430 (trebuie adăugat și în PATH)
 +
 +===== COOJA =====
 +
 +Pentru a folosi COOJA, trebuie sa respectati pasii urmatori:
 +
 +1. Instalati ant
 +<code bash>sudo apt-get install ant</code>
 +
 +2. Rulati Cooja
 +<code>cd tools/cooja
 +ant run</code>
 +
 +3. Creati o simulare noua: **File -> New Simulation**. Introduceti un nume la **Simulation Name** si apasati **Create**
 +
 +4. Creati un nou tip de nod: **Mote Types -> Create mote type -> Sky Mote Type**. Introduceti un **Description** ("gogu" sau "gigi" suna trendy la ora asta ;-) ) apoi **Browse** pana ajungeti la **examples/rime/example-abc.c**. Apasati **Compile** si, cand totul s-a terminat, apasati **Create**.
 +
 +5. Adaugati noduri in simulare: **Motes -> Add motes of type -> ["gogu" sau "gigi"]**. Adaugati **5** noduri apoi dati **Create and Add**.
 +
 +Cele 5 noduri sunt create la coordonate aleatorii din plan. Puteti sa alegeti si o alta dispunere a nodurilor folosind optiunile de **Random Position, Linear, Ellipse,** sau **Manual Positioning**.
 +
 +6. Asigurati-va ca aveti **Plugins -> Log Listener and Plugins -> Simulation visualizer** activat.
 +
 +7. Apasati **Start** in panoul de control pentru a porni simularea.
 +
 +Primul lucru pe care trebuie sa-l faceti este sa verificati daca nodurile comunica intre ele. COOJA foloseste un model defaul pentru propagarea semnalelor radio numit Unit Disk Graph Model (UDGM). Selectati din meniul vizualizatorului UDGM si il veti putea vedea in simulare. 
 +
 +Cercul verde reprezinta raza de transmisie a nodului central, adica nodul poate comunica cu orice alt nod aflat in interiorul cercului respectiv. 
 +
 +Cercul gri reprezinta zona de interferenta. Daca un nod este in aceasta zona, el nu poate primi pachete de la alte noduri, daca nodul selectat trimite date in acel timp. Cu alte cuvinte, zona respectiva este o zona de bruiaj in care transceiverul nodului face imposibila comunicatia corecta a altor noduri.
 +Daca vreti sa faceti doua noduri sa comunice, aveti doua optiuni: fie trageti de un nod pana cand ajunge in raza de comunicatie a celuluilalt nod, fie mariti raza de comunicatie din meniul ferestrei sau din meniul care apare la right-click pe nodul respectiv.
 +
 +==== Exercitii ====
 +
 +**Exercitiul 1:**
 +Acest exercitiu va va arata cum sa folositi structurile de broadcast in rime pentru a trimite un mesaj catre base-station.
 +Deschideti exemplul pe care l-ati compilat mai sus (rime/example-abc.c) si gasiti linia cu:
 +<code C>packetbuf_copyfrom("Hello", 6);</code>
 +Inlocuiti //Hello// cu mesajul vostru si modificati al doilea parametru pentru noua lungime a lui. Incercati sa nu folositi cuvinte de patru litere. Recompilati codul si simulati in COOJA. Observati ce se intampla.
 +
 +**Exercitiul 2:**
 +Folosind unicast, trebuie sa trimiteti un mesaj de pe un nod catre un singur alt nod. Pentru aceasta folositi codul din **rime/example-unicast.c**, identificati si modificati adresele destinatie.
 +
  
lab11.1453224086.txt.gz · Last modified: 2016/01/19 19:21 by dan.tudose