Xem mẫu
- 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 Hình 1: Cấu hình mạng dùng dây
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
- 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 Parent(k) được xác định như sau:
- int Parent(int k, tree
T)
{
node *p;
int i;
i = 0;
Hình 2. Cấu trúc dữ liệu biểu diễn cây trong bộ nhớ
while(i
- //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
- Để viết được chính xác các lệnh chương trình, phải căn cứ cấu trúc các
khung thăm dò và khung dữ liệu trao đổi giữa Master và các slaver
(Endpoint). Trong cấu hình mạng WSN đã được xây dựng, các khung truyền
này được quy định như sau.
Khi truyền lệnh từ Master tới nút đích (Endpoint), định dạng lệnh truyền qua
các chặng trung gian cho Endpoint như sau:
Khi truyền dữ liệu về Master, định dạng dữ liệu của Endpoint truyền về như
sau:
Trong đó: Len: độ dài gói tin, 1
byte; EndpointAddress: là địa chỉ
nút đích, 1 byte; NextHop: Địa
chỉ của nút kế tiếp có thể tới nút
đích, 1 byte; ParentAddress: địa
chỉ của nút cha của nút hiện thời,
1 byte; Command: lệnh gửi cho
Hình 3: Sơ đồ giao tiếp giữa MS 5535 -
nút đích phải thi hành, 1 byte;
CC1010
ADC0, ADC1, ADC2: các giá trị
nhiệt độ đọc từ 3 kênh khác nhau, 2 byte; CRC: Mã dư vòng, 2 byte.
Các thử nghiệm và nhận xét
Hệ thống thực nghiệm gồm ba khối, một khối đặt tại máy tính trung tâm
(Master) có địa chỉ là 1, hai khối đặt tại hiện trường (Slave) có địa chỉ lần
lượt là 3 và 8. Các nút mạng đều phải chứa bảng định tuyến dạng cây theo
như hình 1. Định kỳ 2 giây 1 lần, Master thăm dò các nút mạng để lấy dữ
liệu. Master nhận dữ liệu, truyền có dây qua RS-232 về máy tính. Máy tính
nhận dữ liệu, xử lý, lưu trữ và hiển thị thông báo lên màn hình.
Các nút mạng được sử dụng ở đây là vi điều khiển thế hệ mới tích hợp cả
truyền nhận RF trên chip - CC1010 của hãng Chipcon, Norway. Trong hệ
thống trên, CC1010 vừa được dùng làm khối Master, vừa dùng làm khối
Slave. CC1010 có nhân tương thích 8051, bộ nhớ chương trình Flash 32 kB.
- Có thể lập trình để khối truyền nhận RF làm việc từ 300 đến 1000MHz và
tiêu thụ dòng điện nhỏ khi truyền dữ liệu không dây, tốc độ truyền nhận dữ
liệu có thể đạt 76,8 kbps, 3 kênh vào tín hiệu tương tự, một bộ biến đổi ADC
10 bit, 4 timer/ Counter, 2 UART,
26 cổng vào/ra mục đích chung
v.v.[1].
a/ Thử nghiệm đo áp suất:
Tại nút Slave số 8 có ghép nối với
cảm biến áp suất MS5535. Sơ đồ
ghép nối như sau:
Cách đấu nối, chương trình nhúng
và các thử nghiệm với đầu đo áp Hình 4. Giao diện thu thập áp suất, nhiệt
suất cho thấy hệ thống làm việc độ của các nút mạng
tốt, tin cậy, kết quả đo biểu diễn trên hình 4, [4], [5].
b/ Thử nghiệm đo nhiệt độ:
Tên các module CC1010EM có tích hợp sẵn cảm biến đo nhiệt độ loại
LM61, lối ra cảm biến tác động vào ADC1 của CC1010. Khi nhận được lệnh
thăm dò, Slave sẽ đọc giá trị từ lối vào ADC1 và truyền kết quả về Master.
Master nhận được dữ liệu truyền từ Slave, sẽ truyền tiếp về máy tính qua
đường RS232. Chương trình trên máy tính sẽ phân tích dữ liệu và chỉ thị các
kết quả lên mà hình dưới 2 dạng hoặc thông báo dạng text hoặc bằng đồ thị
như chỉ ra trên các hình 4 và 5, [4]
Các phần mềm nhúng được cài đặt trong các thử nghiệm trên cho mỗi Slave
xấp xỉ 6KB (6415 bytes) và trong Master là 7KB (7313 bytes).
- Nhận xét: Hệ thống WSN
gồm các nút mạng và phần
mềm nhúng đã làm việc ổn
định đúng ý đồ thiết kế.
Thuật toán tìm đường và
phương thức thâm nhập môi
trường trao đổi dữ liệu mô tả
ở trên đã được thử nghiệm,
hiệu quả thể hiện ở chỗ
Master có thể nhận dữ liệu Hình 5. Giao diện dạng text trên PC
từ một Slaver bất kỳ, tin cậy,
chính xác .
Tốc độ thu thập dữ liệu kiểu thăm dò mỗi lần từ Master là chậm do Master
phải chờ 2 giây để lấy dữ liệu sau khi gửi lệnh thăm dò nhưng là chấp nhận
được đối với các ứng dụng thu thập dữ liệu môi trường. Khi nhu cầu trao đổi
dữ liệu cao hơn, có thể cải tiến thăm dò một lần cho nhiều nút mạng bằng
một cơ chế chuyển tự động giữa các nút Slaver. Hệ thống có thể phát triển
để các Slaver có thể nhận dữ liệu từ Master, qua đó các Slaver có thể điều
khiển các cơ cấu chấp hành theo lệnh từ Master.
nguon tai.lieu . vn