Giới thiệu các linh kiện được sử dụng

Một phần của tài liệu Nghiên cứu thiết kế nút cảm biến không dây sử dụng công nghệ zigbee (Trang 44 - 63)

2.2.3.1. Module XBee ZB

Thông số kỹ thuật của module XBee Series 2

Module XBee ZB series 2 sử dụng một vi mạch từ Ember Networks cái mà cho phép vài tiêu chuẩn khác nhau dựa vào kết nối mạng lưới ZigBee. Kết nối mạng lưới là trung tâm của việc tạo ra các mạng lưới mạnh mẽ, hệ thống cái mà có thể sinh ra rất nhiều bộ dữ liệu phong phú hoặc hỗ trợ tương tác phúc tạp quy mô của con người. Trong đề tài này sẽ sử dụng độc phần cứng module XBee ZB series 2.

36

Hình 2.9. Module XBee ZB Series 2.

Một số đặc điểm kỹ thuật của module XBee ZB series 2: + Cự ly truyền thông trong nhà lên tới 40m.

+ Cự ly truyền ngoài trời lên tới 120m. + Công suất truyền đi là 2mW.

+ 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ên tới 3500 bps. + Độ nhạy thu là -96dBm (1% tỷ lệ gói lỗi).

+ Nguồn cung cấp 2.1-3.6V. + ITruyền 40mA – 3.3V. + INhận 40mA – 3.3V. + Itrạng thái nghỉ: 15 mA.

+ Sử dụng băng tần: ISM 2.4 GHz.

+ Hỗ trợ cấu trúc liên kết mạng: Point to Point, Point to MultiPoint, peer to peer, Mesh.

+ Module lập trình XBee ZB series 2 được trang bị một bộ xử lý ứng dụng MC9S08QE32 với 32 KB bộ nhớ Flash và 2 KB RAM.

37

 Định tuyến gói tin RF sử dụng trong module XBee

a) Định tuyến mạng lưới AODV

ZigBee dùng định tuyến mạng lưới để thiết lập một tuyến đường giữa thiết bị nguồn và thiết bị đích. Định tuyến mạng lưới cho phép các gói tin dữ liệu đi qua nhiều nút (nhiều bước nhảy) trong một mạng để tuyến đường dữ liệu từ một nguồn tới một đích. Những Router và Coordinator có thể tham gia trong thiết lập các tuyến đường giữa thiết bị nguồn và thiết bị đích sử dụng một quá trình gọi là khám phá đường đi. Quá trình khám phá đường đi là dựa trên giao thức AODV [8].

38

Hình 2.10. Một truyền dẫn đơn trong mạng lưới.

Thuật toán định tuyến AODV (Ad-hoc On-demand Distance Vector)

Định tuyến trên giao thức AODV thì thực hiện bằng cách sử dụng các bảng trong mỗi nút cái mà lưu trữ các bước nhảy tiếp theo (nút trung gian giữa nguồn và các nút đích) cho một nút đích. Nếu một bước nhảy tiếp theo là không biết, khám phám đường đi phải diễn ra hợp lệ để tìm ra một con đường. Vì chỉ có giới hạn một số các tuyến đường có thể lưu trữ trên một Router, khám phá tuyến đường sẽ diễn ra thường xuyên hơn trên một mạng lớn với thông tin liên lạc giữa nhiều nút khác nhau.

Khi một nút nguồn phải tìm ra một tuyến đường để đến một nút đích, nó gửi một quảng bá lệnh yêu cầu đường đi. Lệnh yêu cầu đường đi bao gồm địa chỉ mạng nguồn, địa chỉ mạng đích và một trường chi phí tuyến đường (một thước đo cho việc đo lường chất lượng tuyến đường). Như các lệnh yêu cầu đường đi thì lan

39

truyền qua mạng, mỗi nút đó quảng bá lại tin nhắn cập nhập trường chi phí đường đi và tạo ra một mục tạm thời trong trong bảng khám phám đường đi của nó.

Hình 2.11. Yêu cầu đường đi mẫu truyền khi R3 đang thử tìm ra một tuyến đường tới R6.

Khi nút đích nhận một yêu cầu đường đi, nó so sánh trường “chi phí đường đi” ngược lại trước đây nhận những lệnh yêu cầu đường đi. Nếu chi phí đường đi lưu trữ trong yêu cầu tuyến đường là tốt hơn so với bất kỳ trước đây nhận, nút đích sẽ truyền một gói tuyến đường trả lời đến các nút nguồn gốc mà có yêu cầu đường đi. Các nút trung gian tiếp nhận và chuyển tiếp gói tin tuyến đường trả lời đến nút nguồn (nút mà yêu cầu đường đi).

40

Thử lại và xác nhận

ZigBee bao gồm các gói xác nhận tại cả lớp MAC và lớp hỗ trợ ứng dụng. Khi dữ liệu truyền đến một thiết bị từ xa, nó có thể đi qua nhiều bước nhảy để đạt tới đích. Khi dữ liệu được truyền từ một nút đến hàng xóm của nó, một gói xác nhận (Ack) thì truyền theo hướng ngược lại để cho biết rằng việc truyền tải đã được nhận thành công. Nếu Ack không nhận được, thiết bị truyền sẽ truyền lại dữ liệu, lên tới 4 lần. Ack này thì được gọi là xác nhận lớp MAC.

Ngoài ra, thiết bị cái mà nguồn gốc truyền dẫn hy vọng sẽ nhận một gói tin xác nhận (Ack) từ thiết bị đích. Ack này sẽ đi qua cùng một con đường cái mà dữ liệu đi qua, nhưng theo hướng ngược lại. Nếu người khởi tạo không nhận được Ack này, nó sẽ truyền lại dữ liệu, lên đến 2 lần chỉ khi một xung Ack là nhận được. Ack này được gọi là xác nhận lớp APS ZigBee.

b) Định tuyến many-to-one (adsbygoogle = window.adsbygoogle || []).push({});

Trong mạng nơi nhiều thiết bị phải gửi dữ liệu đến một thiết bị thu trung tâm hoặc một thiết bị gateway. Nếu mỗi thiết bị trong mạng đã phát hiện ra một đường đi trước khi nó có thể gửi dữ liệu đến thiết bị nhận dữ liệu, mạng có thể dễ dàng trở nên bị ngập với những thông báo khám phá ra tuyến đường quảng bá.

Định tuyến many to one là một sự tối ưu hóa cho các loại mạng. Thay vì đòi hỏi mỗi thiết bị phát hiện ra đường đi riêng của nó, một và chỉ một truyền dẫn quảng bá many-to-one là gửi từ thiết bị thu dữ liệu để thiết lập những tuyến đường ngược lại trên tất cả các thiết bị. Điều này được thể hiện ở hình bên dưới.

41

Phía bên trái cho thấy nhiều quảng bá các thiết bị có thể gửi khi các nút tạo ra những tuyến đường riêng của nó và những tuyến đường trả lời tạo ra bởi thiết bị thu dữ liệu. Bên phải cho thấy những lợi ích của định tuyến many-to-one nơi một quảng bá duy nhất tạo ra các tuyến đường ngược lại để thu thập dữ liệu trên tất cả các Router.

Quảng bá many-to-one là một tin nhắn yêu cầu tuyến đường với mục đích tìm ra địa chỉ thiết lập địa chỉ của thiết bị thu dữ liệu. Những thiết bị đó nhận được yêu cầu tuyến đường này tạo ra một mục trong bảng định tuyến many-to-one, ngược lại để tạo ra một con đường quay lại thiết bị thu dữ liệu. Ngăn xếp ZigBee trên một thiết bị sử dụng lịch sử chất lượng liên kết thông tin về mỗi hàng xóm để lựa chọn một hàng xóm đáng tin cậy cho các tuyến đường ngược lại.

Khi một thiết bị gửi dữ liệu đến một thiết bị thu dữ liệu và nó tìm kiếm một tuyến đường trong bảng định tuyến của nó, nó sẽ truyền dữ liệu mà không biểu diễn một khám phá tuyến đường. Yêu cầu tuyến đường many-to-one nên được gửi định kỳ để cập nhập và làm mới các tuyến đường ngược lại trong mạng.

Những ứng dụng đó đòi hỏi nhiều thiết bị thu dữ liệu cũng có thể sử dụng định tuyến many-to-one. Nếu nhiều hơn một thiết bị thu thập dữ liệu gửi một quảng bá many-to-one, những thiết bị sẽ tạo ra một mục trong bảng định tuyến ngược lại cho mỗi nhà sưu tập.

Trong firmware ZB, lệnh AR thì sử dụng để cho phép quảng bá many-to-one trên một thiết bị. Lệnh AR thiết lập một khoảng thời gian (phạm vi trong 10 giây đơn vị) để gửi truyền quảng bá many-to-one.

c) Định tuyến source

Trong các ứng dụng nơi một thiết bị phải truyền dữ liệu đến nhiều điều khiển từ xa, Định tuyến AODV sẽ yêu cầu thực hiện một khám phá tuyến đường cho mỗi thiết bị đích để thiết lập một tuyến đường. Nếu có nhiều hơn các thiết bị đích thì có các mục trong bảng định tuyến. Thành lập các tuyến đường AODV sẽ được ghi đè với các tuyến đường mới gây nên những khám phá tuyến đường xảy ra thường xuyên hơn. Điều này dẫn đến gói tin lớn hơn bị trễ và hiêu suất mạng nghèo nàn.

42

Định tuyến nguồn ZigBee giúp giải quyết những vấn đề này. Ngược lại để định tuyến many-to-one đó thiết lập những đường đi định tuyến từ nhiều thiết bị đến một thiết bị thu dữ liệu, định tuyến nguồn cho phép các thiết bị thu được lưu trữ và xác định các tuyến đường cho nhiều các nút từ xa.

Để sử dụng định tuyến nguồn, một thiết bị phải sử dụng firmware API, và nó phải gửi định kỳ quảng bá yêu cầu tuyến đường many-to-one (lệnh AR) để tạo ra một tuyến đường đến nó trên tất cả các thiết bị. Khi thiết bị từ xa gửi dữ liệu RF sử dụng một tuyến đường many-to-one, họ lần đầu tiên gửi một truyền dẫn bản ghi tuyến đường. Truyền dẫn bản ghi tuyến đường là truyền điểm – điểm, dọc theo tuyến đường many-to-one chỉ khi nó đi đến thiết bị thu dữ liệu. Như là tuyến đường bản ghi đi qua tuyến đường many-to-one, nó gắn vào địa chỉ 16 bit của từng thiết bị trong tuyến đường vào tải trọng RF. Khi bản ghi tuyến đường đi đến thiết bị thu dữ liệu, nó gồm có địa chỉ của người gửi và địa chỉ 16 bit của mỗi bước nhảy trong tuyến đường. Thiết bị thu dữ liệu có thể lưu trữ thông tin định tuyến và lấy lại nó sau này để gửi một gói tin được định tuyến nguồn đến thiết bị từ xa. Điều này được thể hiên trong hình bên dưới:

Hình 2.14. Mô hình định tuyến source.

Sự hoạt động API

Truyền thông API là giao diện lập trình ứng dụng được ứng dụng cho các module XBee nâng cao khả năng truyền thông, giảm xác xuất lỗi. Có thể mở rộng

43

khung data tùy ý. Khi hoạt động ở chế độ API tất cả dữ liệu vào ra thông qua XBee đều có một khung xác định. Truyền khung dữ liệu ở chân DI (pin3) bao gồm: Khung truyền dữ liệu RF và khung truyền lệnh (AT Command). 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ề.

Chế độ API cho phép XBee hoạt động ở 2 chế độ [8]: 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 âm thầm được bỏ qua.

a) Độ dài của khung

Trường độ dài có một giá trị 2 byte cái mà chỉ rõ số byte mà sẽ được chứa đựng trong trường dữ liệu khung. Nó không bao gồm trường checksum.

b) Khung dữ liệu

Khung dữ liệu của khung dữ liệu UART tạo thành một cấu trúc API cụ thể như sau:

Hình 2.15. Khung dữ liệu UART và cấu trúc API cụ thể.

Khung dữ liệu bao gồm khung cmdID (API - identifier) và khung cmdData (Identifier-specific data). Module XBee hỗ trợ những khung API như sau:

44

Bảng 3. Các khung API trong module XBee

c) Checksum (adsbygoogle = window.adsbygoogle || []).push({});

Để kiểm tra toàn vẹn dữ liệu, một checksum được tính toán và xác minh trên dữ liệu không thoát.

Để tính toán: không bao gồm phân tách và độ dài, thêm tất cả các byte duy

trì chỉ khi 8 bit thấp của kết quả và trừ kết quả với 0xFF.

Để xác minh: thêm tất cả các byte (bao gồm checksum nhưng không có

phân tách và độ dài). Nếu checksum là đúng, tổng sẽ băng 0xFF.

Vì bài toán đặt ra trong đề tài này là thu thập giá trị nhiệt độ của các nút cảm biến trong khu vực nông nghiệp công nghệ cao nên em lựa chọn khung API có kiểu khung là: 0x92. Cấu trúc của khung bao gồm 22 byte được sử dụng, trong đó byte đầu tiên là byte bắt đầu có giá trị 0x7E, byte 2, 3 cho biết độ dài của khung và giá trị của nó bằng 0x0014 (20 byte), byte 4 là kiểu khung 0x92, 8 byte tiếp theo là địa chỉ 64 bit của thiết bị nguồn (nút nhận), 2 byte tiếp theo là địa chỉ 16 bit của nút gửi. Byte 21, 22 là đọc giá trị ADC của các chân analog trên module XBee.

45

Hình 2.16. Cấu trúc của khung chỉ số Rx mẫu dữ liệu IO ZigBee. 2.2.3.2. Arduino Nano

Arduino Nano là bản thu nhỏ của các bản như Arduino Uno R3 và các loại Arduino khác, Arduino Nano được thiết kế để sử dụng với breadboard nhưng vẫn đầy đủ chức năng. Arduino Nano là board mạch điều khiển dựa trên vi điều khiển ATmega328-AU, nhỏ gọn, đầy đủ, và tiện dụng khi sử dụng với breadboard. Nó gồm có tất cả 30 chân trong đó có 14 chân I/O số (trong đó có 6 chân có thể được sử dụng là đầu ra PWM), 8 đầu vào tương tự, 1UART (cổng nối tiếp), sử dụng dao động thạch anh 16MHz, có kết nối USB và có điện áp đầu ra 3.3V để ghép nối với các IC hoặc hệ thống sử dụng điện áp thấp.

46

Hình 2.17. Arduino Nano.

Arduino Nano có bootloader nên có thể nạp chương trình trực tiếp từ phần mềm lập trình Arduino lên board thông qua kết nối USB.

Một số thông số chính Arduino Nano: Điện áp vào (khuyên dùng) 6-9V

Chân I/O số 14 (Gồm 6 chân có thể là đầu ra PWM)

Chân tương tự 8 Flash Memory 32 KB SRAM 2 KB EEPROM 1 KB Tần số dao động 16 MHz 2.2.3.3. Cảm biến nhiệt độ LM335

Cảm biến TMP36 là một cảm biến nhiệt độ điện áp thấp. Mà ngõ ra điện áp là tuyến tính theo tỉ lệ với nhiệt độ C và nhiệt độ K [9]. TMP36 không yêu cầu phải có thêm mạch tinh chỉnh bên ngoài để cung cấp độ chính xác ở nhiệt độ phòng.

47

Hình 2.18. Cảm biến nhiệt độ TMP 36.

Các tính năng của TMP 36:

+ Điện áp nuôi: từ 2.7 V đến 5.5 V. + Hệ số tỷ lệ ngõ ra: 10mV/oC.

+ Dải nhiệt độ đo: 400Cđến 1250C. + Cường độ dòng điện cung cấp: 50 µA.

+) Tính toán nhiệt độ

Ta có ở nhiệt độ 25oC thì điện áp đầu ra U (mV) = 750 mV.

Hình 2.19. Điện áp ra và nhiệt độ của cảm biến TMP 36 [9].

Ta có công thức nhiệt độ như sau : t + 50 oC = U (mV)/K (1) Trong đó:

+ t là nhiệt độ môi trường [K]

+ K là hệ số tỷ lệ đầu ra của TMP36: K = 10mV/°C Ta có hàm truyền sau:

48

Hình 2.20. Hàm truyền tính toán giá trị nhiệt độ.

Từ hàm truyền trên ta có : U (mV) = t*K (2) Thay (1) vào (2) ta được: U (mV)= (t + 50oC)*10mV/°C (3) (adsbygoogle = window.adsbygoogle || []).push({});

Trong XBee có ADC = 10 bit. Mà giá trị đầu vào analog không thể đọc lớn hơn 1.2 V.

Ta có bước thay đổi: n = 1200 1023 mV

Giá trị ADC đo được từ giá trị điện áp đầu vào:

ADC_value = U/n = ((t+50oC)*10 mV/°C)/1200

1023 mV (4) Suy ra giá trị nhiệt độ đo được: t = (ADCvalue*1200)/(10*1023) – 50 (5)

Sai số của hệ thống đo

+ Tại 0 độ C thì điện áp của TMP 36 là 500 mV. + Tại 100 độ C thì điện áp của TMP là 1500 mV.

=> Giải điện áp ADC biến đổi là: 1500 - 500 = 1000 (mV). (6) + ADC 10 bit nên bước thay đổi của ADC là : n = 1200

1023 (mV). (7) Vậy sai số của hệ thống đo là : Y = (1.17/1000)*100 = 0.117 %. (8)

2.2.3.4. Phần mềm X-CTU

Đối với lập trình mỗi nút trong đề tài này sử dụng phần mềm X-CTU phiên bản 6.2.0 được cung cấp miễn phí bởi Digi International [10]. Với phần mềm này người dùng có thể cập nhập các thông số, nâng cấp firmware và thực hiện các thử nghiệm truyền thông một cách dễ dàng.

49

Điểm nổi bật của X-CTU bao gồm các tính năng sau đây:

+ Có thể quản lý và cấu hình nhiều thiết bị RF, thậm chí thiết bị kết nối từ xa (over-the-air).

+ Quá trình cập nhập firmware liên tục khôi phục các thiết lập module, tự động xử lý các chế độ và thay đổi tốc độ truyền.

Một phần của tài liệu Nghiên cứu thiết kế nút cảm biến không dây sử dụng công nghệ zigbee (Trang 44 - 63)