ZigBee có ba mô hình mạng được hỗ trợ là dạng hình sao, dạng hình lưới và dạng hình cây. Tùy theo nhu cầu mà chúng ta sẽ lựa chọn dạng mô hình phù hợp.
- Với dạng hình sao (Star network): tất cả các nút con sẽ liên kết với một nút chủ trung tâm.
- Với dạng hình lưới (Mesh network): mô hình đáng tin cậy và được sử dụng rộng rãi, cho phép tín hiệu truyền liên tục và có thể thay thế nút để đảm bảo không ngắt quản tín hiệu truyền đi.
- Với dạng hình cây (Cluster network): Là một bản mở rộng của hình lưới với độ phủ sóng cao hơn và phức tạp hơn.
Hình 2.2: Mô hình mạng ZigBee [16] 2.1.5. Khả năng truyền tín hiệu
Với công nghệ ZigBee, khả năng truyền giữa hai nút khoảng 50-70m. với khả năng liên kết giữa các nút, ta hoàn toàn có thể mở rộng khả năng truyền.
Dữ liệu sẽ được truyền theo từng gói, mỗi gói sẽ có một khung cô định và có tối đa 128 bytes và cho phép tải xuống tối đa 104 bytes
Tiêu chuẩn này hỗ trợ địa chỉ tối đa lên đến 64bit cũng như địa chỉ ngắn 16bit. Loại địa chỉ 64bit chỉ xác đinh được mỗi thiết bị có cùng một địa chỉ IP duy nhất. Khi mạng được thiết lập thì số lượng địa chỉ sẽ quyết định số lượng nút có thể tồn tại trong một hệ thống.
2.1.6. Các thành phần trong mạng ZigBee
Trong các mạng ZigBee cơ bản sẽ có 3 loại thiết bị là:
- ZigBee Coordinator (ZC): đây là thiết bị gốc, là giao điểm cuối cùng của các nút. Nó quy định địa chỉ của các nút và là thiết bị duy nhất cho phép truyền tín hiệu ra ngoài mạng lưới ZigBee [17].
- ZigBee Router (ZR): đây là bộ định tuyến trung gian có chức năng phát hiện dữ liệu và truyền dữ liệu, ngoài ra nó còn giúp giám sát hoạt động của các nút [17]. - ZigBee End Device (ZED): Gọi là thiết bị điểm cuối và nó sẽ giao tiếp với ZC và
ZR ở gần nó nhất. Chúng có nhiệm vụ đọc thông tin từ các thành phần điều khiển và thực hiện thực thi các hành động [17].
Hình 2.3: Các thành phần trong mạng ZigBee. [17]. 2.1.7. Ưu điểm của ZigBee
Nhờ vào khả năng truyền tải tín hiệu xa và ổn định nên ZigBee được sử dụng rất rộng rãi trong ngành công nghiệp, nông nghiệp có nhu cầu về tự động hóa đặc biệt là trong các hệ thống nhà thông minh. Dưới đây là các ưu điểm lớn khi sử dụng ZigBee:
- Dễ dàng lắp đặt: Việc lắp đặt và cài đặt cấu hình cho các thiết bị dùng ZigBee rất dễ dàng.
- Kết nối internet: Hệ thống có thể kết nối internet thông qua ESP hoặc modole tương tự. Nhờ vậy, bạn có thể dễ dàng điều khiển các thiết bị thông qua kết nối Internet từ bất kỳ đâu trên thế giới. Giúp điều khiển nhà thông minh dễ dàng hơn.
- Tiết kiệm năng lượng: ZigBee tiêu tốn rất ít điện năng cho việc hoạt động nên sẽ giúp tiết kiệm điện tối đa.
- Khả năng mở rộng cực lớn: Như đã đề cập, khoảng cách giữa hai nút có thể lên đến 50-70m. Việc thêm mạng lưới các nút sẽ giúp mở rộng phạm vi điều khiển tạo nên một vùng rộng lớn.
- Sử dụng mã hóa AES-128 với khả năng bảo mật cao.
- Dễ dàng mở rộng: Một hệ thống có thể có hơn 65000 nút [18]. 2.1.8. Nhược điểm của ZigBee
Mặc dù có nhiều ưu điểm nhưng ZigBee cũng có một vài nhược điểm ví dụ như:
- Với một khu vực diện tích quá rộng thì ta sẽ không thể phủ sóng hết bằng ZigBee. Nhu cầu sử dụng không liên tục trong khu vực cũng gây ra bất lợi cho việc sử dụng ZigBee.
- Dễ bị suy hao tín hiệu khi gặp vật cản hoặc các thiết bị gây suy hao tín hiệu khác. - Độ ổn định không bằng thiết bị cáp dẫn trực tiếp. Tuy đây cũng là nhược điểm
chung của tất cả các loại sóng khác [18].
2.2. Các giao thức truyền nhận dữ liệu trong hệ thống IoT 2.2.1. Message Queuing Telemetry Transport (MQTT) 2.2.1. Message Queuing Telemetry Transport (MQTT)
MQTT là một giao thức theo cơ chế xuất bản/đăng ký, ở đó máy client có thể xuất bản hay nhận bản tin. Nó giúp giao tiếp dễ dàng giữa nhiều thiết bị [19].
Nó là một giao thức nhắn tin đơn giản được thiết kế cho các thiết bị bị hạn chế và có băng thông thấp, vì vậy nó là một giải pháp hoàn hảo cho các ứng dụng internet of things [19].
Nó là một giao thức cực kỳ nhẹ cho việc truyền tải bản tin đăng ký/xuất bản. Nó rất hữu ích cho việc kết nối với vị trí ở xa nơi có băng thông không cao.
Đặc điểm MQTT:
- MQTT có một số tính năng độc đáo khó có thể tìm thấy trong các giao thức khác. Dưới đây là một số tính năng của MQTT:
- Nó không yêu cầu cả Client và Server phải thiết lập kết nối cùng một lúc. - Nó cho phép Client đăng ký lựa chọn chủ đề để họ có thể nhận được thông tin
họ đang tìm kiếm nhanh chóng.
- Nó cung cấp truyền dữ liệu nhanh hơn, giống như cách WhatsApp / messenger cung cấp việc phân phối nhanh hơn. Đó là một giao thức nhắn tin thời gian thực.
- Nó được thiết kế như một giao thức nhắn tin đơn giản và nhẹ sử dụng hệ thống xuất bản / đăng ký để trao đổi thông tin giữa Client và Server.
- Nó là một giao thức máy với máy, tức là nó cung cấp giao tiếp giữa các thiết bị.
Kiến trúc MQTT:
- Message: là bản tin được truyền đi bởi giao thức trên toàn mạng cho ứng dụng. Khi bản tin được truyền qua mạng, thì bản tin chứa các thông số sau: Dữ liệu của thông tin muốn truyền, Quality of Service (QoS), Thuộc tính,Tên chủ đề. - Client: Trong MQTT, người đăng ký (subscriber) và người xuất bản
(publisher) là hai vai trò của máy client. Các client đăng ký các chủ đề để xuất bản và nhận bản tin. Nói một cách dễ hiểu, chúng ta có thể nói rằng nếu bất kỳ chương trình hoặc thiết bị nào sử dụng MQTT, thì thiết bị đó được gọi là Client. Một thiết bị là một Client nếu nó mở kết nối mạng với máy chủ, xuất bản các bản tin mà các Client khác muốn xem, đăng ký nhận các bản tin mà nó muốn nhận, hủy đăng ký các bản tin mà nó không muốn nhận và đóng kết nối mạng với máy chủ.
- Server: Thiết bị hoặc một chương trình cho phép khách hàng xuất bản bản tin và đăng ký nhận bản tin. Server chấp nhận kết nối mạng từ Client, chấp nhận các thông báo từ Client, xử lý các yêu cầu đăng ký và hủy đăng ký, chuyển tiếp thông báo ứng dụng đến Client và đóng kết nối mạng từ Client.
- Topic: Nhãn được cung cấp cho bản tin được kiểm tra so với sự đăng ký được biết bởi Servergọi là Topic.
2.2.2. HyperText Transfer Protocol (HTTP)
HTTP là viết tắt của HyperText Transfer Protocol, một giao thức ứng áp dụng cho các hệ thống thông tin siêu phương tiện phân tán, cộng tác, cho phép người dùng giao tiếp dữ liệu trên World Wide Web. Cụ thể hơn, HTTP là một giao thức yêu cầu/phản hồi không trạng thái, nơi các Client yêu cầu thông tin từ Server và Server sẽ phản hồi các yêu cầu này theo đó (mỗi yêu cầu độc lập với yêu cầu khác). Nó cho phép tìm nạp các tài nguyên, chẳng hạn như tài liệu HTML [19].
Dữ liệu HTTP truyền trên giao thức TCP, đảm bảo độ tin cậy của việc phân phối và chia nhỏ các yêu cầu và phản hồi dữ liệu lớn thành các phần mạng có thể quản lý được [19].
Đây là cách nó hoạt động: lúc đầu, client gửi một gói SYN đến Server và sau đó Server sẽ phản hồi với gói SYN-ACK để xác nhận việc nhận thành công. Tiếp theo, Client lại gửi một gói ACK, bao gồm một thiết lập kết nối – điều này cũng thường được gọi là bắt tay 3 bước. Ngoài ra, Client gửi một yêu cầu HTTP đến Server để tìm tài nguyên và đợi nó phản hồi một yêu cầu. Sau đó webserver sẽ xử lý yêu cầu, tìm tài
nguyên và gửi phản hồi đến Client. Nếu Client không yêu cầu thêm tài nguyên, nó sẽ gửi gói FIN để đóng kết nối TCP [19].
Giao thức HTTP được sử dụng để khởi động World Wide Web để truyền dữ liệu dưới dạng văn bản, âm thanh, hình ảnh và video từ Server đến trình duyệt web của người dùng và ngược lại. HTTP hiện là nền tảng truyền dữ liệu của ứng dụng duyệt web ngày nay và được sử dụng rộng rãi trong hệ thống Internet of Things. Mặc dù giao thức Http có nhiều nhược điểm trong việc truyền dữ liệu và không phù hợp bằng các giao thức tối ưu khác như MQTT, CoAP, AMQP sử dụng cho IoT, nhưng giao thức này vẫn phổ biến trong lĩnh vực nhà thông minh cũng như việc sử dụng nhiều trong bộ vi điều khiển và vi xử lý tiên tiến. Ví dụ, các hệ thống dựa trên thế hệ Raspberry Pi mới sử dụng giao thức http để truyền dữ liệu. Arduino cũng sử dụng giao thức này để giao tiếp với các thiết bị khác. Bên cạnh đó, có thêm 3 phiên bản mới của http ra đời nhằm bù đắp những nhược điểm của phiên bản cũ và được áp dụng cho những trường hợp người điều khiển mong muốn [19].
Hình 2.4. Dữ liệu truyền qua internet bằng giao thức HTTP. 2.2.3. Constrained Application Protocol (CoAP)
CoAP là một giao thức đơn giản chi phí thấp được thiết kế riêng cho các thiết bị hiệu năng thấp (chẳng hạn như vi điều khiển) và nơi mạng có băng thông thấp. Giao thức này được sử dụng để trao đổi dữ liệu M2M và rất giống với HTTP [19].
Mô hình tương tác CoAP tương tự như mô hình Client/Server của HTTP.CoAP sử dụng cấu trúc 2 lớp. Lớp dưới là lớp bản tin được thiết kế liên quan đến UDP và chuyển tiếp không đồng bộ, Lớp yêu cầu/phản hồi liên quan đến phương thức giao tiếp và xử lý bản tin yêu cầu/phản hồi [19].
Mô hình bản tin CoAP:Lớp bản tin hỗ trợ 4 loại bản tin: CON (có thể xác nhận), NON (không thể xác nhận), ACK (đã xác nhận), RST (đặt lại).
- Truyền tải bản tin tin cậy: Một bản tin có thể xác nhận (CON) được truyền đi truyền lại cho đến khi Server gửi lại bản tin xác nhận (ACK) với cùng một ID. Sử dụng thời gian chờ mặc định và giảm thời gian đếm theo cấp số nhân khi truyền bản tin CON. Nếu Server không thể xử lý bản tin truyền đến, nó sẽ phản hồi bằng cách thay thế bản tin xác nhận (ACK) bằng bản tin đặt lại (RST).
- Truyền tải bản tin không tin cậy: Một bản tin không yêu cầu gửi tin cậy, có thể được gửi bằng bản tin không tin cậy. Nó sẽ không được xác nhận, nhưng nó vẫn có ID để phát hiện trùng lặp.
Ứng dụng CoAP cho nhà thông minh:
- Thiết bị thông tin, thiết bị điều khiển và thiết bị truyền thông trong mạng nhà thông minh có đặc điểm là chi phí thấp và nhẹ. Do đó, CoAP có thể được coi là sự lựa chọn giao thức tốt nhất cho mạng truyền thông gia đình.
- Mạng nhà thông minh cung cấp khả năng điều khiển và giám sát năng lượng tiêu thụ của các thiết bị trong nhà. Hệ thống kiểm soát năng lượng sử dụng ổ cắm thông minh để giám sát thiết bị tiêu thụ điện năng để cung cấp thông tin điện áp, dòng điện và năng lượng khác. Nó có thể nhận ra cảnh báo mất an toàn, điều khiển từ xa và tiết kiệm năng lượng chủ động. Mọi nút thu thập dữ liệu với Client, CoAP có thể trao đổi thông tin với các nút khác. CoAP có thể được cài đặt trong mạng LAN hoặc Internet. Không giống như nhiều giao thức không dây cho các thiết bị tự động trong gia đình, CoAP được thiết kế không bị giới hạn trong mạng cục bộ mà cung cấp nền tảng cơ bản của web.
- Trong hệ thống trên, các nút thu thập dữ liệu bao gồm một proxy, ổ cắm thông minh và mô-đun thu thập dữ liệu không dây. Thông tin năng lượng và thông tin môi trường của thiết bị được ổ cắm thông minh thu thập và chuyển đến mô-đun thu thập dữ liệu thông qua kênh không dây, sau đó gửi dữ liệu nối tiếp đến proxy để xử lý và đóng gói dữ liệu. Server điều khiển phân tích tất cả dữ liệu và lưu trữ chúng trong cơ sở dữ liệu. Hệ thống tích hợp mạng gia đình và Internet, người dùng có thể truy cập trang web của hệ thống để điều khiển từ xa công tắc, quản lý cấu hình, truy vấn mức tiêu thụ năng lượng, v.v.
Hình 2.5. Dữ liệu truyền qua internet bằng giao thức CoAP [19]. 2.3. Các phần cứng trong đề tài
2.3.1. Arduino Nano
Arduino Nano là một trong những phiên bản của board Arduino. Arduino Nano sử dụng MCU ATmega328P làm vi điều khiển trung tâm. Nhờ việc sử dụng IC dán của ATmega328P thay cho IC cắm trên Aruino Uno nên Arduino nana được mở rộng them hai chân Analog. Các số liệu tham khảo ở bảng 2.1:
Arduino Nano có 14 cổng in/out digital. Với mức điện áp làm việc tối đa là 5V. Mỗi chân có thể cung cấp hoặc nhận dòng điện 40mA và có điện trở kéo lên đến 50kΩ. Các chân có thể được sử dụng làm đầu vào hoặc đầu ra, sử dụng các hàm cơ bản pinMode(), digitalWrite () và digitalRead ().
Arduino nano có 6 chân đầu vào tương tự nhưng Arduino Nano có 8 đầu vào tương tự (19 đến 26), được đánh dấu A0 đến A7. Như vậy, bạn có thể kết nối tối đa 8 kênh đầu vào tương tự để xử lý. Mỗi chân tương tự này có một ADC có độ phân giải 1024 bit (do đó nó sẽ cho giá trị 1024). Theo mặc định, các chân được đo từ mặt đất đến 5V. Tuy nhiên chúng ta có thể sử dụng điện áp tham chiếu từ 0 đến 3.3V bằng cách kết nối với nguồn 3.3V cho chân AREF (pin thứ 18) và sử dụng chức năng analogReference (). Tương tự như các chân digital trong Nano, các chân analog cũng có một số chức năng khác.
Hình 2.6. Giới thiệu Arduino nano [10].
Arduino Nano Thông số kỹ thuật
Số chân analog I/O 8
Cấu trúc AVR
Tốc độ xung 16 MHz
Dòng tiêu thụ I/O 40 mA
Số chân Digital I/O 22
Bộ nhớ EEPROM 1KB
Bộ nhớ Flash 32 KB of which 2 KB used by
Bootloader
Điện áp ngõ vào (7-12) volts
Vi điều khiển ATmega328P
Điện áp hoạt động 5V
Kích thước bo mạch 18 x 45 mm
Nguồn tiêu thụ 19mA
Ngõ ra PWM 6
SRAM 2KB
Cân nặng 7 gms
2.3.2. ESP 8266
Kít ESP8266 node Mcu phát triển dựa trên nền chíp Wifi SoC ESP8266 được tích hợp sẵn mạch nạp sử dụng chíp CP2102 trên borad. ESP8266 có sẵn một lõi vi sử lý chính vì thế mà người dùng có thể lập trình cho cho ESP8266 mà không cần thêm bất kì vi xử lý nào nữa. Có hai ngôn ngữ dùng để lập trình cho ESP8266, sử dụng phần mềm IDE của Arduino để lập trình nhờ sự hỗ trợ của bộ thư viện riêng hoặc có thể sử dụng phần mềm node MCU [21].
Hình 2.7. Giới thiệu ESP 8266 Node Mcu [21].
ESP 8266 Thông số kỹ thuật
Microcontroller ESP8266 Tensilica 32-bit
Serial to USB Converter CP2102
Operating Voltage 3.3V
Input Voltage (recommended) 7-12V
PWM I/O Pins (Shared with Digital I/O) 10
Analog Input Pins 1(10-bit)
DC Current per I/O Pin 12mA (Max)
Hardware Serial Ports 1
Flash Memory 4 MBytes
Instruction RAM 64 KBytes
Data RAM 96 KBytes
Clock Speed 80MHz
Network IEEE 802.11 b/g/n WiFi
Built-in LED Attached to digital pin 13
USB Connector Style Micro-B Female
Bảng 2.2: Thông số kỹ thuật ESP 8266 Node Mcu. [21]. 2.3.3. Mạch thu phát RF ZigBee CC2530
Mạch sử dụng IC CC2530 từ TI, được lập trình sẵn firmware, chúng ta sẽ phải cài đặt kênh, tốc độ baud và lập trình nhúng vào theo nhu cầu và mục đích sử dụng. Module ZigBee sẽ giao tiếp với module ZigBee khác bằng giao thức ZigBee, Module giao tiếp với vi điều khiển bằng giao thức Uart [22].
Các cấu hình cho mạch thu phát RF ZigBee CC2530:
Bước 1: Không cấp nguồn, nhấn giữ phím key, sau đó cấp nguồn, quan sát 4 led