NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT (Luận văn thạc sĩ)
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - Nguyễn Minh Thành NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT LUẬN VĂN THẠC SĨ KỸ THUẬT (Theo định hướng ứng dụng) HÀ NỘI - 2020 HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - Nguyễn Minh Thành NGHIÊN CỨU VÀ ỨNG DỤNG GIAO THỨC TRUYỀN THÔNG MQTT TRONG IOT Chuyên Ngành : Kỹ thuật Viễn thông Mã Số : 8.52.02.08 LUẬN VĂN THẠC SĨ KỸ THUẬT (Theo định hướng ứng dụng) NGƯỜI HƯỚNG DẪN KHOA HỌC: TS HOÀNG TRỌNG MINH HÀ NỘI – 2020 i LỜI CAM ĐOAN Tôi xin cam đoan luận văn kết nghiên cứu riêng Việc sử dụng kết quả, trích dẫn tài liệu tham khảo tạp chí, trang web tham khảo đảm bảo theo quy định Các nội dung trích dẫn tham khảo tài liệu, sách báo, thông tin đăng tải tác phẩm, tạp chí trang web theo danh mục tài liệu tham khảo luận văn Tối xin chịu hoàn toàn trách nhiệm cho lời cam đoan Tác giả luận văn Nguyễn Minh Thành ii LỜI CẢM ƠN Đầu tiên xin trân trọng gửi lời cảm ơn sâu sắc đến quý thầy cô trường Học viện Cơng nghệ Bưu Viễn thơng thời gian qua dìu dắt tận tình truyền đạt cho em kiến thức, kinh nghiệm vô quý báu mà em có kết ngày hơm Xin trân trọng cảm ơn TS Hoàng Trọng Minh, người hướng dẫn khoa học luận văn, hướng dẫn tận tình giúp đỡ mặt để hoàn thành luận văn Xin trân trọng cảm ơn quý thầy cô Khoa Đào tạo sau đại học hướng dẫn giúp đỡ em trình thực luận văn Cuối biết ơn tới gia đình, bạn bè người thân động viên, giúp đỡ tác giả suốt trình học tập thực luận văn Xin trân trọng cảm ơn! Hà Nội, ngày 11 tháng 05 năm 2020 Học viên thực Nguyễn Minh Thành iii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN .ii MỤC LỤC iii DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT v DANH MỤC CÁC BẢNG v DANH MỤC CÁC HÌNH VẼ vii LỜI MỞ ĐẦU .1 CHƯƠNG 1: TỔNG QUAN HỆ THỐNG IOT 1.1 GIỚI THIỆU CHUNG .4 1.2 MƠ HÌNH KIẾN TRÚC VÀ THÀNH PHẦN IOT 1.3 CÁC ẢNH HƯỞNG CỦA IOT TỚI CUỘC SỐNG 1.3.1 Hệ sinh thái IoT 1.4 MỘT SỐ ỨNG DỤNG CƠ BẢN CỦA IOT 11 1.4.1 Tóm tắt ứng dụng IoT 11 1.4.2 ứng dụng tiêu biểu 15 1.5 KẾT LUẬN CHƯƠNG 16 CHƯƠNG 2: ĐẶC TÍNH CHUẨN GIAO THỨC TRUYỀN THÔNG MQTT 17 2.1 CÔNG NGHỆ MẠNG TRUYỀN THÔNG ZIGBEE 17 2.1.1 Giới thiệu công nghệ Zigbee .17 Cấu hình mạng truyền thơng Zigbee 19 2.2 KIẾN TRÚC GIAO THỨC MQTT 25 2.2.1 Giới thiệu chung 25 Kiến trúc giao thức .26 2.3 CÁC ĐẶC TRƯNG CỦA MQTT 28 Mơ hình Xuất bản/Theo dõi .28 2.4 QUY TRÌNH HOẠT ĐỘNG CỦA MQTT .30 iv 2.4.1 Thiết lập kết nối đăng kí theo dõi 30 2.5 KẾT LUẬN CHƯƠNG 35 CHƯƠNG 3: ỨNG DỤNG GIAO THỨC MQTT TRONG IOT 36 3.1 GIỚI THIỆU GIAO THỨC MQTT - SN 36 3.2 KIẾN TRÚC GIAO THỨC MQTT-SN 38 3.3 MƠ HÌNH KIẾN TRÚC VÀ LỰA CHỌN THAM SỐ 46 3.3.1 Mơ hình hệ thống 46 3.3.2 Lựa chọn thư viện MQTT 48 3.3.3 Lựa chọn tính bảo mật 50 3.4 CÁC THIẾT BỊ PHẦN CỨNG HỆ THỐNG THỰC NGHIỆM 51 3.4.1 Các thiết bị cảm biến 51 3.4.2 Thiết bị tiền xử lý Arduino 56 3.4.2 Thiết bị xử lý NodeMCU ÉP8266v3 61 3.5 CÁC MODULE PHẦN MỀM VÀ KẾT QUẢ 64 3.5.1 Lập trình GPIO 64 3.5.2 Lập trình Arduino IDE 65 3.5.3 Lập trình Node-red 66 3.5.4 Kết mơ hình thực nghiệm 67 3.6 KẾT LUẬN CHƯƠNG 68 KẾT LUẬN .69 DANH MỤC CÁC TÀI LIỆU THAM KHẢO 70 v DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT Viết tắt MQTT Tiếng Anh Tiếng Việt Message Queuing Telemetry Transport Giao thức truyền thông điệp ADC Analog to Digital Converter Bộ chuyển đổi tương tự - số AGC Automatic Gain Controller Tự động điều khiển độ lợi API Application Programming Interface Giao diện lập trình ứng dụng BS Basic Station Trạm gốc BER Bit Eror Ratio Tỷ lệ lỗi bit BLER Block Error Rate Tỷ lệ lỗi khối DAC Digital to Analog Converter Bộ chuyển đổi số - tương tự D2D Device to device Thiết bị tới thiết bị DSP Digital Signal Processor Bộ xử lý tín hiệu số DSL Digital Subcriber Line Kênh thuê bao số FAP Femtocell Acess Point Điểm truy cập Femtocell FBS Femtocell Basic Station Trạm gốc Femtocell FFT Fast Fourier Transform Biến đổi Fourier nhanh FIFO First in First out Vào trước trước RF Radio Frequency Tần số vô tuyến GPP General Purpose Processor Bộ xử lý chức chung NFC Near Field Communications Giao tiếp gần LTE Long Term Evolution Sự tiến hóa dài hạn DANH MỤC CÁC BẢNG Bảng 2.1: Ưu-Nhược điểm Zigbee 20 Bảng 3.1: Tóm tắt tính thư viện Eclipse MQTT Client 49 vi Bảng 3.2: Các tính hỗ trợ thư viện Paho Android Service 49 vii DANH MỤC CÁC HÌNH VẼ Hình 1.1: Thế giới vật lý giới thông tin Hình 1.2: Mơ hình hệ sinh thái IoT 10 16 Hình 2.1: Các ứng dụng khơng dây 19 Bảng 2.2: So sánh Zigbee chuẩn không dây 20 Hình 2.3: Kiến trúc lớp kiến trúc Zigbee 23 Hình 2.4: Mơ hình mạng Zigbee .23 Hình 2.5: Tổng quan giao thức MQTT 25 Hình 2.6: Các tiêu chuẩn MQTT phát triển IBM EROTECH 26 Hình 2.7: Kiến trúc giao thức MQTT 26 Hình 2.8: Mơ hình Xuất bản/Theo dõi 27 Hình 2.9: Publisher Subscriber .27 Hình 2.10: Ví dụ mơ hình Xuất bản/Theo dõi 28 Hình 2.13: Quy trình xuất bản tin với QoS = 32 Hình 2.14: Quy trình xuất bản tin với QoS mức 33 Hình 2.15: Quy trình xuất bản tin với QoS mức 34 Hình 3.1: Kiến trúc giao thức MQTT-SN 39 Hình 3.2: Tiến trình Thiết lập kết nối từ phía Client 41 Hình 3.3: Sơ đồ chuyển trạng thái Client 45 Hình 3.4: Sơ đồ tổng quan phần cứng hệ thống 48 Hình 3.5: Thiết bị cảm biến BH1750 51 Hình 3.6: Thiết bị cảm biến MQ-135 .53 Hình 3.7: Mối quan hệ tỷ số Rs/Ro giá trị PPM tương ứng 54 Hình 3.8: Thiết bị cảm biến DTH11 55 Hình 3.9: Kết nối DHT11 với vi điều khiển 56 viii Hình 3.10: Cấu hình chân thiết bị arduino R3 .57 Hình 3.11: Cấu hình chân thiết bị ESP8266 62 Hình 3.12: Ví dụ điều khiển arduino 65 Hình 3.13: Cấu hình hệ thống thực nghiệm .67 Hình 3.14: Xử lý gói tin node-red .67 Hình 3.15: Giao diện giám sát web 68 Hình 3.16: Giao diện giám sát LCD 68 56 − Dòng điện hoạt động: 0,3mA (đo) 60uA (chờ) − Đầu ra: Dữ liệu nối tiếp – Serial Data???? − Phạm vi nhiệt độ: ° C đến 50 ° C − Phạm vi độ ẩm: 20% đến 90% − Độ phân giải: Nhiệt độ độ ẩm 16 bit − Độ xác: ± ° C ± 1% Các cảm biến tương đương với DHT11: DHT22, AM2302, SHT71 b) Cách sử dụng Cảm biến DHT11 kèm với điện trở nhiệt NTC chuyên dụng để đo nhiệt độ vi điều khiển bit để xuất giá trị nhiệt độ độ ẩm dạng liệu nối tiếp (serial data) DHT11 có dải đo nhiệt độ từ 0°C đến 50°C độ ẩm từ 20% đến 90% với độ xác ± °C ± 1% Vì vậy, ta cần đo nhiệt độ độ ẩm phạm vi cảm biến lựa chọn phù hợp Module DHT11 gắn sẵn điện trở nên cần nối trực tiếp chân Data với chân vi điều khiển vi điều khiển Hình 3.9: Kết nối DHT11 với vi điều khiển Theo hình trên, ta có chân Data kết nối với chân I/O MCU sử dụng điện trở kéo lên 5K Chân Data xuất giá trị nhiệt độ độ ẩm dạng liệu nối tiếp (serial data) Việc kết nối DHT11 với Arduino có sẵn thư viện hỗ trợ giúp người dùng tìm hiểu sử dụng cách nhanh chóng 3.4.2 Thiết bị tiền xử lý Arduino Cấu trúc chân nối arduino R3 thể hình 3.11 sau 57 Hình 3.10: Cấu hình chân thiết bị arduino R3 Bảng tham số điện arduino R3 Danh mục Tên pin Mô tả Vin: Điện áp đầu vào cho Arduino sử dụng nguồn điện bên 5V: Cung cấp nguồn điện quy định sử dụng để cấp Power Vin, 3.3V, nguồn cho vi điều khiển thành phần khác 5V, GND board 3.3V: Cung cấp 3,3V tạo điều chỉnh điện áp board GND: chân đất Reset Reset Chân analog A0 – A5 Chân đầu Digital vào/ đầu Pins - 13 Reset lại vi điều khiển Được sử dụng để cung cấp đầu vào tương tự phạm vi 0-5V Có thể sử dụng chân đầu vào đầu 58 Serial External Interrupts PWM 0(Rx), 1(Tx) Được sử dụng để nhận truyền liệu nối tiếp TTL 2, Để kích hoạt trạng thái ngắt 3, 5, 6, 9, Cung cấp đầu PWM bit 11 10 (SS), 11 (MOSI), SPI 12 (MISO) Được sử dụng cho truyền thông SPI and 13 (SCK) Đèn LED sẵn có TWI AREF 13 Để bật đèn LED sẵn có A4 (SDA), Được sử dụng cho giao tiếp TWI A5 (SCA) AREF Để cung cấp điện áp tham chiếu cho điện áp đầu vào a) Thông số kỹ thuật − Vi điều khiển: ATmega328P − Điện áp hoạt động: 5V − Điện áp vào khuyên dùng: 7-12V − Điện áp vào giới hạn: 6-20V − Digital I/O pin: 14 (trong pin có khả băm xung) − PWM Digital I/O Pins: − Analog Input Pins: − Cường độ dòng điện I/O pin: 20 mA − Cường độ dòng điện 3.3V pin: 50 mA 59 − Flash Memory: 32 KB (ATmega328P), 0.5 KB sử dụng bootloader − SRAM: KB (ATmega328P) − EEPROM: KB (ATmega328P) − Tốc độ: 16 MHz − Chiều dài: 68.6 mm − Chiều rộng: 53.4 mm − Trọng lượng: 25 g b) Tổng quan Arduino Uno bảng vi điều khiển dựa vi điều khiển ATmega328P bit Với vi điều khiển này, ta có tổng cộng 14 pin (ngõ) / vào đánh số từ tới 13 (trong có pin PWM, đánh dấu ~ trước mã số pin) Song song đó, ta có thêm pin nhận tín hiệu analog đánh kí hiệu từ A0 - A5, pin sử dụng pin / vào bình thường (như pin - 13) Ở pin đề cập, pin 13 pin đặc biệt nối trực tiếp với LED trạng thái board Trên board cịn có nút reset, ngõ kết nối với máy tính qua cổng USB ngõ cấp nguồn sử dụng jack 2.1mm lấy lượng trực tiếp từ AC-DC adapter hay thông qua ắc-quy nguồn c) Cách sử dụng Arduino Board Arduino UNO có 14 chân digital dùng để đọc xuất tín hiệu Chúng có mức điện áp 0V 5V với dòng vào/ra tối đa chân 40mA Ở chân có điện trở pull-up từ cài đặt vi điều khiển ATmega328 (mặc định điện trở không kết nối) Một số chân digital có chức đặc biệt sau: − chân Serial: (RX) (TX): dùng để gửi (transmit – TX) nhận (receive – RX) liệu TTL Serial Arduino Uno giao tiếp với thiết bị khác thông qua chân Kết nối bluetooth thường thấy nói nơm na kết nối Serial không dây Nếu không cần giao tiếp Serial, bạn không nên sử dụng chân không cần thiết 60 − Chân PWM (~): 3, 5, 6, 9, 10, 11: cho phép bạn xuất xung PWM với độ phân giải 8bit (giá trị từ → 28-1 tương ứng với 0V → 5V) hàm analogWrite() Nói cách đơn giản, bạn điều chỉnh điện áp chân từ mức 0V đến 5V thay cố định mức 0V 5V chân khác − Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngồi chức thơng thường, chân cịn dùng để truyền phát liệu giao thức SPI với thiết bị khác − LED 13: Arduino UNO có đèn led màu cam (kí hiệu chữ L) Khi bấm nút Reset, bạn thấy đèn nhấp nháy để báo hiệu Nó nối với chân số 13 Khi chân người dùng sử dụng, LED sáng Arduino UNO có chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp khoảng 0V → 5V Với chân AREF board, bạn để đưa vào điện áp tham chiếu sử dụng chân analog Tức bạn cấp điện áp 2.5V vào chân bạn dùng chân analog để đo điện áp khoảng từ 0V → 2.5V với độ phân giải 10bit Đặc biệt, Arduino UNO có chân A4 (SDA) A5 (SCL) hỗ trợ giao tiếp I2C/TWI với thiết bị khác Arduino sử dụng để giao tiếp với máy tính, Arduino khác vi điều khiển khác Bộ vi điều khiển ATmega328P cung cấp giao tiếp nối tiếp UART TTL (5V) thực cách sử dụng chân digital (Rx) chân digital (Tx) ATmega16U2 board giao tiếp với máy tính qua USB xuất dạng cổng COM ảo phầm mềm Arduino Firmware ATmega16U2 sử dụng trình điều khiển USB COM chuẩn khơng cần trình điều khiển bên ngồi Tuy nhiên, Windows, cần có tệp inf Phần mềm Arduino bao gồm Serial Monitor cho phép gửi liệu văn đơn giản đến từ Arduino Hai đèn LED RX TX board nhấp nháy liệu truyền qua chip USB nối tiếp kết nối USB với máy tính (khơng cho giao tiếp Serial chân 1) Thư viện SoftwareSerial cho phép giao tiếp Serial UART chân 61 Digital Uno ATmega328P hỗ trợ giao tiếp I2C (TWI) SPI Phần mềm Arduino bao gồm thư viện Wire để đơn giản hóa việc sử dụng bus I2C d) Các ứng dụng − Robot: Arduino dùng để làm xử lý trung tâm nhiều loại robot Đó nhờ vào khả đọc thiết bị cảm biến, điều khiển động cơ,… Arduino − Game tương tác: dùng Arduino để tương tác với Joystick, hình,… để chơi trị Tetrix, phá gach, Mario… Còn nhiều game sáng tạo nữa, ví dụ bạn tham khảo − Máy bay không người lái − Điều khiển đèn Led nhấp nháy, điều khiển đèn tín hiệu giao thơng − Điều khiển thiết bị cảm biến ánh sáng, âm thanh,… 3.4.2 Thiết bị xử lý NodeMCU ÉP8266v3 Module RF thu phát Wifi ESP8266 NodeMCU Lua V3 CH340 phiên NodeMCU sử dụng IC nạp giá rẻ CH340 từ Lolin với xử lý trung tâm module Wifi SoC ESP8266, kit có thiết kế dễ sử dụng đặc biệt sử dụng trực tiếp trình biên dịch Arduino để lập trình nạp code, điều khiến việc sử dụng lập trình ứng dụng ESP8266 trở nên đơn giản Kit RF thu phát Wifi ESP8266 NodeMCU Lua V3 CH340 dùng cho ứng dụng cần kết nối, thu thập liệu điều khiển qua sóng Wifi, đặc biệt ứng dụng liên quan đến IoT 62 Hình 3.11: Cấu hình chân thiết bị ESP8266 ESP8266 NodeMCU có đầy đủ chân I/O ( Digital, Analog, PWM, Timer ) tương tự với Arduino Tuy nhiên, chúng bổ sung thêm chân GPIO GPIO (General Purpose Input/Output) chức phổ biến vi điều khiển, bao gồm chân đầu vào đầu tín hiệu số lập trình người dùng Ta biết chân vi điều khiển thực nhiều chức khác nhau, NodeMCU có tổng cộng 13 chân GPIO nhiên số chân dùng cho mục đích quan trọng khác phải lưu ý sử dụng sau: − Tất GPIO có trở kéo lên nguồn bên (ngoại trừ GPIO16 có trở kéo xuống GND) Người dùng cấu hình kích hoạt khơng kích hoạt trở kéo − GPIO1 GPIO3: hai GPIO nối với TX RX UART0, NodeMCU nạp code thông qua UART nên tránh sử dụng chân GPIO − GPIO0, GPIO2, GPIO15: chân có nhiệm vụ cấu hình mode cho ESP8266 điều khiển trình nạp code nên bên NodeMCU (có tên 63 gọi strapping pins) có trở kéo để định sẵn mức logic cho chúng sau: GPIO0: HIGH, GPIO2: HIGH, GPIO15: LOW − GPIO9, GPIO10: hai chân dùng để giao tiếp với External Flash ESP8266 khơng thể dùng (đã test thực nghiệm) Như vậy, GPIO lại: GPIO 4, 5, 12, 13, 14, 16 sử dụng bình thường a) Thơng số kỹ thuật − Mạch sử dụng CH340G thay cho CP2102 − NodeMCU có cổng USB-TTL với IC CH340G hoạt động ổn định với chuẩn công nghiệp − Điện áp giao tiếp: 3.3V − Loại ăngten: ăng ten PCB tích hợp mạch − Chuẩn 802.11 b / g / n không dây, − WiFi 2.4GHz, hỗ trợ chế độ bảo mật WPA / WPA2 − Hỗ trợ chế độ hoạt động STA / AP / STA + AP − Tích hợp giao thức TCP / IP để hỗ trợ nhiều kết nối TCP Client (5 MAX) − D0 ~ D8, SD1 ~ SD3: sử dụng GPIO, PWM, IIC, vv, dòng điều khiển 15mA − AD0: kênh ADC − Nguồn vào: 4.5V ~ 9V (10VMAX), nguồn từ cổng USB − Dòng tải: truyền liên tục: ≈70mA (200mA MAX), chế độ chờ: