Tải bản đầy đủ (.pdf) (8 trang)

Nghiên cứu, thử nghiệm thâm nhập môi trường và định tuyến cho mạng cảm ứng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (307.58 KB, 8 trang )

Nghiên cứu, thử nghiệm thâm nhập
môi trường và định tuyến cho mạng
cảm nhận không dây WSN
Vương Đạo Vy, Nguyễn Thế Sơn
Trường Đại học Công nghệ - ĐHQGHN
Ngày nay, WSN đang được phát triển và áp dụng trong nhiều lĩnh vực như
thu thập dữ liệu môi trường, mạng an ninh, theo dõi đối tượng… trong đó
thu thập dữ liệu môi trường chiếm phần lớn các ứng dụng. Thu thập dữ liệu
môi trường thường sử dụng cấu h
ình mạng dạng cây (tree) như thể hiện ở
hình 1.
Có hai v
ấn đề cần giải quyết khi xây dựng
WSN, đó là: truy cập mạng (media
access) và tìm đường đi (routing). Bài báo
này mô t
ả việc xây dựng mạng WSN, thử
nghiệm phương pháp truy cập mạng và
cách tìm
đường đi cho dữ liệu trên cơ sở
lập trình nhúng cho các nút mạng và tiến
hành một số phép đo. Cụ thể là dùng
phương pháp thăm dò (polling) và phương
pháp tìm đường dựa trên bảng định tuyến
dạng cây theo cấu hình mạng trong thử
nghiệm đo nhiệt độ và áp suất..
Truy cập môi trường truyền.
Hệ thống mạng không dây có chung một
môi trường truyền dẫn, đó l
à vùng không
gian bao ph


ủ các nút mạng. Tại một thời điểm chỉ được phép có 1 nút mạng
truy cập môi trường truyền. Nút mạng Master chịu trách nhiệm điều khiển
việc truy cập môi trường truyền này. Định kỳ, sau một khoảng thời gian nào
đó (trong thử nghiệm này chọn 2 giây) Master gửi lệnh thăm dò các nút (bắt
đầu từ nút 2 cho đến nút 11) sau đó quay lại từ đầu (về nút 2) v
à cứ tiếp tục
như vậy. Khoảng thời gian giữa các lần thăm d
ò (2 giây) là thời gian Master
chờ nhận dữ liệu từ nút được thăm dò.
Tìm đường
Hình 1: Cấu hình mạng dùng dây
Tại một nút Slave bất kỳ, có thể nhận được hoặc lệnh truyền từ nút cha
(trường hợp chuyển tiếp lệnh thăm d
ò từ nút Master) hoặc dữ liệu truyền từ
nút con (trường hợp chuyển tiếp dữ liệu về Master). Thuật toán chuyển tiếp
gói tin như sau:
- Nếu nó nhận được lệnh truyền từ nút cha, nó sẽ kiểm tra địa chỉ đích
(EndPoint):
o N
ếu địa chỉ đích là địa chỉ của chính nó, nó sẽ gửi dữ liệu về cho nút cha.
o Nếu không, nó sẽ tìm trong bảng địa chỉ:
· Nếu tồn tại một đường đi từ nó tới nút đích, nó sẽ chuyển tiếp gói tin tới
chặng tiếp theo. Chặng tiếp theo chính là nút con của nó có khả năng tới
đích.
Nếu không tồn tại đường đi thì không làm gì cả.
- Nếu nó nhận được dữ liệu truyền từ nút con, nó sẽ chuyển tiếp dữ liệu
truyền cho nút cha.
Như vậy, đối
với mỗi nút Slave, khả năng tìm đường đòi hỏi phải giải quyết
những việc sau:

- Tìm nút con của nó có khả năng tới đích để truyền lệnh thăm dò từ nút
Master
- Tìm nút cha c
ủa nó để chuyển tiếp dữ liệu về Master.
Vì mạng có dạng cây nên ta phải tìm cách biểu diễn cây một cách thích hợp
sao cho dễ tìm đường nhất.
Biểu diễn cây trong bộ nhớ.
Biểu diễn cây bằng danh sách các con của mỗi đỉnh.
Với mỗi đỉnh của cây, cần lập một danh sách các đỉnh con của nó theo thứ tự
từ trái sang phải. Ở đây sử dụng một mảng để lưu giữ các đỉnh của cây. Mỗi
thành phần của mảng là một tế bào chứa thông tin gắn với mỗi đỉnh và danh
sách các đỉnh con của nó. Danh sách các đỉnh con của một đỉnh có thể biểu
diễn bởi mảng hoặc bởi danh sách liên kết. Tuy nhiên, vì số con của mỗi
đỉnh có thể thay đổi nhiều, cần sử dụng danh sách liên kết. Như vậy mỗi tế
bào mô tả cây là một bản ghi gồm 2 trường: trường id là địa chỉ của nút
mạng, trường next là con trỏ trỏ tới danh sách các con của đỉnh đó. Giả sử
các đỉnh của cây được đánh số từ 1 đến N. Với cách cài đặt như vậy, có thể
khai báo cấu trúc dữ liệu biểu diễn cây như sau:
#define N 11
struct node
{
int id;
node *next;
}
node tree[N];
V
ới cách cài đặt này, cấu trúc dữ liệu biểu diễn cây trong hình 1 được minh
hoạ như sau:
Trong cách cài đặt n
ày, việc tìm cha của mỗi đỉnh lại không đơn giản. Chẳng

hạn, để tìm cha của đỉnh k, cần phải duyệt các danh sách các con của mỗi
đỉnh. Nếu phát hiện ra trong danh sách các con của đỉnh m có chứa k th
ì
Parent(k) = m. Hàm Pa
rent(k) được xác định như sau:
int Parent(int k, tree
T)
{
node *p;
int i;
i = 0;
while(i<N)
{
p = T[i].next;
while(p)
{
if(pid = = k) return i
else p = pnext;
}
i++;
}
return -1; //không tìm th
ấy cha
}
Khi nút hi
ện thời muốn chuyển tiếp lệnh thăm dò cho một nút đích nào đó,
cần tìm nút kế tiếp (nexthop) để có thể tới đích. Muốn vậy, từ nút đích trong
bảng định tuyến, cần tìm nút cha của nó, sau đó cứ tìm ngược lên trên cho
t
ới hiện thời. Nút tìm được ngay trước nút hiện thời chính là nút kế tiếp cần

chuyển tiếp lệnh thăm dò. Hàm FindNextHop(int curNode,int dest) tìm nút
k
ế tiếp để truyền lệnh.
Hình 2. Cấu trúc dữ liệu biểu diễn cây trong bộ nhớ
//Tim nut tiep theo cua nut hien thoi de truyen lenh tham do
//curNode: nut hien thoi
//dest: nut dich
char FindNextHop(int curNode,int dest)
{
unsigned char xdata i,j,nexthop;
i = 0;
nexthop = j = dest;
while(j != curNode && i<=N) {
nexthop = j;
j = Parent(j);
i++;
}
return nexthop;
}
2.2 Định dạng dữ liệu truyền

×