Contiki - симулятори мережі WSN Wiki
Інструменти користувача
Інструменти сайту
Зміст
Основними «бенефіціарами» операційної системи Contiki є вузли датчиків у бездротовій сенсорній мережі (WSN). Характеристики цих вузлів (низька вартість, низькі можливості обробки та пам'яті та обмежені запаси енергії) унеможливлюють роботу просунутої операційної системи. Через це використання "низькорівневої" системи, такої як Contiki, є більш ніж адекватним.
Архітектура бездротової сенсорної мережі наведена на малюнку нижче:

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

КООЖА є симулятором мережі, написаним на Java, і призначений для імітації бездротових сенсорних мереж, що працюють під управлінням Contiki. COOJA може імітувати різнорідні сенсорні мережі, де кожен вузол може відрізнятися від решти не тільки з точки зору програмного забезпечення, яке він запускає, але і з апаратної точки зору. Імітований вузол COOJA має три основні властивості: пам’ять даних, тип вузла та апаратну периферію. Симулятор може виконувати код двома способами: або власний код, скомпільований для хост-процесора, або за допомогою емулятора MSPsim. COOJA також може моделювати вузли, не пов'язані з Contiki, реалізовані на Java, з тією перевагою, що час моделювання значно покращений порівняно з попередніми варіантами.

У цій лабораторії ви навчитесь користуватися обома симуляторами.
MSP
MSPsim можна дуже легко запустити під час компіляції коду. Наступна команда повинна запустити екземпляр MSPsim і змоделювати ваш приклад: hello-world:
В одному з відкритих вікон (вихід порт USART1) ви побачите рядки тексту, надруковані послідовністю завантаження 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, потрібно виконати такі дії:
3. Створіть нову імітацію: Файл → Нове моделювання. Введіть ім'я для Назва симуляції і натисніть Створити
4. Створіть новий тип вузла: Типи руху → Створити тип руху — Тип руху Sky. Введіть a Опис ("Gogu" або "gigi" в цей час звучить модно) Перегляньте поки не дійдеш до examples/рими/example-abc.c. натисніть Скласти а коли все закінчиться, натисніть Створити.
5. Додайте вузли в моделювання: Motes → Додати мотипи типу → [[“gogu“ sau “gigi“]. додати 5 вузли потім дають Створити та додати.
5 вузлів створюються за випадковими координатами в площині. Ви також можете вибрати інший макет вузла за допомогою Випадкове положення, лінійне, еліпс, або Позиціонування вручну.
6. Переконайтеся, що у вас є Плагіни → Слухач журналу та плагіни → Візуалізатор моделювання активовано.
7. Натисніть почати на панелі управління, щоб розпочати моделювання.
Перше, що вам потрібно зробити, це перевірити, чи взаємодіють вузли між собою. COOJA використовує стандартну модель для розповсюдження радіосигналів, яка називається Unit Disk Graph Model (UDGM). Виберіть з меню переглядача UDGM, і ви зможете побачити це в моделюванні.
Зелене коло представляє радіус передачі центрального вузла, тобто вузол може взаємодіяти з будь-яким іншим вузлом всередині відповідного кола.
Сіре коло представляє зону перешкод. Якщо вузол знаходиться в цій області, він не може отримувати пакети від інших вузлів, якщо вибраний вузол надсилає дані в цей час. Іншими словами, відповідна область є областю перешкод, в якій прийомопередавач вузлів робить неможливим правильний зв'язок інших вузлів. Якщо ви хочете зв’язати два вузли, у вас є два варіанти: або перетягніть один вузол, поки він не досягне радіуса зв’язку іншого вузла, або збільште радіус зв’язку з меню вікна або з меню, яке з’явиться, клацнувши правою кнопкою миші на цьому вузлі.
Вправи
Вправа 1: Ця вправа покаже вам, як використовувати структуру трансляції рими для надсилання повідомлення на базову станцію. Відкрийте приклад, який ви скомпілювали вище (rime/example-abc.c), і знайдіть рядок із:
Замініть Hello своїм повідомленням і змініть другий параметр на нову довжину. Намагайся не вживати чотирилітерних слів. Складіть код і змоделюйте на COOJA. Зверніть увагу на те, що відбувається.