Khái niệm Mạng cảm biến không dây WSN có thể hiểu đơn giản là mạng liên kếtcác node với nhau bằng kết nối sóng vô tuyến RF connection trong đó các nodemạng thường là các thiết bị đơn giả
Trang 1MỤC LỤC
LỜI NÓI ĐẦU 2
CHƯƠNG I 3
TỔNG QUAN VÀ CƠ SỞ LÝ THUYẾT 3
1.1 Tổng quan về đề tài 3
1.1.1 Mục đích đề tài 3
1.1.2 Các vấn đề cần giải quyết của đồ án 3
1.1.3 Giải pháp giải quyết vấn đề 3
1.2 Tổng quan về mạng cảm biến không dây 4
1.2.1 Khái niệm 4
1.2.2 Node cảm biến 4
1.2.3 Đặc điểm của cấu trúc mạng cảm biến 4
1.2.4 Ưu nhược điểm của mạng cảm biến không dây 5
1.2.5 Ứng dụng của mạng cảm biến không dây 6
1.3 Khái quát về ZigBee/ IEEE 802.15.4 6
1.3.1 Khái niệm 6
1.3.2 Đặc điểm 6
1.3.3 Thuật toán định tuyến theo yêu cầu AODV 11
1.4 Tổng quan về Xbee ZB24 22
1.4.1 Thông số kỹ thuật 22
1.4.2 Truyền thông Xbee 24
1.5 Tổng quan về Arduino 29
1.6 Sơ lược về nhịp tim và nhiệt độ cơ thể người 33
Trang 21.6.2 Thân nhiệt và đo thân nhiệt 35
1.7 Kết luận chương 37
CHƯƠNG II 39
THIẾT KẾ MÔ HÌNH HỆ THỐNG 39
2.1 Mô hình hệ thống 39
2.1.1 Sơ đồ ngữ cảnh hệ thống 39
2.1.2 Sơ đồ khối hệ thống 40
2.2 Phân tích hoạt động hệ thống giám sát nhiệt độ, nhịp tim và gửi tin nhắn SMS qua mạng GSM 53
2.2.1 Giám sát nhịp tim dựa trên lượng SpO2 53
2.2.2 Hoạt động của hệ thống 56
CHƯƠNG III 58
XÂY DỰNG PHẦN MỀM VÀ KẾT QUẢ 58
3.1 Xây dựng phần mềm 58
3.2 Kết quả đạt được 61
3.2.1 Hình ảnh hệ thống thực tế 61
3.2.2 Hình ảnh hoạt động của hệ thống 62
KẾT LUẬN 64
TÀI LIỆU THAM KHẢO 65
Trang 3MỤC LỤC HÌNH ẢNH
Hình 1.1: Cấu trúc liên kết mạng 8
Hình 1.2: Cấu trúc mạng hình sao 9
Hình 1.3: Cấu trúc mạng mesh 9
Hình 1.4: Cấu trúc mạng hình cây 10
Hình 1.5: Định dạng tuyến đường trong giao thức AODV 13
Hình 1.6: Quá trình chọn nốt gốc (CH) 15
Hình 1.7: Thiết lập kết nối giữa CH và nốt thành viên 16
Hình 1.8: Quá trình hình thành nhánh nhiều bậc 17
Hình 1.9: Gán địa chỉ nhóm trực tiếp 18
Hình 1.10 Gán địa chỉ nhóm qua nốt trung gian 19
Hình 1.11 Gán địa chỉ nhóm qua nốt gốc 20
Hình 1.12 Gán địa chỉ nhóm qua nốt gốc và nốt trung gian 20
Hình 1.13 Hình ảnh Xbee ZB24 22
Hình 1.14 Hoạt động truyền thông RF 24
Hình 1.15 Khung truyền UART 24
Hình 1.16 Cấu trúc khung API chế độ 1 25
Hình 1.17 Khung API ở chế độ 2 25
Hình 1.18 Cấu trúc cụ thể khung API 26
Hình 1.19 API truyền 64 bít địa chỉ 27
Hình 1.20 API truyền 16 bít địa chỉ 27
Hình 1.21 Khung trạng thái truyền 28
Hình 1.22 Khung nhận 64 bít địa chỉ 28
Hình 1.23 Khung nhận 16 bít địa chỉ 28
Trang 4Hình 1.25 Board mạch Arduino Uno 31
Hình 1.26 Máy in 3D 31
Hình 1.27 Robot 32
Hình 1.28 Máy bay không người lái 32
Hình 1.29 Lập tình game tương tác 32
Hình 1.30 Điều khiển hiệu ứng ánh sáng 33
Hình 2.1 Ngữ cảnh hệ thống giám sát sức khỏe trong mạng cảm biến không dây 39
Hình 2.2 Sơ đồ khối hệ thống 40
Hình 2.3 Khối điều khiển 41
Hình 2.4 Khối truyền phát 42
Hình 2.5 Kết nối sim tới modul SIM 900A 44
Hình 2.6 Modul SIM 900A 44
Hình 2.7 Cảm biến nhiệt độ DS18B20 49
Hình 2.8 Sơ đồ mạch đo nhịp tim bằng hồng ngoại 52
Hình 2.9 Pin Lithium cung cấp nguồn cho hệ thống 52
Hình 2.10 Mạch ổn áp 5V cung cấp nguồn cho board mạch Arduino 53
Hình 2.11 Mạch ổn áp 3,3V được sử dụng cung cấp nguồn cho Xbee ZB24 53
Hình 2.12 Mạch ổn áp 4,1V dành cho Modul SIM900 53
Hình 2.13 Sơ đồ khối mạch đo nhịp tim dựa trên SpO2 55
Hình 2.14 Sơ đồ mạch dò nhịp tim 55
Hình 2.15 Khi người sử dụng ở ngoài phạm vi của mạng cảm biến không dây 56
Hình 2.16 Khi người sử dụng ở trong phạm vi của mạng cảm biến không dây 57
Hình 3.1 Lưu đồ thuật toán chương trình chính 58
Hình 3.2 Chương trình timer 59
Trang 5Hình 3.4 Hình ảnh thực tế hệ thống 61
Hình 3.5 Hệ thống được gắn vào tay bệnh nhân 62
Hình 3.7 Hệ thống gửi tin nhắn khi mới khởi động 63
Hình 3.6 Hệ thống chạy được test trên máy tính 63
Trang 6LỜI CẢM ƠN
Em xin chân thành cảm ơn:
Thầy giáo Phạm Quốc Thịnh – Bộ môn Công nghệ điện tử - Khoa
công nghệ Điện tử vả Truyền thông – Đại học Công nghệ Thông tin vàTruyền thông Thái Nguyên
Dự án “Exploring future university development cooperation in rural North Vietnam supported by existing partnerships: a harvest and seed approach”- mã số ZEIN2011Z099.
Cùng các thầy cô giáo trong Khoa Công nghệ Điện tử và Truyền thông – Đại họcCông nghệ thông tin và Truyền thông đã tạo mọi điều kiện giúp đỡ em trong suốt thờigian thực hiện đồ án
Thái Nguyên, tháng 5 năm 2013
Sinh viên thực hiện đồ án
Dương Vũ Kiên
Trang 7LỜI NÓI ĐẦU
Mạng cảm biến không dây hiện nay đang được áp dụng rộng rãi trong đờisống và nghiên cứu tại nhiều nước trên thế giới Một ưu điểm của mạng cảm biếnkhông dây là tính di động cao, nhỏ gọn và số lượng nút cảm biến lớn dẫn đếnvùng phủ sóng của mạng rộng WSN cung cấp rất nhiều những ứng dụng hữuích ở nhiều lĩnh vực trong cuộc sống
- Ứng dụng quân sự an ninh và thiên nhiên
- Ứng dụng trong giám sát xe cộ và các thông tin liên quan
- Ứng dụng cho việc điều khiển các thiêt bị trong nhà
dây trong dự án VLIR, em đã thực hiện đồ án tốt nghiệp “Thiết kế nút mạng cảm biến không dây ứng dụng trong y tế” với mục đích xây dựng một nút
mạng cảm biến có khả năng thu thập nhiệt độ, nhịp tim của bệnh nhân và gửi vềmáy tính nếu bệnh nhân đang ở trong bệnh viện (vùng phủ sóng của mạng cảmbiến), giúp bệnh nhân có thể được di chuyển quanh khu vực bệnh viện mà khôngcần nằm một chỗ, ngoài ra nếu di chuyển ra ngoài khu vực bệnh viện, hệ thống sẽ
xử lý tự động gửi tin nhắn đến số điện thoại đã đặt trước nếu tình hình sức khỏecủa bệnh nhân có vấn đề
Trang 8CHƯƠNG I TỔNG QUAN VÀ CƠ SỞ LÝ THUYẾT1.1 Tổng quan về đề tài
1.1.2 Các vấn đề cần giải quyết của đồ án
Đồ án “Thiết kế nút mạng cảm biến không dây ứng dụng trong y tế”
có các vấn đề cần giải quyết sau:
- Lập trình nhúng với nền tảng Arduino
- Thiết kế mạch cảm biến nhịp tim
- Sử dụng chuẩn truyền thông Zigbee/802.15.4 để gửi nhận dữ liệu vềmáy tính
- Lập trình ghép nối modul SIM900 để gửi tin nhắn tới số điện thoạiđịnh sẵn
- Mạch chạy ổn định, có thể đo nhịp tim và nhiệt độ của người sử dụngmột cách chính xác
1.1.3 Giải pháp giải quyết vấn đề
Các giải pháp đưa ra để giải quyết bài toán mà đồ án đặt ra như sau:
- Thiết kế mạch cảm biến nhịp tim dựa trên xung Oxy SpO2 bằng ledhồng ngoại
- Sử dụng cảm biến nhiệt độ DS18B20 để cảm biến nhiệt độ cơ thểngười sử dụng
- Lập trình Arduino với Board mạch Arduino Mega256
Trang 9- Lập trình gửi dữ liệu từ Arduino tới máy tính thông qua chuẩn truyềnthông Zigbee/802.15.4 sử dụng Xbee ZB24.
- Lập trình gửi tin nhắn với modul SIM900 khi dữ liệu về nhịp tim hoặcnhiệt độ gặp vấn đề (quá cao hoặc quá thấp)
1.2 Tổng quan về mạng cảm biến không dây
1.2.1 Khái niệm
Mạng cảm biến không dây (WSN) có thể hiểu đơn giản là mạng liên kếtcác node với nhau bằng kết nối sóng vô tuyến (RF connection) trong đó các nodemạng thường là các thiết bị đơn giản, nhỏ gọn, giá thành thấp… và có số lượnglớn, được phân bố một cách không có hệ thống (non-topology) trên một diệntích rộng (phạm vi hoạt động rộng), sử dụng nguôn năng lượng hạn chế (pin), cóthời gian hoạt động lâu dài( vài tháng đến vài năm) và có thể hoạt động trongmôi trường khắc nhiệt (chất độc, ô nhiễm, nhiệt độ…)
1.2.3 Đặc điểm của cấu trúc mạng cảm biến
Đặc điểm của mạng cảm biến là bao gồm một số lượng lớn các node cảmbiến, các node cảm biến có giới hạn và giàng buộc về tài nguyên đặc biệt là nănglượng rất khắt khe Do đó, cấu trúc mạng mới có đặc điểm rất khác với các mạng
Trang 10truyền thống Sau đây ta sẽ phân tích một số đặc điểm nổi bật trong các mạngcảm biến như sau:
- Khả năng chịu lỗi
- Khả năng mở rộng
- Ràng buộc phần cứng
- Môi trường hoạt động
- Phương tiện truyền dẫn
- Cấu hình mạng cảm biến
1.2.4 Ưu nhược điểm của mạng cảm biến không dây
a Ưu điểm
Mạng không dây không dùng cáp cho các kết nối, thay vào đó, chúng
sử dụng sóng radio, cũng tương tự như điện thoại không dây Ưu thế của mạngkhông dây là khả năng di động va sự tự do, người dùng không bị hạn chế vềkhông gian và vị trị kết nối Những ưu điểm của mạng không dây bao gồm:
- Khả năng di động và sự tự do – cho phép kết nối từ bất kì đâu
- Không bị hạn chế về không gian và vị trí kết nối
Chức năng giới hạn, bao gồm cả vấn đề về kích thước
Yếu tố nguồn cung cấp
Trang 11 Tiêu chuẩn và quyền sở hữu.
Các vấn đề mở rộng
1.2.5 Ứng dụng của mạng cảm biến không dây
WSN bao gồm các node cảm biến nhỏ gọn, thích ứng được môitrường khắc nghiệt Những node cảm biến này, cảm nhận môi trường xungquanh, sau đó gửi những thông tin thu được đến trung tâm xử lí theo ứng dụng.Các node không những có thể liên lạc với các node xung quanh nó, mà còn cóthể xử lí theo ứng dụng Các node không những có thể liên lạc được với các nodexug quanh nó, mà còn có thể xử lí dữ liệu trước khi gửi đến các node khác.WSN cung cấp rất nhiều những ứng dụng hữu ích ở nhiều lĩnh vực trong cuộcsống
- Ứng dụng quân sự an ninh và thiên nhiên
- Ứng dụng trong giám sát xe cộ và các thông tin liên quan
- Ứng dụng cho việc điều khiển các thiêt bị trong nhà
1.3.2 Đặc điểm
Đặc điểm của công nghệ ZigBee là tốc độ truyền tin thấp, tiêu hao ít nănglượng, chi phí thấp, và là giao thức mạng không dây hướng tới các ứng dụng
Trang 12chuẩn tốc độ thấp được một thời gian ngắn thì tiểu ban về ZigBee và tổ chứcIEEE quyết định sát nhập và lấy tên ZigBee đặt cho công nghệ mới này Mụctiêu của công nghệ ZigBee là nhắm tới việc truyền tin với mức tiêu hao nănglượng nhỏ và công suất thấp cho những thiết bị chỉ có thời gian sống từ vài thángđến vài năm mà không yêu cầu cao về tốc độ truyền tin như Bluetooth Một điềunổi bật là ZigBee có thể dùng được trong các mạng mắt lưới (mesh network)rộng hơn là sử dụng công nghệ Bluetooth Các thiết bị không dây sử dụng côngnghệ ZigBee có thể dễ dàng truyền tin trong khoảng cách 10-75m tùy thuộc vàmôi trường truyền và mức công suất phát được yêu cầu với mỗi ứng dụng, Tốc
độ dữ liệu là 250kbps ở dải tần 2.4GHz (toàn cầu), 40kbps ở dải tần 915MHz(Mỹ + Nhật) và 20kbps ở dải tần 868MHz (Châu Âu)
Các nhóm nghiên cứu Zigbee và tổ chức IEEE đã làm việc cùng nhau đểchỉ rõ toàn bộ các khối giao thức của công nghệ này IEEE 802.15.4 tập trungnghiên cứu vào 2 tầng thấp của giao thức (tầng vật lý và tầng liên kết dữ liệu).Zigbee còn thiết lập cơ sở cho những tầng cao hơn trong giao thức (từ tầngmạng đến tầng ứng dụng) về bảo mật, dữ liệu, chuẩn phát triển để đảm bảo chắcchắn rằng các khách hàng dù mua sản phẩm từ các hãng sản xuất khác nhaunhưng vẫn theo một chuẩn riêng để làm việc cùng nhau được mà không tương táclẫn nhau
Hiện nay thì IEEE 802.15.4 tập trung vào các chi tiết kỹ thuật của tầng vật
lý PHY và tầng điều khiển truy cập MAC ứng với mỗi loại mạng khác nhau(mạng hình sao, mạng hình cây, mạng mắt lưới) Các phương pháp định tuyếnđược thiết kế sao cho năng lượng được bảo toàn và độ trễ trong truyền tin là ởmức thấp nhất có thể bằng cách dùng các khe thời gian bảo đảm(GTSs_guaranteed time slots) Tính năng nổi bật chỉ có ở tầng mạng Zigbee làgiảm thiểu được sự hỏng hóc dẫn đến gián đoạn kết nối tại một nút mạng trongmạng mesh Nhiệm vụ đặc trưng của tầng PHY gồm có phát hiện chất lượng củađường truyền (LQI) và năng lượng truyền (ED), đánh giá kênh truyền (CCA),giúp nâng cao khả năng chung sống với các loại mạng không dây khác
Một hệ thống ZigBee/IEEE802.15.4 gồm nhiều phần tạo nên Phần cơ
Trang 13bản nhất tạo nên một mạng là thiết bị có tên là FFD (full-function device),thiết bị này đảm nhận tất cả các chức năng trong mạng và hoạt động như một bộđiều phối mạng PAN, ngoài ra còn có một số thiết bị đảm nhận một số chứcnăng hạn chế có tên là RFD (reduced-function device) Một mạng tối thiểu phải
có 1 thiết bị FFD, thiết bị này hoạt động như một bộ điều phối mạng PAN
FFD có thể hoạt động trong ba trạng thái: là điều phối viên của toàn mạngPAN (personal area network), hay là điều phối viên của một mạng con, hoặcđơn giản chỉ là một thành viên trong mạng RFD được dùng cho các ứng dụngđơn giản, không yêu cầu gửi lựợng lớn dữ liệu Một FFD có thể làm việc vớinhiều RFD hay nhiều FFD, trong khi một RFD chỉ có thể làm việc với một FFD
a Kiến trúc liên kết mạng
Hiện nay Zigbee và tổ chức chuẩn IEEE đã đưa ra một số cấu trúc liên kếtmạng cho công nghệ Zigbee Các node mạng trong một mạng Zigbee có thểliên kết với nhau theo cấu trúc mạng hình sao (star) cấu trúc mạng hình lưới(Mesh) cấu trúc bó cụm hình cây Sự đa rạng về cấu trúc mạng này cho phépcông nghệ Zigbee được ứng dụng một cách rộng rãi Hình 1 cho ta thấy ba loạimạng mà ZigBee cung cấp: tôpô sao, tôpô mắt lưới, tôpô cây
Hình 1.1: Cấu trúc liên kết mạng
Trang 14b Cấu trúc liên kết mạng hình sao
Hình 1.2: Cấu trúc mạng hình sao
Đối với loại mạng này, một kết nối được thành lập bởi các thiết bị vớimột thiết bị điều khiển trung tâm điều khiển được gọi là bộ điều phối mạngPAN Sau khi FFD được kích hoạt lần đầu tiên nó có thể tạo nên một mạngđộc lập và trở thành một bộ điều phối mạng PAN Mỗi mạng hình sao đều phải
có một chỉ số nhận dạng cá nhân của riêng mình được gọi là PAN ID (PANidentifier), nó cho phép mạng này có thể hoạt động một cách độc lập Khi đó
cả FFD và RFD đều có thể kết nối tới bộ điều phối mạng PAN Tất cả mạngnằm trong tầm phủ sóng đều phải có một PAN duy nhất, các nốt trong mạngPAN phải kết nối với (PAN coordinator) bộ điều phối mạng PAN
c Cấu trúc liên kết mạng mắt lưới (mesh)
Hình 1.3: Cấu trúc mạng mesh
Trang 15Kiểu cấu trúc mạng này cũng có một bộ điều phối mạng PAN (PANcoordinator) Thực chất đây là kết hợp của 2 kiểu cấu trúc mạng hình sao vàmạng ngang hàng, ở cấu trúc mạng này thì một thiết bị A có thể tạo kết nối vớibất kỳ thiết nào khác miễn là thiết bị đó nằm trong phạm vi phủ sóng của thiết bị
A Các ứng dụng của cấu trúc này có thể áp dụng trong đo lường và điều khiển,mạng cảm biến không dây, theo dõi cảnh báo và kiểm kê (cảnh báo cháyrừng….)
d Cấu trúc liên kết mạng hình cây
Hình 1.4: Cấu trúc mạng hình cây
Cấu trúc này là một dạng đặc biệt của cấu trúc mắt lưới, trong đó đa sốthiết bị là FFD và một RFD có thể kết nối vào mạng hình cây như một nốt rờirạc ở điểm cuối của nhánh cây Bất kỳ một FFD nào cũng có thể hoạt động như
là một coordinator và cung cấp tín hiệu đồng bộ cho các thiết bị và cáccoordinator khác vì thế mà cấu trúc mạng kiểu này có qui mô phủ sóng và khảnăng mở rộng cao Trong loại cấu hình này mặc dù có thể có nhiều coordinator
Trang 16Bộ điều phối mạng PAN coordinator này tạo ra nhóm đầu tiên cách
tự bầu ra người lãnh đạo cho mạng của mình, và gán cho người lãnh đạo đómột chỉ số nhận dạng cá nhân đặc biệt gọi là là CID-0 bằng cách tự thành lậpCLH (cluster head) bằng CID-0 (cluster identifier), nó chọn một PAN identifierrỗi và phát khung tin quảng bá nhận dạng tới các thiết bị lân cận Thiết bị nàonhận được khung tin này có thể yêu cầu kết nối vào mạng với CLH Nếu bộ điềuphối mạng PAN (PAN coordinator) đồng ý cho thiết bị đó kết nối thì nó sẽ ghitên thiết bị đó vào danh sách Cứ thế thiết bị mới kết nối này lại trở thành CLHcủa nhánh cây mới và bắt đầu phát quảng bá định kỳ để các thiết bị khác có thểkết nối vào mạng Từ đó có thể hình thành được các CLH1, CLH2 …
1.3.3 Thuật toán định tuyến theo yêu cầu AODV
AODV (Ad hoc On Demand Distance Vector) đơn thuần chỉ là thuật toántìm đường theo yêu cầu trong mạng ad hoc (một mạng tự tổ chức) Có thể hiểunhư sau, những nốt trong mạng khi mà không nằm trong tuyến đường truyền tinthì không duy trì thông tin nào về tuyến đường truyền và cũng không tham giavào quá trình định tuyến theo chu kỳ Nói kỹ hơn nữa, một nốt mạng không cóchức năng tự định tuyến và lưu trữ tuyến đường tói một nốt mạng khác cho đếnkhi cả hai nốt mạng trên liên lạc với nhau, trừ trường hợp những nốt mạng cũ
đề nghị dich vụ như là một trạm chuyển tiếp để giữ liên lạc giữa hai nốt mạngkhác
Mục đích đầu tiên của thuật toán là chỉ phát quảng bá các gói tin dò đườngkhi cần thiết hoặc khi có yêu cầu, việc làm này để phân biệt giữa việc quản lýliên lạc cục bộ với việc bảo quản giao thức liên lạc chung và để phát quảng báthông tin về sự thay đổi trong liên kết cục bộ tới những nốt di động lân cận (lànhững nốt cần thông tin để cập nhật) Khi một nốt nguồn cần để kết nối tới nốtkhác, mà nốt nguồn không chứa thông tin về thông tin tuyến đường tới nốt đó,như vậy một quá trình tìm đường được thiết lập
Để thiết lập quá trình tìm đường này thì mỗi nốt mạng đều lưu hai bộ đếmđộc lập: sequence number và broadcast ID Để bắt đầu quá trình tìm đường, nốt
Trang 17nguồn sẽ khởi tạo một gói tin tìm đường (RREQ) và phát quảng bá gói tin nàytới tất cả các nốt mạng lân cận, gói tin RREQ này chứa các thông tin về địa chỉnguồn (source addr), số chuỗi nguồn (source sequence number), số id quảng bá(broadcast id), địa chỉ đích (dest addr), số chuỗi đích (dest sequence number),
số đếm bước truyền (hop cnt)
Bởi mỗi khi nốt mạng nguồn phát ra một gói tìn RREQ mới thì số idquảng bá sẽ tăng lên, nên trong mỗi gói tin RREQ thì cặp địa chỉ nguồn và số
id quảng bá luôn luôn là duy nhất Khi nốt mạng trung gian nhận được một góitin RREQ mới, nó sẽ đem so sánh địa chỉ nguồn và số ID quảng bá với gói tinRREQ trước đó, nếu giống nhau nốt mạng trung gian này sẽ tự động xóaRREQ dư thừa này và dừng việc phát gói tin này lại Nhưng nếu so sánh thấykhác nhau thí nốt mạng này sẽ tự động tăng số đếm bước truyền (hop cnt) lện vàtiếp tục phát quảng bá gói tin RREQ này tới các nốt lân cận để tiếp tục quátrình tìm đường Trong mỗi một nốt mạng đều lưu trữ các thông tin về địa chỉ
IP đích, địa chỉ IP nguồn, số id quảng bá, số chuỗi nốt nguồn, và thời gian thờigian hạn định cho phép gói tin mang thông tin xác nhận được gửi trả lại nơi phát
Khi gói tin RREQ được truyền trên mạng từ nguồn tới đích, nó sẽ tự độngthiết lập con đường ngựơc lại từ các nốt mạng này quay trở lại nốt nguồn Đểthiết lập tuyến đường ngược chiều, mỗi nốt phải lưu giữ bảng địa chỉ của cácnốt bên cạnh mà nó sao chép được trong gói tin RREQ đầu tiên Tuyến đườngngược chiều được giữ trong thời gian tối thiểu để gói tin RREQ này vượt quamạng và trở về nơi xuất phát ban đầu Khi RREQ tới một nốt nào đấy mà có thểnốt mạng này là đích đến của nó, hoặc nốt này nằm trên tuyến đường truyền từnguồn tới đích, nốt nhận tin này đầu tiên sẽ kiểm tra xem gói tin RREQ vừanhận qua kết nối hai chiều Nếu nốt mạng này chưa phải là nốt mạng đích nhưng
có lưu giữ tuyến đường tới nốt đích, khi đó nó sẽ quyết định xem xem tuyếnđường này có chính xác không bằng cách so sánh số chuỗi nguồn chứa bên tronggói tin RREQ này với số chuỗi nguồn trong bảng định tuyến của nốt mạng đó.Nếu số chuỗi đích của RREQ lớn hơn số chuỗi đích trong các nốt trung gian, thì
Trang 18nốt trung gian đó không không nằm trên tuyến đừơng truyến ứng với gói tinRREQ này.
Nếu tuyến đường này có số chuỗi đích lớn hơn hoặc bằng với sốchuỗi đích trong RREQ nhưng có số bước truyền nhỏ hơn, thì nó có thể phátmột gói tin RREP (route reply packet) trở lại nốt mạng đã phát RREQ cho nó.Một gói tin RREP gồm có các trường thông tin sau: trườngđịa chỉ nguồn, trườngđịa chỉ đích, số chuỗi đích, số đếm bước truyền và thời gian sống Khi mà gói tinRREP quay trở lại đựơc nốt nguồn, các nốt mạng dọc theo tuyến đường củaRREP sẽ thiết lập con chỏ hướng tới nốt mạng RREP vừa đến, cập nhật thôngtin timeout (timeout là khoảng thời gian mà một nốt không còn hoạt động nữa vànằm trong trạng thái chờ) của nó cho bảng định tuyến đường tới nguồn và đích,đồng thời sao lưu lại số chuỗi đích cuối của nốt đích cần tới Những nốt mạngnằm dọc theo tuyến đường xác định bởi RREP sẽ “chết” sau khi hết thời gianyêu cầu định tuyến và con trỏ đảo bị xóa khi chúng không còn nằm trên tuyếnđường truyền từ nguồn tới đích Thời gian “chết” này phụ thuộc vào kích cỡ củamạng
Hình 1.5: Định dạng tuyến đường trong giao thức AODV
Nốt nguồn có thể phát dữ liệu ngay khi nó nhận được gói tin RREP đầutiên, đồng thời cũng luôn cập nhật thông tin về tuyến đừơng nếu phát hiện ratuyến đường tối ưu hơn
Trang 19Mỗi bảng định tuyến gồm các trường thông tin sau: trường thông tin vềđích đến, bước truyền kế tiếp, số bước truyền, số chuỗi đích, nút lân cận tíchcực thuộc tuyến đường, thời gian chết cho nhập liệu vào bảng định tuyến.
Để duy trì đường truyền, mỗi nốt mạng luôn phải có địa chỉ của các nốtmạng tích cực lân cận (một nốt mạng được coi là tích cực nếu nó có chức năngkhởi phát hoặc chuyển tiếp tối thiểu một gói tin đến đích trong thời gian chophép) Khi mà bước truyền kế tiếp nằm trong tuyến đường từ nguồn tới đíchnày không thực hiện đựơc (tức là thông tin yêu cầu không được nhận trongmột khoảng thời gian nào đó, thông tin yêu cầu này đảm bảo rằng chỉ có nhữngnốt mạng nào liên lạc hai chiều mới được coi là nốt mạng lân cận) Quá trìnhnày cứ tiếp diễn đến khi tất cả các nốt nguồn tích cực được thông báo Nhờ vàoviệc nhận những thông báo về gián đoạn đường truyền, mà các nốt nguồn cóthể khởi động lại quá trình tìm đường nếu chúng vẫn cần một tuyến đường tớiđích cũ Nếu nốt nguồn lựa chọn việc xây dựng lại tuyến đường mới từ nguồntới đích, nó cần phải phân phát một gói tin RREQ mới với sô chuỗi đích mới lớnhơn số chuỗi đích cũ
a Thuật toán hình cây
Giao thức hình cây là giao thức của tầng mạng và tầng datalink, giao thứcnày sử dụng gói tin “trạng thái kết nối” để định dạng một mạng hình cây đơn,cũng như một mạng hình cây mở rộng Loại mạng này cơ bản là một loạimạng có tính chất tự tổ chức và tự hỗ trợ để hạn chế lỗi mạng một mức độ lỗicho phép, đặc biệt hơn do đây là một loại mạng có tính chất tự tổ chức nên nócũng có thể tự sửa chữa khi gặp sự cố ở một nốt mạng nào đó Các nốt mạngchọn một nốt làm gốc cây và tạo các nhánh cây một cách tự do Sau đó cáchnhánh cây tự phát triển kết nối tới những nhánh cây khác nhờ vào thiết bị gốc(DD- Designated Deviece)
Trang 20b Thuật toán hình cây đơn nhánh
Quá trình hình thành nhánh cây bắt đầu bằng việc chọn gốc cây Sau khimột nốt gốc được chọn, nó sẽ mở rộng kết nối với các nốt khác để tạo thành mộtnhóm
Sau khi một nốt được kích hoạt nó sẽ dò tìm HELLO message từ các nốtkhác (HELLO message tương tự như beacon trong tầng MAC theo chuẩn IEEE802.15.4) Nếu trong một thời gian nhất định nào đó nó không nhận được bất
kỳ một HELLO message nào, thì nốt này sẽ tự trở thành nốt gốc và lại gửiHELLO message tới các nốt lân cận Nốt gốc mới này sẽ chờ gói tin yêu cầu kếtnối từ các nốt lân cận trong một khoảng thời gian nào đó, nếu nó vẫn khôngnhận đựơc bất kỳ yêu cầu kết nối nào từ các nốt lân cận thì nó sẽ trở lại thànhmột nốt bình thường và lại tiếp tục dò tìm HELLO_MESSAGE Nốt gốccũng có thể được chọn lựa dựa trên tham số của mỗi nốt mạng (ví dụ như phạm
vi truyền, công suốt, vị trí, khả năng tính toán)
Hình 1.6: Quá trình chọn nốt gốc (CH)
Sau khi trở thành nốt gốc, nó sẽ phát quảng bá gói tin Hello_Messagetheo chu kỳ, gói tin Hello_Message này gồm một phần địa chỉ MAC và địa chỉ
Trang 21ID của nốt gốc Những nốt mạng nhận đựợc gói tin này sẽ gửi trả lời lại bằnggói tin yêu cầu kết nối (REQ) tới nốt gốc (nơi vừa phát đi) Khi nốt gốc nhậnđựợc gói tin yêu cầu kết nối, nó sẽ ngay lập tức gửi trả lại gói tin vừa đưa rayêu cầu bằng một gói tin khác CONNECTION_RESPONSE gói tin này chứađịa chỉ ID cho nốt thành viên (nốt B), địa chỉ ID này do nốt gốc qui định Để xácnhận thông tin thì nốt thành viên B này sẽ gửi lại nốt gốc gói tin Ack Quá trìnhtrao đổi tin này đựơc mô tả qua hình2.2.
Hình 1.7: Thiết lập kết nối giữa CH và nốt thành viên
Nếu tất cả các nốt đều ở trong phạm vi phủ song của nốt gốc thì kiến trúcmạng là kiến trúc hình sao, tất cả các nốt thành viên sẽ liên lạc trực tiếp với nốtgốc qua một bước truyền (onehop) Một nhánh có thể phát triển thành cấu trúcmạng liên lạc qua nhiều bước truyền (multihop)
Tất nhiên nốt gốc chỉ có thể quản lý được một số hữu hạn các nốt, vàcác nhánh của mạng cũng chỉ có thể vươn tới những khoảng cách hạn chế.Chính vị thế mà có lúc nốt mạng cũng cần phải từ chối kết nối của những nốtmới Việc từ chối này được thực hiện nhờ vào việc chỉ định một ID đặc biệt chonốt này Bảng danh sách các nốt lân cận và tuyến đường luôn luôn được cậpnhật mới thông qua gói tin HELLO_MESSAGE Trong một thời gian nhất
Trang 22định, nếu vì một lý do nào đó mà một nốt không đựợc cập nhật các thông tin trênthì nó sẽ bị loại bỏ.
Hình 1.8: Quá trình hình thành nhánh nhiều bậc
Tất nhiên trong một mạng có tính chất tự do, tự tổ chức như loại mạngnày thì không thể tránh khỏi việc một nốt mạng thuộc nhánh này lại nhậnđựợc gói tin HELLO_MESSAGE của nhánh khác Vậy trong trường hợp nàynốt mạng này sẽ tự động thêm địa chỉ ID của nhánh mới này (CID) vào danhsách các nốt lân cận và gửi nó tới nốt gốc (CH) thông qua gói tin báo cáo tìnhtrạng đường truyền, để từ đó nốt gốc (CH) có thể biết được nhánh mạng nàotranh chấp để xử lý
Bản tin báo cáo tình trạng kết nối cũng chứa danh sách ID nốt lân cận củanốt đó, điều này giúp cho nốt gốc biết đựợc trọn vẹn cấu trúc mạng để có thểđưa ra cấu trúc tối ưu Khi cấu trúc mạng cần thay đổi, nốt gốc (CH) sẽ phát đibản tin cập nhật tới các nốt thành viên Nốt thành viện nào nhận đựợc bản tin cậpnhật này lập tức thay đổi các thông tin về nốt gốc như trong bản tin này, đồngthời cũng tiếp tục gửi đến các nốt ở cấp thấp hơn trong nhánh cây tại thời điểmđó
Trang 23Khi một nốt thành viên có vấn đề, không thể kết nối được thì nốt gốcphải định dạng lại tuyến đường Thông qua bản tin báo cáo tình trạng đườngtruyền được gửi theo chu kỳ thì nốt gốc có thể biết được vấn đề của nốt mạng
đó Nhưng khi nốt gốc gặp phải vấn đề trong liên lạc thì việc phát bản tinHELLO_MESSAGE theo chu kỳ sẽ bị gián đoạn, khi đó các nốt thành viên sẽmất đi nốt gốc, và nhánh đó sẽ phải tự định dạng lại từ đầu theo cách tương tựnhư quá trình định dạng nhánh cây
c Thuật toán hình cây đa nhánh
Để tạo định dạng lên loại mạng này thì cần phải sử dụng thiết bị gốc(DD) Thiết bị này có trách nhiệm gán địa chỉ ID nhóm (địa chỉ này là duynhất) cho các nốt gốc (CH) Địa chỉ ID nhóm này kết hợp với địa chỉ ID nốt (làđịa chỉ NID mà nốt gốc gán cho các nốt thành viên trong nhánh của mình) tạo rađịa chỉ logic và đựợc sử dụng trong các gói tin tìm đường Một vai trò quantrọng nữa của thiết bị gốc DD là tính toán quãng đường ngắn nhất từ nhánhmạng tới DD và thông báo nó tới tất cả các nốt mạng
Hình 1.9: Gán địa chỉ nhóm trực tiếp
Khi thiết bị gốc DD tham gia vào mạng, nó sẽ hoạt động như một nốt
Trang 24các nốt lân cận Nếu một nốt gốc (CH) nhận được bản tin này, nó sẽ gửi bản tinyêu cầu kết nối tới DD để tham gia vào CID 0, sau đó nốt gốc này sẽ yêu cầu
DD gán cho nó một ID nhánh (CID) Như vậy thì nốt gốc này có hai địa chỉlogic, một là thành viên của CID 0, thứ hai là địa chỉ của nốt gốc Khi nốt gốctạo ra một nhánh mới, (một CID mới), nó sẽ thông báo đến các nốt thành viêncủa nó bằng bản tin HELLO_MESSAGE
Hình 1.10 Gán địa chỉ nhóm qua nốt trung gian
Khi một thành viên nhận đựợc bản tin HELLO_MESSAGE từ thiết bị
DD, nó sẽ thêm địa chỉ ID của CID 0 vào danh sách thành viên rồi thông báo chonốt gốc Nốt gốc đựợc thông báo này sẽ chọn nốt thành viên này như là một nốttrung gian giữa nó với nốt gốc của nó, rồi gửi bản tin yêu cầu kết nối mạng tớicác nốt thành viên để thiết lập kết nối với thiết bị DD Nốt trung gian này yêucầu một kết nối và tham gia vào thành viên của nhóm số 0 Sau đó nó sẽ gửi bảntin yêu cầu CID tới thiết bị DD Đến khi nhận đựợc đáp ứng CID, nốt trung giannày gửi bản tin đáp ứng liên kết mạng này tới nốt CH, bản tin này chứa cácthông tin về địa chỉ ID nhánh mới cho nốt gốc CH Sau khi nốt gốc có đựợc CID
Trang 25mới, thì cách thành viên trong nhánh của nốt gốc cũng sẽ nhận đựợc thông quaHELLO_MESSAGE.
Hình 1.11 Gán địa chỉ nhóm qua nốt gốc.
Hình 1.12 Gán địa chỉ nhóm qua nốt gốc và nốt trung gian
Trong mạng này thì việc tự tổ chức mạng là một tính chất khá mạnh mẽ,
và mềm dẻo Cứ nhánh mạng liền trước sẽ có nhiệm vụ gán CID cho nhánhmạng sau
Trang 26Mỗi một nốt thành viên của nhánh phải ghi lại thông tin về nhánh gốc vàcác nhánh con của nó, hoặc cả ID của nốt trung gian nếu có Thiết bị gốc phải cótrách nhiệm lưu giữ toàn bộ thông tin về cấu trúc cây mạng của các nhánh.
Cũng giống như các nốt thành viên của nhánh thì các nốt gốc CH cũng
là thành viên của thiết bị gốc và như vậy chúng cũng phải có trách nhiệm thôngbáo tình trạng đường truyền đến DD Để thực hiện thì nốt gốc phải gửi định
kỳ bản tin thông báo tình trạng đường truyền trong mạng tới DD, bản tin nàychứa danh sách CID lân cận DD sau khi xử lý thông tin sẽ tính toán, chọn lựa rađường truyền tối ưu nhất rồi thông báo định kỳ tới các nhánh của nó thông quabản tin cập nhật
Như trên ta có thể thấy vai trò của thiết bị gốc này là rất quan trọng,chính vì thế luôn cần có những thiết bị gốc dự phòng (BDD) sẵn sang thay thếthiết bị chính khi gặp sự cố
Hình 2.9 mô tả việc liên lạc trong nhánh Các nốt trung gian vừa liênkết các nhánh mạng, vừa chuyển tiếp các gói tin giữa các nhánh mạng Khinốt trung gian nhận đựợc một gói tin, nó sẽ kiểm tra địa chỉ đích của gói tin đó,sau đó sẽ chuyển tới địa chỉ đích của nó nếu địa chỉ đích nằm trong nhánh nàyhoặc là chuyển tiếp tới nốt trung gian tiếp theo của nhánh liền kề nếu địa chỉ đíchkhông nằm trong nhánh của nó
Hình 2.9: Mạng cây đa nhánh và các nốt trung gian
Trang 27Chỉ duy nhất thiết bị gốc mới có thể gửi bản tin tới tất cả các nốt trongmạng, bản tin này đựợc chuyển dọc theo tuyến đường của các nhánh Các nốttrung gian thì chuyển tiếp các gói tin quảng bá từ nhánh gốc đến các nhánh con.
1.4 Tổng quan về Xbee ZB24
1.4.1 Thông số kỹ thuật
Hình 1.13 Hình ảnh Xbee ZB24
- Cự ly truyền thông trong nhà lên tới 30m
- Cự ly truyền ngoài trời lên tới 90m
- Công suất truyền đi là 1mW(dBm)
- Tốc độ truyền dữ liệu RF là 250.000 bps
- Tốc độ dữ liệu giao tiếp nhận nối tiếp là 1200 bps-250 kps
- Độ nhạy thu là -92dBm(1% tỷ lệ gói lỗi)
- Nguồn cung cấp 2.8-3.4V
- Dòng truyền 45mA – 3.3V
- Sử dụng dải tần 2.4 GHz
- Mạng hỗ trợ: Point to Point, Point to MultiPoint, peer to peer
- Dải nhiệt độ hoạt động -40-85 độ C
Trang 283 DIN Input Đầu vào UART
6 PWM0/RSSI output Chân băm xung, chỉ số độ
dài tín hiệu Rx
9 DTR.SLEEP_RQ,DI8 input Điều khiển sleep và đầu ra
13 ON/SLEEP Output Chỉ số trạng thái module
17 AD3 / DIO3 Cả hai tương tự3 và vào ra số 3
18 AD2 / DIO2 Cả hai tương tự2 và vào ra số 2
19 AD1 / DIO1 Cả hai tương tự1 và vào ra số 1
20 AD0 / DIO0 Cả hai tương tự0 và vào ra số 0
Trang 291.4.2 Truyền thông Xbee
a Truyền thông nối tiếp RF
Thiết bị Xbee có thể truyền từ thiết bị này sang thiết bị khác trực tiếp nhưhình dưới đây:
Hình 1.14 Hoạt động truyền thông RF
Như hình trên các Module Xbee giao tiếp với vi điều khiển bởi các chân
DI truyền data, DO nhận data, các cờ báo truyền nhận CTS và RTS Dữ liệu ởđây cũng là dạng truyền thông nối tiếp truyền thống
Hình 1.15 Khung truyền UART
Khung truyền bao gồm 1 bit Start 8 bit data và một 1 stop
a Truyền thông kiểu API
Truyền thông API là giao diện lập trình ứng dụng được ứng dụng cho cácmodule Xbee nâng cao khả năng truyền thông, giảm xác xuất lỗi Có thể mở rộngkhung data tùy ý Khi hoạt động ở chế độ API tất cả dữ liệu vào ra thông quaXbee đều có một khung xác định như quy định Truyền khung dữ liệu ở chânDI(pin3) bao gồm: Khung truyền dữ liệu RF và khung truyền lệnh (ATCommand) Khung dữ liệu nhận ở chân sô 2 DO bao gồm: Khung dữ liệu nhận
RF và lệnh trả về
Trang 30Chế độ API cho phép Xbee hoạt động ở 3 chế độ:
AP=0: đây là chế độ mặc định của Xbee (truyền thông nối tiếp bìnhthường)
AP=1: Hoạt động ở chế độ API
AP=2: Hoạt động ở chế độ API (với ký tự thoát)
Bất kỳ dữ liệu nhận trước khi bắt đầu ký tự phân cách được âm thầm bỏ
đi Nếu khung dữ liệu không nhận được hoặc checksum bị lỗi thì dữ liệu âmthầm được bỏ qua
Hoạt động API ở chết độ 1 (AP=1)
Khi chế độ API được cho phép thì khung dữ liệu được xác định như sau:
Hình 1.16 Cấu trúc khung API chế độ 1
Khung bao gồm 1 byte bắt đầu 0x7E, 2byte độ dài của khung dữ liệu , cácbyte dữ liệu và byte checksum
Chế độ API ở chế độ 2 (AP=2)
Khi hoạt động ở chế độ 2 với ký tự thoát thì khung API được xác định nhưsau:
Hình 1.17 Khung API ở chế độ 2
Trang 31Ký tự thoát: Khi truyền và nhận khung dữ liệu UART, giá trị dữ liệu cụthể phải được đánh dấu như sau: Chèn byte 0x7D trước ký tự cần xác định làthoát và Xor nó với giá trị 0x20 để báo thoát.
Ví dụ khung dữ liệu cần đánh dấu bao gồm:
Khung API có cấu trúc như sau:
Hình 1.18 Cấu trúc cụ thể khung API.
Khung API trong phần khung dữ liệu bao gồm có byte xác định API và dữliệu
Truyền thông với 64 bít địa chỉ
API identifier: 0x00
Một khung RF sẽ gửi đi tới module RF tới module nhận
Trang 32Hình 1.19 API truyền 64 bít địa chỉ
Trong phần khung dữ liệu Byte6-13 chứa địa chỉ của đích muốn gửi đến,nếu muốn truyền kiểu quảng bá thì đặt là 0x000000000000FFFF Byte 14 là tùychọn 0x01 vô hiệu hóa ACK, 0x04 gửi dữ liệu tới tất cả PANID, tất cả thiết bịkhác để là 0
Truyền thông với 16 bít địa chỉ
Giá trị xác định khung là 0x01
Một khung RF sẽ gửi đi tới module RF tới module nhận
Hình 1.20 API truyền 16 bít địa chỉ
Trạng thái truyền
Giá trị xác định của khung API là 0x89
Khi truyền thành công module sẽ gửi trạng thái như khun dưới đây
Trang 33Hình 1.21 Khung trạng thái truyền.
Trang 341.5 Tổng quan về Arduino
Môi trường Arduino được thiết kế đơn giản cho người mới bắt đầu sửdụng Không phải phần mềm hoặc các thiết bị điện tử thực nghiệm Với Arduinobạn có thể xây dựng một dự án đáp ứng được các yêu cầu về điều khiển ánhsáng, âm thành, chuyển động… Arduino được sử dụng để tạo ta rất nhiều thứtuyệt vời như nhạc cụ, robot, điêu khắc ánh sáng, trò chơi, đồ nội thất tương tácthậm chí là quần áo thông minh có khả năng tương tác với cơ thể
Arduino được sử dụng rất nhiều trong các chương trình giáo dục trên toànthế giới, đặc biệt đối với các nhà thiết kế và nghệ sĩ những người muốn tạo ranhững cái mới độc mà không cần am hiểu sâu về vấn đề của kỹ thuật của nhữngthứ mà họ đã sáng tạo ra Bởi vì Arduino được thiết kế sử dụng cho những ngườikhông am hiểu về kỹ thuật, phần mềm Arduino có rất nhiều ví dụ được cung cấpbởi nhà phát triển nên rất dễ dàng để tiếp cận và sử dụng
Mặc dù dễ dàng sử dụng nhưng Arduino có phần cứng được thiết kế rấttinh tế nên các kỹ sư có thể dễ dàng nhúng nó vào trong các ứng dụng nhúng.Người đã sử dụng và phát triển các ứng dụng nhúng bằng vi điều khiển cũng bịthu hút bởi Arduino do khả năng phần cứng tốt và và phần mềm tiện dụng dễdàng cho việc giải quyết các ý tưởng
Arduino được biết đến nhiều nhất là phần cứng của nó, nhưng phải cóphần mềm để lập trình phần cứng Cả phần cứng và phần mềm gọi chung là
“Arduino’’ Sự kết hợp đó cho phép bạn tạo ra các dự án có ý nghĩa và kiểm soátthế giới vật chất Các phần mềm là tự do, mã nguồn mở thông qua một nền tảng.Các board bạn có thể mua với giá rẻ hoặc bạn có thể tự thiết kế với mã nguồnschematic mở Ngoài ra, có một số hoạt động liên quan tới Arduino được giải đápbởi diễn đàn Arduino trên toàn thế giới và Wikimedia gọi chung là sân chơiArduino
a Phần mềm Arduino:
Phần mềm Arduino được gọi là sketches, được tạo ra trên máy tính có tích
hợp môi trường phát triển(IDE) IDE cho phép bạn viết, chỉnh sửa code và
Trang 35chuyển đổi sao cho phần cứng có thể hiểu IDE dung để biên dịch và nạp vàoArduino (quá trình sử lý này gọi là UPLOAD).
Hình 1.24 Phần mềm lập trình Arduino
b Phần cứng Arduino:
Phần cứng Arduino là các board Arduino nơi thực thi các chương trình lậptrình Các board này có thể điều khiển hoặc đáp trả các tín hiệu điện, vì vậy cácthành phần được ghép trực tiếp vào nó để tương tác với thế giới thực để cảmnhận hoặc truyền thông Ví dụ các cảm biến bao gồm các thiết bị chuyển mạch,cảm biến siêu âm, gia tốc Các thiết bị truyền động bao gồm đèn, motor, loa vàcác thiết bị hiển thị