Xem mẫu

  1. 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
  2. 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.
  3. 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:
  4. 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
  5. //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
  6. Để 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.
  7. 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).
  8. 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