Một khú khăn của nhiều lược đồ TDMA là cung cấp cỏc khe đảm bảo cho tất cả cỏc nỳt, điều này khụng mềm dẻo về mặt cho phộp cỏc lưu lượng từ mỗi nỳt thay đổi theo thời gian. Lược đồ dành riờng như Resync cung cấp mềm dẻo hơn.
Trong Resync, mỗi nỳt trong mạng duy trỡ quan điểm của giai đoạn dựa trờn thời gian nội bộ riờng của nú, nhưng nú giả sử rằng giai đoạn của mỗi nỳt kộo dài trong cỏc khoảng thời gian giống nhau (hoặc cú thể đồng bộ với cỏc hàng xúm gần kề). Mỗi nỳt lựa chọn một thời gian đỳng mỗi giai đoạn dựa trờn xung đồng hồ nội bộ để gửi một mấu tin ngắn. Giả sử rằng việc chọn lựa thành cụng và khụng cú đụng độ vỡ cỏc mẩu tin tồn tại rất ngắn. Bằng việc nghe đủ dài, mỗi nỳt được học xa hơn khi hàng xúm gửi mẩu tin để nú cú thể thức giấc đỳng giờ để lắng nghe chỳng. Khi một nỳt muốn truyền tới một nỳt khỏc, nú biểu thị trong mẩu tin khi nú dự định truyền dữ liệu (thời gian truyền dữ liệu này được chọn ngẫu nhiờn và hiển thị như là một số gia hơn là giới hạn tuyệt đối). Nơi nhận được dự định sẽ thức dậy tại thời gian tương ứng (nú được tớnh toỏn dưa trờn xung đồng hồ nội bộ) để mà nhận bản tin. Resync khụng kết hợp chặt chẽ với một cơ chế RTS/CTS để ngăn chặn đụng độ bản tin do vấn đề cỏc nỳt ẩn; tuy nhiờn khi dữ liệu truyền và lập lịch ngẫu nhiờn, bất kỳ đụng độ nào khụng được duy trỡ liờn tục.
2.6.4 Thõm nhập mụi trƣờng thớch ứng lƣu lƣợng (TRAMA)
Giao thức thõm nhập mụi trường thớch ứng lưu lượng là kỹ thuật TDMA phõn tỏn cho phộp mềm dẻo và lập lịch động cho cỏc khe thời gian. Cỏc giai đoạn thời gian được chia thành tập hợp cỏc khe tớn hiệu ngắn, theo bởi tập hợp cỏc khe truyền dài hơn. TRAMA bao gồm 3 phần chớnh:
1. Giao thức hàng xúm (NP) : cỏc nỳt trao đổi thụng tin một hop hàng xúm trong khoảng ngẫu nhiờn thõm nhập cỏc khe tớn hiệu. Cỏc khe tớn hiệu đủ dài để đảm bảo rằng thụng tin được truyền thật sự và cỏc nỳt cú thụng tin chắc chắn vựng lõn cận.
2. Giao thức trao đổi lập lịch (SEP): Mỗi nỳt sẽ thụng bỏo lịch của nỳt trong giai đoạn khe sử dụng của nỳt tại mỗi giai đoạn. Lịch sử dụng ảnh nhị phõn để chứng tỏ hiệu quả nơi nhận mong đợi (unicast hoặc broadcast) cho mỗi gúi tương lai của nú trong giai đoạn tiếp theo. Nờu số cỏc gúi một nỳt muốn gửi thấp hơn số khe ssang sử dụng trong một thời điểm, nú sẽ từ bỏ cỏc khe thừa (được đúng gúi tại cuối thời điờm với nhau giữa khe sử dụng,hướng đến sự thay đổi khe, và lịch cuối cựng phổ biến tờn cỏc khe . Việc thay đổi khe được sử dụng đồng bộ: vỡ vậy cỏc hàng xúm được yờu cầu thức giấc và lắng nghe nú.) Nỳt ngủ tại tất cả cỏc thời điểm khi nỳt khụng được yờu cầu truyền nhận.
3. Thuật toỏn lựa chọn thớch ứng (AEA) : thuật toỏn này sử dụng chức năng băm dựa trờn ID nỳt và thời gian để đảm bảo rằng cú duy nất mức ưu tiờn của nỳt giữa cỏc nỳt trong phạm vi vựng 2 hop tại mỗi thời điểm. TRong phiờn bản đơn giản nhất của thuật toỏn này, một nỳt truyền nếu và chỉ nếu nú cú mức ưu tiờn cao nhất giữa cỏc nỳt trong phạm vi vựng lõn cận 2 hop của nú. Tuy niờn, để làm giảm cỏc lóng phớ của một khe nếu khụng cú dữ liệu truyền. TRAMA ràng buộc một mở rộng phức tạp cho phộp dựng lại khe. Thủ tục TRAMA thực hiện việc phõn cụng cho phộp cỏc nỳt truy cập kờnh truyền để trỏnh xung đột, giao thức này giả sử tất cả cỏc nỳt đều đồng bộ thời gian và chia thời gian thời gian được chia thành thời điểm truy cập ngẫu nhiờn. Một nỳt sẽ quảng bỏ thụng tin của nú tới cỏc nỳt hàng xúm, bao gồm cả thụng tin về lập lịch của nú. Dựa và cỏc thụng tin này cỏc nỳt sẽ sử dụng thuật toỏn phõn tỏn để xỏc định khe thời gian và kế hoạch thõm nhập để truyền - nhận dữ liệu và kế hoạch chuyển sang trạng thỏi ngủ của nú. Nhược điểm của thủ tục này khỏ nặng về tớnh toỏn và bộ nhớ bởi vậy yờu cầu mạng cú tài nguyờn đủ lớn.
Hỡnh 2.10: Thủ tục TRAMA
2.7 Lập lịch tập trung
Trong thủ tục lập lịch tập trung, mạng sẽ chia thành 2 thành phần : nỳt cơ sở và nỳt cảm nhận.
Nỳt cơ sở: sẽ hoạt động theo chu kỳ với thời gian hoạt động và thời gian nghỉ là cố định: thoạt động và tnghỉ . Trong thời gian hoạt động, nỳt cơ sở sẽ gửi yờu cầu tới từng nỳt cảm nhận, sau khi gửi yờu cầu thỡ nỳt cơ sở chuyển sang trạng thỏi nhận, nếu nhận được thỡ sẽ xử lý số liệu rồi chuyển sang yờu cầu nỳt tiếp theo. Nếu ko nhận được dữ liệu từ nỳt đó yờu cầu thỡ sẽ nhận lại trong khoảng thời gian tx nào đú, nếu trong thời gian đú vẫn khụng nhận được thỡ chuyển sang yờu cầu nỳt tiếp theo.
Nỳt cảm nhận: sau khi khởi tạo, nỳt cảm nhận tiến hành nhận dữ liệu từ mụi trường, nếu khụng nhận được thỡ nhận lại cho đến khi nhận được 1 gúi tin bất kỳ. khi quỏ trỡnh nhận thành cụng chứng tỏ bờn ngoài mụi trường cỏc nỳt đang ở trong trạng thỏi hoạt động. Lỳc này, nỳt cảm nhận bắt đầu tiến hành chu trỡnh hoạt động của mỡnh.
Nhận dữ liệu từ mụi trường, nếu khụng nhận được thỡ nhận lại cho tới khi nhận được gúi tin. Khi nhận được gúi tin thỡ tiến hành kiểm tra địa chỉ và yờu cầu xem cú phải yờu cầu nú gửi dữ liệu đi hay khụng, nếu ko phải thỡ lại quay lại nhận dữ liệu. nếu đỳng thỡ tiến hành lấy dữ liệu rồi truyền cho nỳt cơ sở. Nếu ko nhận được dữ liệu liờn tiếp trong một khoảng thời gian thỡ chuyển sang chế độ nghỉ. Thời gian nghỉ ở đõy tớnh là tnghỉ1 = tnghỉ - t1.
Sau khi nghỉ xong, tức là kết thỳc 1 chu kỳ làm việc đầu tiờn, nỳt cảm nhận đó bỏm được vào chu kỳ làm việc của nỳt cơ sở. Cỏc chu kỳ tiếp theo, nỳt cảm nhận sẽ hoạt động dựa vào cỏc khoảng thời gian thoạt động và tnghỉ y như nỳt cơ sở. Nhưng nếu hoạt động mói như vậy thỡ sau 1 khoảng dài sẽ bị lệch khe thời gian. Vỡ thế, sau
khoảng 30chu kỳ (1 số lần nào đú) hoạt động và nghỉ, nú sẽ quay trở lại thực hiện như chu kỳ đầu tiờn, tức là tiến hành việc bỏm vào khhung làm việc, sau đú mới lại tiến hành làm việc và nghỉ theo khoảng thời gian giống như nỳt cơ sở. Như vậy thỡ nỳt cảm nhận sẽ tiến hành bỏm lại vào chu kỳ làm việc sau 1 số lần hoạt động để đảm bảo việc khớp về mặt khe thời gian.
Hỡnh 2.11 Thuật toỏn lập lịch tập trung
T T Khởi tạo Add=1 Nhận ok? Và tx<1s Gửi yờu cầu Nhận Xử lý và hiển thị Trế Add++ Add<max F F
CHƢƠNG 3
THỰC NGHIỆM ĐO KIỂM MẠNG WSN SỬ DỤNG PHƢƠNG PHÁP LẬP LỊCH TẬP TRUNG
3.1. Mục đớch và yờu cầu thực nghiệm: 3.1.1. Mục đớch: 3.1.1. Mục đớch:
Tỡm hiểu nguyờn tắc hoạt động của module CC1010 (sử dụng vi điều khiển CC1010 để xõy dựng nỳt mạng trong mạng cảm nhận). Trờn cở sở đú viết phần mềm nhỳng cho cỏc nỳt mạng và xõy dựng mụ hỡnh thớ nghiệm khảo sỏt quỏ trỡnh hoạt động, đo hiệu quả truyền nhận gúi tin của mạng WSN, đỏnh giỏ hiệu quả năng lượng theo phương phỏp lập lịch tập trung, từ đú rỳt ra kết luận so sỏnh và đỏnh giỏ.
3.1.2. Yờu cầu thực nghiệm:
Hai thực nghiệm sau cần được thực hiện:
Đo cường độ tớn hiệu nhận được giữa cỏc nỳt mạng WSN Đo hiệu quả nhận gúi tin giữa cỏc nỳt mạng WSN
Cỏc thớ nghiệm cần được đo đạc nhiều lần ở cỏc mụi trường truyền nhận và khoảng cỏch khỏc nhau để chỉ ra rừ sự tỏc động của chỳng đến cường độ nhận và hiệu quả truyền nhận gúi tin.
3.2. Cỏc thiết bị thực nghiệm:
Hệ thống WSN được kết nối với mỏy tớnh thụng qua cỏp nối RS232, do đú việc thu nhận dữ liệu từ nỳt mạng về mỏy tớnh sẽ thực hiện truyền qua giao tiếp RS232 (cổng COM). Ngụn ngữ lập trỡnh được sử dụng ở đõy là ngụn ngữ C, chương trỡnh dịch là Keil àVision2.0/3.0.
Vi điều khiển (VĐK) được lựa chọn để xõy dựng nỳt mạng ở đõy là CC1010. Việc chọn VĐK hợp lý sẽ làm cho quỏ trỡnh xõy dựng hệ thống được rỳt ngắn, hệ thống hoạt động ổn định, tin cậy và đạt cỏc chỉ tiờu đề ra:
Tiờu thụ năng lượng thấp.
Tớch hợp ADC để cú thể ghộp nối với cảm biến tương tự.
Bộ nhớ chương trỡnh cũng như bộ nhớ dữ liệu cú kớch thước hợp lý. Kớch thước vật lý nhỏ.
thuận tiện như: sử dụng ngụn ngữ cấp cao, cú cỏc thư viện hỗ trợ cho việc cảm nhận cũng như truyền nhận khụng dõy, hỗ trợ gỡ lỗi…
Giỏ thành rẻ.
3.3 Giới thiệu VDK CC1010:
Cỏc đặc điểm chớnh của VDK CC1010:
Thu phỏt khụng dõy 300-1000 MHz. Độ nhạy cao (-107 dBm).
Cú thể lập trỡnh cho cụng suất đầu ra tới +10 dBm. Tốc độ truyền RF cú thể đạt 76.8 kbit/s.
Đo được cường độ RF (RSSI).
Tương thớch họ VĐK 8051, tốc độ xử lý bằng 2,5 lần vi điều khiển 8051 chuẩn.
32 kB Flash, 2048 + 128 Byte SRAM.
3 kờnh ADC 10 bit, 4 bộ định thời / 2PWMs, 2 UARTs, RTC, Watchdog, SPI, mó hoỏ DES, 26 chõn I/O.
Cú khả năng gỡ lỗi sử dụng chương trỡnh dịch Keil μVision2.0/3.0 IDE qua cổng nối tiếp.
Hỡnh 3.2 Chip CC1010 dựng thiết kế nỳt mạng cảm nhận
3.4 Tiến hành thực nghiệm 3.4.1 Sơ đồ thực nghiệm 3.4.1 Sơ đồ thực nghiệm
Hỡnh 3.4 Sơ đồ thực nghiệm mạng WSN
Nỳt CC1010 nối trực tiếp với mỏy tớnh qua cổng RS232 (gọi là nỳt cơ sở) nhận kết quả từ nỳt cảm nhận (cú thể di động xa nỳt cơ sở). Nỳt cơ sở sẽ phỏt tớn hiệu yờu cầu thu thập dữ liệu từ cỏc nỳt cảm nhận theo nguyờn tắc hỏi vũng, cỏc nỳt cảm nhận sau khi nhận được yờu cầu từ nỳt cơ sở sẽ gửi trả lời
Thớ nghiệm tiến hành cỏc phộp đo sau :
1.Khoảng cỏch D lớn nhất cú để nỳt cảm nhõn và nỳt cơ sở cũn cú thể truyền tớn hiệu được cho nhau.
2.Thời gian truyền nhận dữ liệu giữa nỳt cảm nhận và nỳt cơ sở.
3.Đo cường độ dũng điện của cỏc nỳt mạng cỏc trạng thỏi : ngủ, truyền, nhận dữ liệu ở chế độ lập lịch tập trung.
3.4.1.1 Xỏc định khoảng cỏch D lớn nhất giữa cỏc nỳt mạng để chỳng cũn cú thể truyền nhận cú hiệu quả :
a. Chuẩn bị thớ nghiệm :
- Địa điểm đo : tại sõn trường Đại Học Cụng Nghệ - Nạp phần mềm nhỳng cho cỏc nỳt mạng.
- Chuẩn bị cỏc phụ kiện : thước dõy, mỏy ảnh…
2 1 3 4 Nỳt cơ sở Master RS232 Cỏc nỳt cảm nhận (Slave) Cỏc nỳt cảm nhận (Slave) Cỏc nỳt cảm nhận (Slave) Cỏc nỳt cảm nhận (Slave)
Hỡnh 3.5 Nạp phần mềm cho nỳt mạng WSN
b. Mụ tả quỏ trỡnh đo đạc : Dựng thước dõy để xỏc định cỏc mốc cần đo, khởi động cỏc nỳt mạng. Nỳt cơ sở phỏt tớn hiệu tại một vị trớ cố định, sau đú ta di chuyển nỳt mạng cảm nhận trờn cỏc mốc xỏc định trước, quan sỏt kết quả trờn màn hỡnh LED của nỳt mạng cơ sở.
c. Kết quả đo :
Lần đo thứ Khoảng cỏch (M)
Số gúi yờu cầu nỳt cơ sở truyền đi Số gúi trả lời nỳt cơ sở nhận được Tỉ lệ % nhận được 1 50 100 100 100% 90 100 100 100% 95 100 80 80% 110 100 0 0% 2 50 100 100 100% 90 100 100 100% 95 100 80 80% 96 100 77 77% 97 100 74 74% 100 100 70 70% 105 100 5 5% 3 94 100 100 100 100 100 79 79% 102 100 0 0%
Bảng 3.1 Bảng số liệu đo khoảng cỏch truyền tớn hiệu giữa cỏc nỳt mạng
d. Kết luận :
Đo ngoài trời khoảng cỏch D giữa nỳt cơ sở và nỳt cảm nhận : D < 95m : nhận 100%
95m < D < 100m : nhận 70% - 80%
Cụng suất phỏt của chip C1010 với nguồn nuụi 3.3V truyền với khoảng cỏch D<100 cỏc nỳt mạng cũn nhận được tớn hiệu.
3.4.1.2 Xỏc định thời gian truyền nhận dữ liệu giữa nỳt cảm nhận và nỳt cơ sở của mạng WSN trờn cơ sở CC1010.
a. Cỏc bước chuẩn bị thớ nghiệm: - Nạp phần mềm cho cỏc nỳt mạng
- Nối nỳt mạng cơ sở giao tiếp với mỏy tớnh qua cổng RS232 - Chạy phần mềm .. để đún kết quả
b. Mụ tả thớ nghiệm và quỏ trỡnh đo
- Sử dụng bộ định thời tớch hợp sẵn trong vi điều khiển CC1010.
- Cấu trỳc của gúi dữ liệu đó được sử dụng trong chương trỡnh cú dạng như sau: 7 byte 2 byte 2 byte 2 byte 2 byte 2 byte
Preamble NỳtID Data Target Type CRC Trong đú:
Preamble : cỏc byte dẫn đường dựng để đồng bộ ngưỡng cho bộ thu RF NỳtID: Địa chỉ của nỳt truyền.
Data: Thụng tin dữ liệu truyền về. Target: Địa chỉ nỳt nhận.
Type: Loại gúi dữ liệu (điều khiển/dữ liệu).
CRC : Byte chứa thụng tin kiểm tra lỗi dư thừa vũng.
. Quy trỡnh truyền nhận : bao gồm hai pha Phase 1: pha truyền
Truyền 7 byte dẫn đường
Truyền từng byte và tớnh CRC cho hết 8 byte Truyền 2 byte CRC
Phase 2 : Pha nhận
Nhận 7 byte dẫn đường Nhận 8 byte dữ liệu Nhận 2 byte CRC
Kiểm tra CRC
Cỏc bước sử dụng timer để đo, ở đõy sử dụng timer0
Khởi tạo timer0 chạy ở chế độ định thời, bộ đếm timer0 sẽ tăng lờn mỗi chu kỳ mỏy(0.2713às, với tần số thạch anh là 14,746Mhz). Với CC1010 thỡ một chu kỳ mỏy = 4 chu kỳ thạch anh
Gọi hàm truyền, đồng thời kớch hoạt timer0 bắt đầu đếm. Khi hàm truyền kết thỳc thỡ cho timer0 dừng đếm.
Giỏ trị đếm được của timer0 được lưu lại, nhõn với 0.2713às và hiển thị lờn màn hỡnh.
Làm tương tự với cỏc phộp đo khỏc (như đo thời gian nhận, tớnh CRC…)
Chương trỡnh khởi tạo timer0: // Khởi tạo timer0 mode 1
TMOD = (TMOD&0xF0)|0x01;
INT_ENABLE(INUM_TIMER0, INT_ON); INT_GLOBAL_ENABLE(TRUE);
// Cỏc biến đếm
byte xdata counter = 0; ulong xdata timeout; word xdata tCounter;
unsigned int xdata value = 0;
//Reset biến đếm và cho timer chạy tại thời điểm bắt đầu đo counter = 0;
TH0 = 0x00; TL0 = 0x00; TF0 = 0;
TIMER0_RUN(TRUE);
// Dừng timer khi kết thỳc đo và in ra thụng bỏo về thời gian đếm được TIMER0_RUN(FALSE);
value = TH0;// thanh ghi đếm của Timer 0 value <<= 8;
value |= TL0;
fTemp = (value*0.2713 + 65535*counter); //
printf("\n\nThoi gian đếm được là: %4.1f us", fTemp); // Hàm ngắt timer0 để tăng biến đếm mỗi khi tmer0 tràn
// Timer0 sẽ đếm từ 0, giỏ trị đếm tăng lờn mỗi 0.2713us, giỏ trị đếm đạt 65535 thỡ timer0 tràn, bỏo ngắt
void TIMER0_ISR() interrupt INUM_TIMER0 { // Reset the timer to generate another interrupt INT_SETFLAG (INUM_TIMER0, INT_CLR);
TIMER0_RUN(FALSE); TH0 = 0x00; TL0 = 0x00; TIMER0_RUN(TRUE); counter++; } // TIMER0_ISR
Chƣơng trỡnh đo thời gian từ nỳt truyền đến nỳt nhận
counter = 0; TH0 = 0x00; TL0 = 0x00; TF0 = 0;
TIMER0_RUN(TRUE);
// Tổng thời gian từ lỳc bắt đầu truyền đến lỳc hết hàm truyền
halRFSendPacket2(PREAMBLE_BYTE_COUNT, txDataBuffer.buffer, PACKET_LENGTH); TIMER0_RUN(FALSE); value = TH0; value <<= 8; value |= TL0;
fTemp = (value*0.2713 + 65535*counter);
printf("\n\nThoi gian truyen het 7 byte preamale + 8 byte data + 2 byte CRC16: %4.1f us", fTemp);
Hỡnh 3.7 Thời gian truyền hết 17 byte dữ liệu từ nỳt truyền đến nỳt nhận Xỏc định thời gian nhận và xử lý dữ liệu tại nỳt nhận