.3 Giải thuật phần mềm nhúng trong CC1010 của nút Master

Một phần của tài liệu (LUẬN văn THẠC sĩ) thiết kế chế tạo, vận hành và đo thử nghiệm mạng cảm nhận không dây luận văn ths công nghệ thông tin 1 01 10 (Trang 79)

- Đƣa các chân SCLK và DIN của MS5535 về trạng thái 0 - Đọc các hệ số lƣu trong MS5535

Đọc 3 kênh ADC:

- Chọn kênh cần đọc

- Phát lệnh chuyển đổi ADC

- Chờ cho đến khi chuyển đổi ADC kết thúc

- Đọc giá trị ADC từ hai thanh ghi ADCDATH và ADCDATL

Đọc dữ liệu MS5535:

- Reset MS5535

- Gửi lệnh cho MS5535 để chọn tham số cần đọc: nhiệt độ hay áp suất. - Đọc dữ liệu trả lời từ MS5535

Chờ nhận lệnh từ máy tính:

Nếu có lệnh yêu cầu gửi dữ liệu về trung tâm, Slave sẽ đọc các tham số nhiệt độ áp suất rồi truyền về trung tâm.

Một thí nghiệm đơn giản nhƣ trình bày ở hình 5.2, những kết quả đo đƣợc cho trong bảng 3, đồ thị tƣơng ứng biểu diễn trên hình 5.4.

Bảng 3. Số liệu đo áp suất theo độ cao cột nƣớc

Độ cao (cm) (h=H1-H2) Áp suất (mbar) Lần 1 Lần 2 Lần 3 Lần 4 Lần 5 Trung bình 0 986 986 986 986 986 986 20 1012 1010 1010 1011 1011 1010.8 40 1031 1031 1031 1030 1030 1030.6 60 1054 1054 1052 1052 1052 1052.8

80 1069 1070 1070 1070 1070 1069.8 100 1088 1088 1088 1088 1088 1088 120 1111 1111 1111 1111 1111 1111 140 1127 1127 1127 1127 1127 1127 160 1149 1149 1149 1149 1149 1149 233 1214 1214 1214 1215 1215 1214.4 313 1290 1290 1290 1290 1290 1290

5.1.2 Khảo sát độ ổn định của phép đo áp suất khi thay đổi nhiệt độ

Đầu đo đƣợc đặt trong môi trƣờng nhiệt độ thay đổi từ 160C đến 420C và đo giá trị khí áp tại một vị trí, trong khoảng thời gian ngắn. Số liệu đo đƣợc phản ánh qua đồ thị tƣơng ứng cho trên hình 5.5.

Đồ thị quan hệ Độ cao-áp suất

0 50 100 150 200 250 300 350 0 200 400 600 800 1000 1200 1400 áp suất (mbar) đ c a o ( c m )

5.1.3 Kiểm tra làm việc dài ngày và mức tiêu thụ điện của hệ thống

Trong CC1010, CPU, biến đổi ADC, truyền nhận RF, v.v…không làm việc đồng thời. Chu kỳ nghỉ và chu kỳ hoạt động có tần số nhịp khác nhau. Quản trị chặt chẽ quá trình này sẽ tiết kiệm đƣợc năng lƣợng tiêu thụ bởi hệ thống. CC1010 có 3 chế độ làm việc:

+ Tích cực (Active Mode), chế độ 8051 chạy bình thƣờng, xung Clock là tần số dao động của tinh thể thạch anh chính. Dòng tiêu thụ phụ thuộc vào tần số đó;

+ Chế độ nghỉ (Idle Mode): 8051 không hoạt động, các ngoại vi vẫn hoạt động bình thƣờng. Thoát ra khỏi chế độ nghỉ bằng: Ngắt (Interrupt), thiết lập lại (Reset), Tắt - bật nguồn;

+ Chế độ tắt nguồn (Power-Down Mode): 8051 và các ngoại vi không hoạt động, chỉ clock cho ADC hoạt động. Nó là chế độ tiết kiệm năng lƣợng nhất, thoát khỏi chế độ này bằng Reset hoặc Tắt - bật nguồn.

Thử nghiệm tiết kiệm năng lƣợng khi truyền giữa Master và Slave. Slave thu thập dữ liệu nhiệt độ, áp suất truyền cho Master. Thời gian nghỉ giữa 2 lần truyền là 30 phút. Nuôi Slave là pin điện thoại di động loại 3.6V-580mAh. Slave ở chế độ nghỉ, chỉ khi thu thập số liệu truyền cho Master, Slave mới ở chế độ tích cực, chu trình hoạt động theo giải thuật sau:

Hình 5.5. Độ ổn định của áp suất theo nhiệt độ

900 950 1000 1050 1100 1150 1200 0 10 20 30 40 50

Dòng tiêu thụ của Slave đo đƣợc nhƣ sau: không phát RF, chỉ thu thập số liệu, dòng 17mA, mất khoảng 5 giây do lấy số liệu trung bình 4 lần liên tiếp. Khi phát RF, không thu thập số liệu, dòng 35mA.

Với tốc độ truyền 2,4kb/s, mỗi gói tin dài 22 byte, thời gian truyền gói tin là: 22*8(bit)/2400 = 73ms.

Để Master nhận dữ liệu một cách tin cậy, Slave phát 5 gói tin cùng 1 nội dung, tổng thời gian phát là:

73*5 = 365ms ≈ 0,4s.

Chế độ nghỉ, dòng 0,5mA. Thời gian của chế độ này (tính trong vòng 1 giờ) là: 3600 - 2*5(giây) – 2*0,4 = 3589.2 s.

Nhƣ vậy, dòng tiêu thụ trung bình trong 1 giờ là:

(17*5*2 + 35*0,3*2 + 0,5*3589)/3600 = 0,55 mA ≈ 0,6mA. Thời gian hoạt động lý tƣởng của Slave với tính toán nhƣ trên là:

580/0.6 = 967 giờ = 40 ngày (thực tế có thể đạt 50% giá trị này).

- Khởi tạo ADC, RF, các tham số khác - Về chế độ nghỉ

- Wake up C1010 - Thu thập số liệu

- Phát số liệu cho Master - Trở về chế độ nghỉ

F

T

Đến thời điểm phát số liệu?

Với Master, việc tiết kiệm năng lƣợng không đặt thành vấn đề vì nó đƣợc đặt cùng máy tính ở trung tâm, nơi có sẵn nguồn điện lƣới. Sơ đồ hoạt động của Master nhƣ sau:

5.1.4 Khảo sát số liệu khí áp tại Hà nội

Việc khảo sát số liệu khí áp tại Hà nội đƣợc thực hiện liên tục trong vòng 10 ngày từ 08/06/2005 đến 18/06/2005 nhằm mục đích phục vụ dự báo thời tiết. Sau đây là kết quả khảo sát:

Bảng 4. Số liệu khí áp tại Hà Nội từ 08 đến 18/06/2005

Thời gian (giờ) Áp suất (mBar) Thời gian (giờ) Áp suất (mBar) Thời gian (giờ) Áp suất (mBar) 6:00 991 72:00 991 144:00 994 12:00 990 78:00 993 150:00 992 18:00 989 84:00 992 156:00 995 24:00 988 90:00 990 162:00 994 Khởi tạo: - Khởi tạo RF - Khởi tạo UART

- Khởi tạo các tham số khác

Chờ nhận dữ liệu từ Slave

Đã nhận xong

Truyền dữ liệu về máy tính

T

F

30:00 992 96:00 989 168:00 995 36:00 993 102:00 988 174:00 994 42:00 991 108:00 991 180:00 995 48:00 993 114:00 999 186:00 994 54:00 999 120:00 991 192:00 995 57:00 1004 126:00 990 198:00 993 60:00 990 132:00 989 204:00 993 66:00 987 138:00 990 210:00 994 216:00 995

Khí áp là thông số cơ bản để dự báo sự thay đổi thời tiết, đặc biệt khi biết sự thay đổi khí áp trong vòng một giờ dP/dt. Thông tin thay đổi khí áp liên quan đến thay đổi thời tiết đã đƣợc tổng kết nhƣ sau:

dP/dt > 2,5mb/h: khí áp cao mức trung bình, không ổn định

0,5mb/h < dP/dt < 2,5mb/h: Khí áp cao trong thời gian dài, thời tiết rất ổn định - 0,5mb/h < dP/dt < 0,5mb/h: Thời tiết ổn định

- 2,5mb/h < dP/dt < - 0,5mb/h: Khí áp thấp trong thời gian dài, trời mƣa liên tục

dP/dt < -2,5mb/h: khí áp thấp trung bình, dông tố, không ổn định.

Nhƣ vậy, từ kết quả đo có thể dự báo rằng sẽ có mƣa trong các ngày 10 và 12/06/ 2005.

5.2 Thử nghiệm mạng gồm nhiều nút mạng

Mạng đƣợc tổ chức theo sơ đồ hình cây theo dạng sau:

1 2 1 4 5 9 10 1 3 6 7 8 11 Master RS232 Hình 5.9. Mô hình mạng dạng cây

Master và Slave đều là Vi điều khiển CC1010

Master giao tiếp với máy tính trung tâm qua đƣờng RS232.

Các Slave giao tiếp với nhau hoặc với Master qua đƣờng truyền không dây

Master và Slave đều phải chứa toàn bộ topology của mạng, qua đó mỗi nút sẽ biết đƣờng đi để truyền gói tin đến đích.

Topology của mạng đƣợc xây dựng ngay từ lúc viết chƣơng trình. Khi một nút nhận đƣợc lệnh truyền từ nút cha, nó sẽ xem địa chỉ đích: - Nếu địa chỉ đích chính là nó, nó sẽ gửi dữ liệu về cho nút cha. - Nếu không, nó sẽ tìm trong bảng địa chỉ:

o 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.

o Nếu không tồn tại đƣờng đi thì không làm gì cả.

5.2.1 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, ta thành lập một danh sách các đỉnh con của nó theo thứ tự từ trái sang phải. Ở đây ta 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 nên ta sẽ sử dụng danh sách liên kết. Nhƣ vậy mỗi tế bào mô tả của 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 này, ta có thể khai báo cấu trúc dữ liệu biểu diễn cây nhƣ sau:

#define N 11

{

int id;

node *next;

}

node tree[N];

Trong khai báo trên, Member biểu diễn các thành phần của danh sách các con, còn Node biểu diễn các đỉnh của cây. 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 trên đƣợc minh hoạ nhƣ sau:

1 2 3 4 . 5 6 . 7 8 . 9 . 10 . 11 . 2 3 . 4 5 . 6 7 . 9 10 . 11 id next id next

Ta có nhận xét rằng, trong cách cài đặt này, với mỗi đỉnh k ta xác định đƣợc ngay con trƣởng của nó. Chẳng hạn, với cây trong hình trên, con trƣởng của đỉnh 3 là đỉnh 6, con trƣởng của đỉnh 5 là đỉnh 9, còn đỉnh 6 không có con. Phép toán tìm con trƣởng EldestChild(k) có thể đƣợc mô tả nhƣ sau:

int EldestChild(int k, Tree T)

{ node *p; if(T[k]) { p = T[k].next; return pid; }

else return -1; //không tìm thấy con }

Tuy nhiên trong cách cài đặt này, việc tìm cha và em liền kề của mỗi đỉnh lại không đơn giản. Chẳng hạn, để tìm cha của đỉnh k, ta 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; BOOL found; i = 0; while(i<N)

{ p = T[i].next; while(p) { if(pid = = k) return i else p = pnext; } i++; }

return -1; //không tìm thấy cha

}

Một cách tƣơng tự (duyệt danh sách các con), ta cũng có thể tìm đƣợc em liền kề của mỗi đỉnh. Hàm tìm em liền kề NextSibling(k) nhƣ sau:

int NextSibling(int k, Tree T)

{ node *p; int i; i = 0; while(i < N) { p = T[i].next; while(p) { if(pid = = k)

{

p = pnext; if(p) return pid;

else return -1; //không có em liền kề } else p = pnext; } i++; } return -1; }

Khi Master muốn gửi thông tin cho một nút k nào đó, ta phải tìm đƣờng đi từ Master tới nút k. Muốn vậy, từ nút k trong topology của mạng lƣu trong Master, ta tìm nút cha của nó, sau đó cứ tìm ngƣợc lên trên cho tới Master. Toàn bộ các nút tìm đƣợc chính là đƣờng đi từ Master tới nút k. Các nút tìm đƣợc này sẽ đƣợc lƣu trong một mảng để từ Master, thông qua mảng đó có thể tới đƣợc nút k. Mảng này đƣợc khai báo nhƣ sau:

int RoutingTable[N];

Ví dụ trong sơ đồ hình cây trên, đƣờng đi từ Master tới nút 11 đƣợc lƣu trong bảng nhƣ sau: [1, 3, 7, 11, -1, -1, -1, -1, -1, -1, -1]

Hàm xây dựng bảng định tuyến RoutingTable nhƣ sau:

//Hàm này tìm đƣờng đi từ Master tới nút k, Master có địa chỉ là 1 void FindHops(int k, Tree T)

{

for(i=0; i<N; i++) RoutingTable [i] = -1; i = 0; j = k; do { par = Parent(j, T);

RoutingTable [i] = par;

j = par;

i++;

}while ( par != 1)

}

5.2.2 Định dạng dữ liệu truyền

Truyền dữ liệu từ Master tới Endpoint:

Định dạng dữ liệu truyền từ Master qua các chặng trung gian cho Endpoint nhƣ sau: Len + NextHop + DestAddress + Command + CRC

Truyền dữ liệu về Master:

Định dạng dữ liệu của Endpoint truyền về trung tâm nhƣ sau:

Len + ParentAddress + DestAddress + Command + ADC0 + ADC1 + ADC2 + P + CRC

Trong đó:

Endpoint: là nút mạng cuối cùng mà Master muốn gửi gói tin đến.

Len: độ dài gói tin, 1byte

NextHop: Địa chỉ của nút kế tiếp có thể tới đích

ParentAddress: địa chỉ của nút cha của nút hiện thời, 1 byte.

Command: lệnh gửi cho Endpoint phải thi hành, 1 byte

ADC0, ADC1, ADC2: các giá trị nhiệt độ đọc từ 3 kênh này, 2 byte

P: giá trị áp suất đọc từ cảm biến áp suất MS5535, 2 byte

CRC: Mã dƣ vòng, 2 byte

5.3 Kết luận

Việc thử nghiệm đƣợc tiến hành từ xây dựng mạng gồm hai nút mạng đến xây dựng mạng có nhiều nút mạng. Phần xây dựng mạng có 2 nút mạng đã tiến hành các thử nghiệm nhƣ: khảo sát quan hệ độ cao cột nƣớc - áp suất, khảo sát độ ổn định của phép đo áp suất theo nhiệt độ, khảo sát khí áp tại Hà nội và kiểm tra vấn đề tiết kiệm năng lƣợng. Kết quả thử nghiệm còn cho thấy độ chính xác và tính tuyến tính của cảm biến áp suất MS5535. Một kết quả cũng rất quan trọng của việc thử nghiệm là vi điều khiển CC1010 tiêu thụ năng lƣợng thấp, một tiêu chí quan trọng của WSN.

Phần xây dựng mạng gồm nhiều nút mạng đƣợc tiến hành trên 3 nút mạng, 2 nút là Slave, 1 nút Master. Các nút mạng đều dùng vi điều khiển CC1010 của hãng Chipcon. Mạng đƣợc xây dựng theo dạng adhoc, bảng định tuyến dạng cây đƣợc nhớ cố định trong các nút mạng. Theo chu kỳ, cứ 2 giây nút Master lại gửi yêu cầu lấy dữ liệu tại một nút mạng. Gói tin yêu cầu lấy dữ liệu từ nút Master tới nút Slave sẽ đi qua các nút trung gian để tới nút cần gửi. Khi nút Slave nhận đƣợc yêu cầu từ Master, nó sẽ thu thập thông tin môi trƣờng nhƣ nhiệt độ, áp suất rồi gửi về Master cũng theo đƣờng đi vừa rồi. Việc thăm dò của Master đƣợc thực hiện vòng tròn cho tới nút mạng cuối cùng.

Kết quả các thực nghiệm cho thấy việc truyền nhận dữ liệu ổn định và tin cậy, không bị xung đột.

KẾT LUẬN

Bản luận văn đã đƣa ra kiến trúc tổng quát và chỉ ra các yêu cầu chủ yếu cần đạt đƣợc khi xây dựng một WSN, đó là: năng lƣợng tiêu thụ, kích thƣớc, tính mềm dẻo, độ chính xác theo thời gian. Những đặc điểm này cần đƣợc thể hiện trong hệ thống WSN. Hệ thống phải có khả năng mềm dẻo để thích hợp với dải rộng các yêu cầu của ứng dụng. Các dạng ứng dụng chủ yếu của WSN là: thu thập dữ liệu môi trường, mạng an ninh, và theo dõi đối tượng. Mỗi dạng ứng dụng có sự khác nhau căn bản về truyền thông và các giao thức cần đƣợc hỗ trợ bởi kiến trúc phần cứng.

Yêu cầu quan trọng của một nút mạng là có kích thƣớc bé, tiêu thụ năng lƣợng thấp và có tích hợp truyền nhận không dây, từ đó đã chọn loại vi điều khiển CC1010 do hãng Chipcon-NaUy chế tạo có độ tích hợp cao, truyền nhận RF, tiêu thụ năng lƣợng thấp để làm nút mạng và xây dựng hệ thống thực nghiệm.

Bản luận văn cũng đã giới thiệu về phần mềm nhúng, các yêu cầu về phần mềm nhúng cho các nút mạng và vấn đề gỡ lỗi cho phần mềm nhúng. Gỡ lỗi sẽ làm cho phần mềm trở nên ổn định và tin cậy, dễ bảo trì. Trong lĩnh vực phần mềm nhúng có ba phƣơng pháp gỡ lỗi, đó là: Giám sát ROM, Mô phỏng trên mạchGỡ lỗi Onchip.

Hai chức năng quan trọng nhất của một nút mạng trong WSN là chức năng

mạng và chức năng cảm nhận. Chức năng cảm nhận của nút mạng đòi hỏi một nút mạng phải có khả năng ghép nối đƣợc với nhiều loại cảm biến. Điều đó cho phép một nút mạng có thể thu thập đƣợc nhiều thông tin khác nhau theo nhiều cách khác nhau. Một nút mạng nhƣ vậy có khả năng thích nghi cao với nhiều dạng ứng dụng. Từ các nghiên cứu lý thuyết tổng quát về cảm biến, bản luận văn đã đƣa ra các

Một phần của tài liệu (LUẬN văn THẠC sĩ) thiết kế chế tạo, vận hành và đo thử nghiệm mạng cảm nhận không dây luận văn ths công nghệ thông tin 1 01 10 (Trang 79)

Tải bản đầy đủ (PDF)

(137 trang)