Cooja sẽ hiện bảng Create new simulation . Nhấp chuột vào nút Create
Cooja sẽ đưa ra một cửa sổ mô phỏng
Cửa sổ Network , ở phía trên bên trái của màn hình, hiển thị tất cả các điểm
trong mạng mô phỏng - hiện tại nó đang trống, vì chúng tơi khơng có mote trong mơ phỏng.
Cửa sổ Timeline , ở dưới cùng của màn hình, hiển thị tất cả các sự kiện giao
tiếp trong mô phỏng theo thời gian - rất tiện để hiểu những gì diễn ra trong mạng.
Cửa sổ Mote output , ở bên phải của màn hình, hiển thị tất cả các cổng giao
tiếp in ra từ tất cả các mote.
Cửa sổ Notes ở trên cùng bên phải là nơi chúng ta có thể đặt ghi chú cho mơ
phỏng của mình.
Cửa sổ Simulation control là nơi chúng ta có thể dừng, bắt đầu và chạy lại mô
phỏng.
Thêm mote vào mơ phỏng
Hình 29: Thêm mote
Cooja hiện hộp thoại Create Mote Type.
Hình 30: Hộp thoại Mote Type
Chọn tên cho loại mote
Chọn ứng dụng Contiki mà loại mote sẽ chạy Để tìm ứng dụng Contiki. / otp / contiki-3.0 / example / ... Chỉ định tệp nguồn ứng dụng C → Mở
Hình 31: Ứng dụng Contiki
Hình 32 : Thêm mote
4.1.5 Mơ phỏng các giao thức mạng.
• Cooja có 2 ngăn xếp: uIP và Rime.
• Các ngăn xếp giao thức có thể được kết nối với nhau: dữ liệu uIP có thể được truyền qua Rime và ngược lại
• Cooja có thể được sử dụng để mô phỏng các giao thức mạng: RPL, LIBP… a) Giao thức RPL:
Nhấp vào nút “Start” để bắt đầu mô phỏng.
Bây giờ Cooja sẽ hỏi nếu tôi muốn thêm mote từ loại mote mới được tạo vào mô phỏng. Đầu tiên, tôi muốn mơ phỏng 10 mote với vị trí ngẫu nhiên và sau đó nhấp vào nút Thêm mote để thêm các mote vào mô phỏng. Trong mô phỏng này, tôi đã sử dụng một mote Border-Router làm mote chìm (mote 1) và 9 mote websense như mote người gửi (mote 2,3,4,5,6,7,8,9,10).
Hình 33: Mơ phỏng 10 mote
Gõ theo cú pháp sau :
“user@instant-contiki:~$ cd contiki/examples/ipv6/rpl-border-router/
user@instant-contiki:~/contiki/examples/ipv6/rpl-border-router$ make connect-router-cooja/”
Đợi cho khi thấy cửa sổ hiện ra :
Hình 32 hiển thị cho bạn địa chỉ IP của máy chủ, bạn sao chép địa chỉ và dán vào trình duyệt web (ví dụ: trong mô phỏng của tôi, tôi đã nhận được aaaa :: 212: 7401: 1: 101 Tôi phải gõ vào http: // [aaaa: : 212: 7401: 1: 101]). Trong hình 31 có thể thấy miền của mote 1 và vịng trịn màu xanh lá cây bên trong là những mote lân cận của mote 1 là mote 2, mote 3, mote 5, mote 7, mote 8, mote 10.
Dựa trên giao thức Ipv6, các mote có thể xác định và giao tiếp với nhau một cách dễ dàng.
Hình 35. Giao thức định tuyến Contiki cho mạng năng lượng thấp và tổn thất (RPL). Nếu thay đổi IP của mote lân cận thay vì IP máy chủ, bạn sẽ thấy dữ liệu truyền của mote đó.
Hình 36: Mote dữ liệu
Mơ phỏng 50 mote :
Hình 37: Mơ phỏng với 50 mote
Hình 38: RPL - Theo dõi năng lượng 50 mote sau 3 phút
Theo dõi năng lượng sau 3 phút.
• Đó là Radio TX với giá trị: 0,59% • Và Radio RX với giá trị: 2,62%
• Nhưng nó có Radio cao nhất lên tới: 93,56% b) Giao thức LIBP:
Giao thức giao thoa tối thiểu - Least Interference Beaconing Protocol (LIBP) [24], là một dạng triển khai của thuật toán dẫn đường - Interference Beaconing Algorithm (LIBA). Giao thức định tuyến này như giao thức cây sử dụng quy trình báo hiệu được khởi tạo bởi nút nguồn (trạm gốc).
LIBP mở rộng quy trình báo hiệu được sử dụng rộng rãi bởi các giao thức thu thập với cân bằng tải để cải thiện hiệu quả năng lượng của mạng cảm biến toàn cầu - Ubiquitous Sensor Network (USN).
Q trình chứa ít nhiễu nhất cho phép lựa chọn nút chủ có số lượng con ít nhất. Nút chủ đầu tiên được xuất phát từ đó, các nút cảm biến nhận được tín hiệu từ một tập hợp lân cận và chọn nút có số lượng con ít nhất làm nút chủ.
RPL và CTP đã được triển khai trong ContikiOS, tuy nhiên LIBP vẫn chưa được triển khai, điều này dẫn đến việc LIBP được triển khai trong Contiki. Theo sau thành công của điều chỉnh CTP sao cho phù hợp với mơ hình và ý tưởng của LIBP [2], phương pháp này được sử dụng để duy trì các giao diện tương tự như giao diện trong CTP đã thực hiện với môi trường mô phỏng (Cooja). Ở mức rất cao, mô-đun liên kết ước tính cho CTP được tìm thấy trong thư viện mạng Contiki đã được sửa đổi để phù hợp với các ý tưởng của LIBP. Điều này có nghĩa là liên kết dự kiến truyền (ETX) đã được thay đổi để thích ứng với sự giao thoa được biểu thị bằng số lượng nút con hỗ trợ. Các tính năng khơng cần thiết cho LIBP đã bị xóa (ví dụ mã thuật tốn nhỏ giọt). Vì LIBP trong triển khai Contiki của nó được tách ra từ triển khai CTP trong Contiki nên nó được cùng thừa hưởng ngăn xếp truyền thông cơ bản Rime.
Mỗi cảm biến phân phối có khả năng thu thập và truyền dữ liệu đến bộ chứa và đến người dùng cuối thông qua giao tiếp đa chặng. Bộ chứa giao tiếp với người dùng qua internet, vệ tinh hoặc bất kỳ loại mạng không dây nào (như wifi, hệ thống di động ...) có thể kết nối trực tiếp với người dùng.
Trong mạng cảm biến khơng dây, các nút cảm biến có chức năng kép được khởi tạo cả dữ liệu và dữ liệu định tuyến do đó truyền thơng được triển khai bởi 2 lý do:
Chức năng nguồn: nút nguồn có chức năng liên lạc để truyền dữ liệu của chúng đến trạm gốc.
Chức năng định tuyến: cảm biến cũng tham gia vào các nút chuyển tiếp các gói tin dữ liệu, nhận được từ các nút khác đến vị trí tiếp theo trong giao tiếp đa nhiệm đến bộ chứa.
Hình 39: Giao tiếp đa nhiệm trong trường cảm biến.
Hình 40: 10 mote được mơ phỏng với LIBP-RIME
Bộ chứa mote với ID1 - Sau một thời gian, ID1 được truyền rộng rãi đến mạng mà nó được chứa bằng cách gửi một tin nhắn “I am sink”.
Hình 41: Mơ phỏng 50 mote LIBP
LIBP – Theo dõi năng lượng 50 mote sau 3 phút.
• Sky 5 sử dụng nhiều năng lượng nhất bằng cách sử dụng hầu hết thời gian. • Radio của nó ở mức 6.07%
• Radio TX cũng cao nhất với giá trị 2,98%. • Nó có Radio RX thứ hai là 0,14%.
Hình 42: LIBP – Theo dõi năng lượng
• Sky 3, 14, 48, 50 .... sử dụng ít năng lượng nhất • Radio của nó vào khoảng 3,14%.
• Radio TX ở mức 1,39%. • Radio RX là 0,1%.
Trong giao thức cây (CTP), những nút nằm dưới cùng (root) không phải nhận dữ liệu từ nút khác rồi sau đó truyền đi như những nút ở vị trí trên mà nó chỉ cần thu thập dữ liệu rồi từ đó truyền đi.
Theo dõi năng lượng:
• Sử dụng chương trình Enerest cùng với sự thay đổi định kỳ của bộ đếm thời gian để có được cơng suất trung bình trong một khoảng thời gian ngắn hoặc cho các phương thức mạng đặc thù.
Hình 43: So sánh mức trung bình Radio của RPL và LIBP
4.2 Giao thức mô phỏng và định tuyến TINY OS
4.2.1 Định nghĩa TinyOS
TinyOS là một hệ điều hành nguồn mở được sử dụng cho các thiết bị không dây. Hệ điều hành (HĐH) này có kích thước nhỏ và tiêu thụ bộ nhớ thấp. Các chương trình ứng dụng chạy trên TinyOS cũng có kích thước nhỏ so với hệ điều hành thơng thường. Một tính năng khác của TinyOS là nó được tạo ra cho một số thiết bị cụ thể. HĐH bình thường là đa luồng và tiêu thụ điện áp cao trên máy tính. Nhưng tinyOS tiêu thụ pin thấp. Hệ điều hành bình thường mà chúng ta sử dụng trong máy tính của mình hỗ trợ tất cả các thiết bị có sẵn và có mã nguồn lớn. Nhưng TinyOS có mã nguồn nhỏ và nó được viết bằng ngơn ngữ nesC.
• NesC là ngơn ngữ máy tính có nguồn gốc từ ngơn ngữ C. NesC có một trình biên dịch riêng.
• Trình biên dịch cho các ứng dụng chạy trên UCB mote, được xây dựng trên đỉnh avg-gcc, sử dụng phần mở rộng tên tệp là “.nc”
• Ngơn ngữ tĩnh.
• Có ảnh hưởng bởi Java.
• Bao gồm cơng việc lập lịch biểu FIFO. • Được thiết kế để thúc đẩy tái sử dụng mã.
Hình 44: Cách biên dịch tập tin Tiny OS
TinyOS không hỗ trợ các ứng dụng đa luồng vì nó có khả năng tính tốn thấp. Các thành phần chính của TinyOS là các tác vụ, sự kiện, lệnh và dữ liệu. Dữ liệu được nhận từ mơi trường bên ngồi. Ví dụ: trong thiết bị phát hiện khói, khi phát hiện khói thì cảm biến của thiết bị sẽ tạo ra sự kiện và thông tin về sự kiện đó là dữ liệu. Sau đó, lệnh được thực hiện để tách nước hoặc bất kỳ hóa chất nào ngăn khói hoặc lửa.
4.2.2 Ứng dụng hệ điều hành Tiny.
Nhiều ứng dụng của TinyOS có trong cuộc sống hàng ngày của chúng ta. Một số ví dụ về các thiết bị sử dụng tinyOS dưới đây:
• Được sử dụng trong các hoạt động quân sự
• Kiểm sốt nhiệt độ như AC trong phịng hoặc trong xe hơi • Hệ thống bảo mật trong ngân hàng
• Giám sát tài ngun • Kiểm sốt mơi trường • Đo lường cơng nghiệp • Hỗ trợ các thiết bị Bluetooth • Được sử dụng trong lị vi sóng
• Được sử dụng trong nơng nghiệp để phát hiện cây trồng bị lỗi
4.2.3 Ưu điểm và nhược điểm của TinyOS.
TinyOS là một hệ điều hành nguồn mở được sản xuất đặc biệt cho các thiết bị mạng không dây. Các thiết bị bao gồm Bluetooth, thiết bị cảm biến môi trường và hệ thống bảo mật ngân hàng, v.v. TinyOS được viết bằng ngôn ngữ NesC là phương ngữ của ngôn ngữ C.
Ưu điểm :
- Kích thước nhỏ: Mã nguồn của TinyOS có kích thước nhỏ. Do các thiết bị mã nhỏ hơn chạy nhanh và hệ điều hành khơng có xu hướng q tải thiết bị. Mã được tối ưu hóa để chạy cho bất kỳ thiết bị cụ thể nảo.
- Hệ điều hành hướng sự kiện: TinyOS là hệ điều hành hướng sự kiện, có nghĩa là nó phụ thuộc vào các sự kiện mà nó nhận được từ mơi trường xung quanh. Ví dụ, kiểm sốt nhiệt độ của tịa nhà. Một sự kiện được kích hoạt khi nhiệt độ vượt quá hoặc dưới một mức độ nhất định và hệ điều hành sẽ điều khiển các thiết bị điều hịa khơng khí để tạo ra nhiệt độ ở mức bình thường.
- Bộ nhớ thấp cần thiết: TinyOS cần bộ nhớ thấp để chạy dù không cần mua các thiết bị bộ nhớ cao hơn để chạy hệ điều hành này. TinyOS là một loại HĐH nhúng được triển khai trên mọi thiết bị.
- Tính mơ đun: TinyOS có các mơ-đun khác nhau trong đó. Mỗi mơ-đun thực hiện chức năng riêng. Các mô-đun bao gồm các nhiệm vụ, lệnh, sự kiện, vi điều khiển,
phần cứng và phần mềm. Mỗi mô-đun này giao tiếp với nhau để làm cho các thiết bị khơng dây hoạt động chính xác hơn.
- Khả năng tái sử dụng : TinyOS có thể được sử dụng lại trên các thiết bị tương tự. Điều đó có nghĩa là mã khơng bị thay đổi nếu các thiết bị có cùng bản chất.
- Sử dụng điện áp thấp: Do bộ nhớ thấp và sử dụng khơng gian, tinyOS sử dụng pin yếu. TinyOS có thể chạy trên các thiết bị nhỏ hơn cũng có điện áp thấp.
Nhược điểm:
- Điều chỉnh cần thiết: Cần một số điều chỉnh để thực hiện giao tiếp giữa phần cứng và phần mềm. Điều này là do hạn chế điện áp thấp.
- Bản chất khơng đồng bộ: Vì các thiết bị cảm biến mạng phải cập nhật dữ liệu từ xung quanh trong mỗi giây, do đó các lập trình viên phải ghi nhớ điều này để làm cho mã hoạt động trong mọi trường hợp.
Đôi khi tồn tại một số vấn đề giao tiếp giữa các tác vụ trong tinyOS.
4.2.4 Chức năng của hệ điều hành Tiny OS
TinyOS được viết bằng nesC, một phương ngữ của C. Có một số cách để cài đặt TinyOS trên máy tính: hệ điều hành Linux, window, máy ảo,vv.
Đặc trưng của hệ điều hành Tiny: • Viết bằng nesC
• Kiến trúc hướng sự kiện
• Khơng phân biệt khơng gian lõi/ người dùng • Ngăn xếp dùng chung
• Khơng quản lý q trình hoặc bộ nhớ • Khơng có bộ nhớ ảo
• Nhiều lớp trừu tượng
• Các thành phần liên kết tĩnh với nhau
• Trừu tượng hóa phần cứng hiện thời Utunbu ảo • Truy cập vào các cảm biến
• Truy cập vào bộ truyền động
• Bộ lập lịch (tác vụ, ngắt phần cứng) • Giao diện vơ tuyến
• Tin nhắn hoạt động (kết nối mạng)
• Lưu trữ (sử dụng bộ nhớ flash trên máy vi tính)
Chúng ta nên cài đặt một số điều kiện tiên quyết trước khi cài đặt TinyOS bằng cách mở Terminal và thêm dịng trong danh sách nguồn.
Hình 45: Terminal Ubuntu $ sudo -s $ sudo -s
$ cd /etc/apt/sources.list.d
$ echo "deb http://tinyprod.net/repos/debian wheezy main" >> tinyprod-debian.list
$ echo "deb http://tinyprod.net/repos/debian squeezy main" >> tinyprod-debian.list
$ echo "deb http://tinyprod.net/repos/debian msp430-46 main" >> tinyprod-debian.list
Cài đặt gói mới
$ sudo apt-get update
$ sudo apt-get install nesc tinyos-tools msp430-46 avr-tinyos
Hình 46: Cài đặt cơng cụ trong TinyOS
Lấy mã từ nguồn phát hành của TinyOS.
Wget http://github.com/tinyos/tinyos-release/archive/tinyos-2_1_2.tar.gz Tar xf tinyos-2_1_2.tar.gz
Chúng sẽ giải nén Tinyos .tar.gz trong thư mục có tên tinyos-release-tinyos-2_1_2 Chúng ta sẽ cần thêm một số biến vào thư mục. Tạo một tập tin trong thư mục giải nén. Thay thế <local-tinyos-path> (/home/tinyos/tinyos-main .in my case) với đường dẫn nơi bạn chọn để đặt mã trong phần trước.
Gõ lệnh $ sudo gedit tinyos.env sau đó thêm các dịng lệnh sau:
# Here we setup the environment # variables needed by the tinyos # make system export TOSROOT="<local-tinyos-path>" export TOSDIR="$TOSROOT/tos" export CLASSPATH=$CLASSPATH:$TOSROOT/support/sdk/java export MAKERULES="$TOSROOT/support/make/Makerules" export PYTHONPATH=$PYTHONPATH:$TOSROOT/support/sdk/python echo "setting up TinyOS-2.1.2 Repository"
Sau đó đặt <local-tinyos-path> và thêm các dịng lệnh sau vào ~/.bashrc
Source <local-tinyos-path>/tinyos.env
Sau đó mở hộp thoại mới, để các thay đổi được áp dụng.
4.2.5 Mô phỏng TinyOS
Cấu trúc cơ bản của một chương trình trong TinyOS gồm ba phần:
nameAppC.nc // Tập tin này chịu trách nhiệm định nghĩa các mô-đun và kết
nối chúng lại với nhau.
nameC.nc // Chứa các chương trình thực thi của mơ-đun.
Tạo hồ sơ mới
Trong nesC, có 2 thành phần: cấu hình và mơ-đun.
Cấu hình được thực thi một tập hợp các thành phần và kết nối chúng lại với nhau.
Giao diện dây và gói từ một số mơ-đun nối với nhau (nối dây).
Mô-đun được thực thi mã, chức năng xác định của nó làm cho ứng dụng của người sử dụng hoạt động. Tất cả các chương trình có cấp cao nhất như một cấu hình.
TinyOS sử dụng:
o Cổng dịch / Proxy: - Bộ chuyển tiếp nối tiếp. - Cảm biến cấu hình Internet. o Làm cho mote nhận biết IP: - uIP.
- 6lowpan ...
để định tuyến kết nối giữa mạng khơng dây và internet.
TOSSIM là một trình giả lập sự kiện rời rạc cho các ứng dụng TinyOS. Nó hoạt động bằng cách thay thế các thành phần với việc thực hiện mô phỏng. TOSSIM là một thư viện. Bạn phải viết một chương trình cấu hình một mô phỏng và khởi chạy nó. TOSSIM hỗ trợ hai giao diện lập trình: Python và C ++. Python cho phép bạn tương tác với một mô phỏng đang chạy một cách linh hoạt, giống như một trình gỡ lỗi hiệu