Contiki - Симулатори на WSN Wiki Network
Потребителски инструменти
Инструменти на сайта
Съдържание
Основните „бенефициенти“ на операционната система Contiki са сензорните възли в безжична сензорна мрежа (WSN). Характеристиките на тези възли (ниска цена, ниски възможности за обработка и памет и ограничени енергийни резерви) правят невъзможно стартирането на усъвършенствана операционна система. Поради това използването на система от „ниско ниво“ като Contiki е повече от достатъчно.
Архитектурата на безжична сензорна мрежа е дадена на фигурата по-долу:

Както можете да видите, по-голямата част от мрежата се състои от десетки, може би дори стотици сензорни възли, които всички изпълняват горе-долу една и съща програма. По-голямата част от времето програмата включва процес, който събира данни от околната среда и ги изпраща към възел на мивка и друг процес, който изпълнява всякакви команди, идващи от мрежовия координатор (шлюзов възел).
Често е необходимо да се разработи разпределен алгоритъм, който работи в цялата мрежа, за да позволи обмен на съобщения между възлите по мулти-хоп начин. Реалното изпълнение на такъв алгоритъм е тромаво, особено поради големия брой възли, които трябва да бъдат препрограмирани често във фазата на разработка.
Поради това в ранните етапи на развитие е за предпочитане да се използва мрежов симулатор. Contiki използва два симулатора за тази цел: Mspsim на ниво сензорни възли и Cooja за симулация на цяла мрежа от възли.
MSP е емулатор за серията MSP430 с ултра ниска мощност на процесори от Texas Instruments. Те се използват на сензорни възли на Tmote Sky. Симулаторът поддържа формат за въвеждане на данни IntelHEX и ELF и има помощни програми за наблюдение на стека, настройка на точка на прекъсване и профилиране.

COOJA е мрежов симулатор, написан на Java и е предназначен да симулира безжични сензорни мрежи, работещи с Contiki. COOJA може да симулира хетерогенни сензорни мрежи, при които всеки възел може да се различава от останалите, не само от гледна точка на софтуера, който работи, но и от гледна точка на хардуера. Симулиран възел COOJA има три основни свойства: памет за данни, тип възел и хардуерна периферия. Симулаторът може да изпълнява код по два начина: или собствен код, компилиран за хост процесора, или с помощта на емулатора MSPsim. COOJA може също така да симулира възли, различни от Contiki, внедрени в Java, с предимството, че времето за симулация е значително подобрено в сравнение с предишните варианти.

В тази лаборатория ще се научите да използвате и двата симулатора.
MSP
MSPsim може да се стартира много лесно при компилиране на код. Следващата команда трябва да стартира екземпляр на MSPsim и да симулира вашия пример за здрав свят:
В един от отворените прозорци (USART1 Port Output) ще видите редовете текст, отпечатани от последователността за зареждане на Contiki. MSPsim също включва светодиоди, които могат да бъдат осветени и бутони, които могат да се натискат, точно както в случая на истинска платформа. Опитайте да натиснете бутона за нулиране и вижте какво се случва.
Упражнения
Упражнение 1: Разширете програмата hello-world.c, за да накарате светодиодите да мигат (въведете таймер) и да отпечатате текст върху серийния интерфейс, когато натиснете бутона "Потребител" (въведете събитие).
СЪВЕТ: Вижте "core/dev/leds.h" и "core/dev/button-sensor.h" и не забравяйте да направите printf
Много полезно приложение е черупката. Това ви позволява да имате минимална обвивка по серийната връзка или дори по радиовръзката.
Упражнение 2: Стартирайте приложението на черупката за Tmote Sky в MSPsim:
Командата за помощ изброява всички налични команди. Опитайте ги и играйте с тях.
Упражнение 3: Използвайки съществуващ код, внедрете нова команда на черупката, която командва светодиода да се включва или изключва.
СЪВЕТ: Използвайте „apps/serial-shell/serial-shell.h“ и „apps/shell/shell.h“
Съставител
COOJA
За да използвате COOJA, трябва да изпълните следните стъпки:
3. Създайте нова симулация: Файл → Нова симулация. Въведете име за Име на симулация и натиснете Създайте
4. Създайте нов тип възел: Mote Types → Create mote type → Sky Mote Type. Въведи а Описание ("Gogu" или "gigi" звучи модерно по това време) тогава Преглед докато стигнете до примери/рими/пример-abc.c. Натиснете Компилирайте и когато всичко свърши, натиснете Създайте.
5. Добавете възли в симулацията: Motes → Добавяне на motes от тип → [„gogu“ sau „gigi“]. добавете 5 възли след това дават Създаване и добавяне.
5-те възли се създават на произволни координати в равнината. Можете също да изберете друго оформление на възел, като използвате Случайна позиция, линейна, елипса, или Ръчно позициониране.
6. Уверете се, че имате Приставки → Слушател на журнали и приставки → Визуализатор на симулация активиран.
7. Натиснете старт в контролния панел, за да стартирате симулацията.
Първото нещо, което трябва да направите, е да проверите дали възлите комуникират помежду си. COOJA използва модел по подразбиране за разпространение на радиосигнали, наречен Unit Disk Graph Model (UDGM). Изберете от менюто за преглед на UDGM и ще можете да го видите в симулацията.
Зеленият кръг представлява радиус на предаване на централния възел, т.е. възелът може да комуникира с всеки друг възел вътре в съответния кръг.
Сивият кръг представлява зоната на смущения. Ако възел е в тази област, той не може да получава пакети от други възли, ако избраният възел изпраща данни по това време. С други думи, тази зона е зона на смущения, в която приемо-предавателят на възела прави невъзможна правилната комуникация на други възли. Ако искате да накарате два възела да комуникират, имате две възможности: или плъзнете единия възел, докато достигне радиуса на комуникация на другия възел, или увеличете радиуса на комуникация от менюто на прозореца или от менюто, което се появява, като щракнете с десния бутон върху този възел.
Упражнения
Упражнение 1: Това упражнение ще ви покаже как да използвате структури за излъчване на рима, за да изпратите съобщение до базовата станция. Отворете примера, който сте компилирали по-горе (rime/example-abc.c) и намерете реда с:
Заменете Hello с вашето съобщение и променете втория параметър на новата му дължина. Опитайте се да не използвате думи от четири букви. Компилирайте кода и симулирайте в COOJA. Забележете какво се случва.