Tải bản đầy đủ (.pdf) (24 trang)

Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (752.63 KB, 24 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
--------------------------------

LÊ HỮU TUẤN ANH

GIAO THỨC MQTT VÀ ỨNG DỤNG TRONG IOT CHO GIẢI
PHÁP NGÔI NHÀ THÔNG MINH

Chuyên ngành: Kỹ thuật Viễn thông
Mã số: 60.52.02.08

TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT

HÀ NỘI – 2017

Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG


Người hướng dẫn khoa học: PGS.TS. NGUYỄN TIẾN BAN

Phản biện 1:

Phản biện 2:

Luận văn đã được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học
viện Công nghệ Bưu chính Viễn thông
Vào lục:

.......... giờ .......... ngày tháng


năm 2017

Có thể tìm hiểu luận văn tại:
‐ Thư viện của Học viện Công nghệ Bưu chính Viễn Thông


1

MỞ ĐẦU
IOT hiện nay đang là một xu hướng mạnh mẽ trên toàn thế giới, mở ra những
cơ hội chưa từng có cho các nền kinh tế, doanh nghiệp, tổ chức và các cá nhân để cạnh
tranh trong môi trường mới.
Phạm vi ứng dụng công nghệ IoT thực sự rộng lớn và đa dạng, từ quản lý giao
thông, quản lý đô thị, quản lý môi trường, ứng phó khẩn cấp đến mua sắm thông minh,
các dịch vụ y tế chăm sóc sức khỏe, nhà thông minh và hướng tới nữa là thành phố
thông minh.
Để các thiết bị có thể giao tiếp được với nhau, thiết bị sẽ cần một hoặc nhiều
giao thức, đó là HTTP được dùng phổ biến để tải web hay một số khác như SMTP,
IMAP cho email… Những giao thức này ít khi trao đổi thông tin, khi cần sẽ có một
trung gian đứng ra giải mã cho hai bên hiểu. Còn với các thiết bị IoT, chúng phải đảm
đương nhiều thứ, trao đổi thông tin với nhiều loại thiết bị khác nhau, nhưng hiện người
ta chưa có sự đồng nhất về các giao thức để IoT trao đổi dữ liệu. Nói cách khác, tình
huống này gọi là “communication fail”, một bên nói nhưng bên kia không tiếp nhận.
Hiện nay có rất nhiều giao thức giao tiếp giữa các thiết bị IoT như: HTTP, UpnP,
CoAp, MQTT.
Trong giai đoạn gần đây giao thức MQTT đang nổi lên như một giao thức được
sử dụng phổ biến dùng trong IoT, rất nhiều hãng công nghệ đã áp dụng và hỗ trợ giao
thức MQTT cho các ứng dụng sản phẩm của mình như Facebook cho ứng dụng
facebook message, IBM cho dự án bảo vệ môi trường, Intel, Microsoft.
Luận văn được xây dựng với nội dung chính như sau:

Chương 1: Tổng quan về IoT và ứng dụng
Chương 2: Giao thức MQTT
Chương 3: Ứng dụng giao thức MQTT trong IoT cho ngôi nhà thông minh.


2

CHƯƠNG 1: TỔNG QUAN VỀ IOT VÀ ỨNG DỤNG
1.1 Giới thiệu chung về IoT
1.1.1 Khái niệm về IoT
Internet of Things (IoT) là thuật ngữ dùng để chỉ các đối tượng có thể được
nhận biết cũng như sự tồn tại của chúng trong một kiến trúc mang tính kết nối.
Đây là một viễn cảnh trong đó mọi vật, mọi con vật hoặc con người được cung
cấp các định danh và khả năng tự động truyền tải dữ liệu qua một mạng lưới mà
không cần sự tương tác giữa con người-với-con người hoặc con người-với-máy
tính.
IoT tiến hoá từ sự hội tụ của các công nghệ không dây, hệ thống vi cơ điện
tử (MEMS) và Internet. Cụm từ này được đưa ra bởi Kevin Ashton vào năm 1999.
Ông là một nhà khoa học đã sáng lập ra Trung tâm Auto-ID ở đại học MIT, nơi
thiết lập các quy chuẩn toàn cầu cho RFID (một phương thức giao tiếp không dây
dùng sóng radio) cũng như một số loại cảm biến khác.

1.1.2 Góc nhìn kỹ thuật về IoT
Internet Of Things là một cơ sở hạ tầng mang tính toàn cầu cho xã hội thông
tin, mang đến những dịch vụ tiên tiến bằng cách kết nối các “Things” (cả physical lẫn
virtual) dựa trên sự tồn tại của thông tin, dựa trên khả năng tương tác của các thông tin
đó, và dựa trên các công nghệ truyền thông.
Devices là một phần của cả hệ thống với chức năng bắt buộc là truyền thông và
chức năng không bắt buộc là: cảm biến, thực thi,thu thập dữ liệu, lưu trữ và xử lý dữ
liệu.

Things là một đối tượng của thế giới vật chất (physical things) hay thế giới
thông tin ảo(virtual things). “Things” có khả năng được nhận diện, và “Things” có thể
được tích hợp vào trong mạng lưới thong tin liên lạc. Hai loại đối tượng này có thể ánh
xạ (mapping) qua lại lẫn nhau. Một đối tượng vật lý có thể được trình bài hay đại diện
bởi một đối tượng thông tin, tuy nhiên một đối tượng thông tin có thể tồn tại mà không
nhất thiết phải được ánh xạ từ một đối tượng vật lý nào [6].
Yêu cầu tối thiểu của các “device” trong IOT là khả năng giao tiếp. Devices sẽ
được phân loại vào các dạng như device mang thông tin, device thu thập dữ liệu,
device cảm nhận(sensor), device thực thi, hay general device.


3

1.2 Công nghệ trong IoT
1.2.1 Công nghệ trong IoT
 Các giao thức chính


MQTT: một giao thức cho việc thu thập dữ liệu và giao tiếp cho các máy chủ (D2S).



XMPP: giao thức tốt nhất để kết nối các thiết bị với mọi người, một trường hợp đặc
biệt của mô hình D2S, kể từ khi người được kết nối với các máy chủ.



DDS: giao thức tốc độ cao cho việc tích hợp máy thông minh (D2D).




AMQP: hệ thống hàng đợi được thiết kế để kết nối các máy chủ với nhau (S2S).

 Giao thức truyền thông không dây


Zigbee



BLE (Bluetooth low energy)



RFID

 Cảm biến sensor
Trong Internet of Things, cảm biến đóng vai trò then chốt, nó đo đạt cảm nhận
giá trị từ môi trường xung quanh rồi gửi đến bộ vi xử lý sau đó được gửi lên mạng.
Chúng ta có thể bắt gặp một số loại cảm biến về cảnh báo cháy rừng, cảnh báo động
đất, cảm biến nhiệt độ, cảm biến độ ẩm,..

1.2.2 Đặc điểm của một hệ thống IoT
Bất kỳ một hệ thống IOT nào cũng được xây dựng lên từ sự kết hợp của 4 layer
sau:


Lớp ứng dụng (Application Layer): Lớp ứng dụng cũng tương tự như trong mô
hình OSI 7 lớp, lớp này tương tác trực tiếp với người dùng để cung cấp một
chức năng hay một dịch vụ cụ thể của một hệ thống IOT [7].




Lớp Hỗ trợ dịch vụ và hỗ trợ ứng dụng (Service support and application support
layer).
+Nhóm dịch vụ chung: Các dịch vụ hỗ trợ chung, phổ biến mà hầu hết các ứng
dụng IOT đều cần, ví dụ như xử lý dữ liệu hoặc lưu trữ dữ liệu.
+ Nhóm dịch vụ cụ thể, riêng biệt: Những ứng dụng IOT khác nhau sẽ có nhóm
dịch phụ hỗ trợ khác nhau và đặc thù.



Lớp mạng (Network Layer)


4

+ Chức năng Networking: cung cấp chức năng điều khiển các kết nối kết nối
mạng, chẳng hạn như tiếp cận được ngu n tài nguyên thông tin và chuyển tài
nguyên đó đến nơi cần thiết, hay chứng thực, uỷ quyền…
+ Chức năng Networking: cung cấp chức năng điều khiển các kết nối kết nối
mạng, chẳng hạn như tiếp cận được ngu n tài nguyên thông tin và chuyển tài
nguyên đó đến nơi cần thiết, hay chứng thực, uỷ quyền…


Lớp thiết bị (Device Layer): Lớp Device chính là các phần cứng vật lý trong hệ
thống IOT.

1.3 Các ứng dụng trong IoT
1.3.1 Các ứng dụng trong IoT

Với những hiệu quả thông minh rất thiết thực mà IoT đem đến cho con người,
IoT đã và đang được tích hợp trên khắp mọi thứ, mọi nơi xung quanh thế giới mà con
người đang sống. Từ chiếc vòng đeo tay, những đồ gia dụng trong nhà, những mảnh
vườn đang ươm hạt giống, cho đến những sinh vật sống như động vật hay con
người…đều có sử dụng giải pháp IoT.


Ứng dụng trong lĩnh vực vận tải



Ứng dụng trong nông nghiệp



Ứng dụng trong nhà thông minh



Ứng dụng trong thành phố thông minh



Ứng dụng trong lưới điện thông minh

1.3.2 Các thách thức trong việc nghiên cứu, triển khai IoT


Chưa có ngôn ngữ chung.
Hiện tại các thiết bị IoT, chúng phải đảm đương rất nhiều thứ, phải nói chuyện


với nhiều loại máy móc thiết bị khác nhau. Đáng tiếc rằng hiện người ta chưa có nhiều
sự đồng thuận về các giao thức để IoT trao đổi dữ liệu. Nói cách khác, tình huống này
gọi là "giao tiếp thất bại", một bên nói nhưng bên kia không thèm (và không thể) nghe.


Hàng rào subnetwork
Như đã nói ở trên, thay vì giao tiếp trực tiếp với nhau, các thiết bị IoT hiện nay

chủ yếu kết nối đến một máy chủ trung tâm do hãng sản xuất một nhà phát triển nào
đó quản lí. Cách này cũng vẫn ổn thôi, những thiết bị vẫn hoàn toàn nói được với nhau
thông qua chức năng phiên dịch của máy chủ rồi. Thế nhưng mọi chuyện không đơn


5

giản như thế, cứ mỗi một mạng lưới như thế tạo thành một subnetwork riêng, và buồn
thay các máy móc nằm trong subnetwork này không thể giao tiếp tốt với subnetwork
khác.


Tiền và chi phí
Cách duy nhất để các thiết bị IoT có thể thật sự giao tiếp đó là khi có một động

lực kinh tế đủ mạnh khiến các nhà sản xuất đồng ý chia sẻ quyền điều khiển cũng như
dữ liệu mà các thiết bị của họ thu thập được. Hiện tại, các động lực này không nhiều.

1.4 Kết luận chương
Chương 1 đã trình bày tóm tắt và hiểu rõ hơn về khái niệm, kiến trúc, mô hình,
các ứng dụng cũng như thách thức trong môi trường IoT. Như vậy Internet of Things

hiểu đơn giản là một mạng lưới các vật thể được gắn cảm biến hoặc hệ thống điện tử
đặc biệt cho phép chúng kết nối với nhau để thu thập và trao đổi dữ liệu. Các vật thể
trong mạng lưới này có thể được kết nối với mạng Internet cho mục đích điều khiển từ
xa. Internet Of Things ngày này đang phát triển một cách vô cùng mạnh mẽ. Có thể
nói IoT đang dần thay đổi thể giới và trở thành xu hướng của thời đại, khi mà nhắc đến
bất kỳ một lĩnh vực nào đều có thể nghe đến IoT ở đó.


6

CHƯƠNG 2: GIAO THỨC MQTT
2.1 Giao thức MQTT
2.1.1 Các khái niệm cơ bản
MQTT được tạo ra bởi TS. Andy Standford Clark của IBM và Arlen Nipper of
Arcom (giờ là Eurotech) năm 1999 như một phương thức đáng tin cậy hiệu quả với chi
phí để kết nối các thiết bị giám sát sử dụng trong các ngành công nghiệp dầu mỏ và
khí đốt với các máy chủ doanh nghiệp từ xa. Khi thử thách với việc tìm kiếm một cách
để đẩy dữ liệu từ các cảm biến đường ống trong sa mạc để quản lý hệ thống SCADA,
họ quyết định một giao thức TCP/IP dựa trên mô hình cung cấp/thuê bao
(publish/subscrible) đó sẽ là sự kiện hướng tới giảm chi phí giữ liên kết truyền hình vệ
tinh [3].
MQTT dựa trên một Broker (điểm trung gian) "nhẹ" (khá ít xử lý), và được
thiết kế có tính mở (không đăng trưng cho ứng dụng nào), rất đơn giản và dễ để tích
hợp. MQTT phù hợp cho các ứng dụng M2M (Mobile to mobile), WSN (Wireless
Sensor Networks) hay IoT (Internet of Things).

2.1.2 Mô hình MQTT(Message Queuing Telemetry Transport)
Các thành phần chính của MQTT là clients, servers (=brokers), sessions,
subscriptions và topics [8].


Hình 2. 1 Mô hình cơ bản của giao thức MQTT

-

MQTT client (publisher, subscriber): Client thực hiện subscribe đến topics để
publish và receive các gói tin.


7

-

MQTT server (broker): Servers thực hiện run các topic, đồng thời nhận
subscriptions từ clients yêu cầu các topics, nhận các messages từ clients và
forward chúng.

-

Topic: Về mặt kỹ thuật, topics là các hàng đợi chứa message. Về logic, topics
cho phép clients trao đổi thông tin và dữ liệu.

-

Session: Một session được định nghĩa là kết nối từ client đến server. Tất cả các
giao tiếp giữa client và server đều là 1 phần của session.

-

Subscription: Không giống như sessions, subscription về mặt logic là kết nối từ
client đến topic. Khi thực hiện subscribed đến topic, client có thể trao đổi

messages với topic. Subscriptions có thể ở trạng thái ‘transient’ hoặc ‘durable’,
phụ thuộc vào cờ clean session trong gói Connect.



Message: Messages là các đơn vị dữ liệu được trao đổi giữa các topic clients.

2.2 MQTT v3.1 protocol specification
2.2.1 Định dạng của message
Tất cả các message luôn chứa phần cố định theo bảng 2.1.
Bảng 2. 1 Header cố định

Bit
Byte 1

7

6

5

4

3

Loại message

Byte 2

Cờ DUP


2

1

QoS level

0
RETAIN

Độ dài còn lại

Trong đó:
-

Byte 1 : Chứa loại Message và các cờ (DUP, QoS level, and RETAIN).



Byte 2 : (Ít nhất 1 byte) quy định độ dài còn lại.



Loại Message : vị trí byte 1, bits 7-4.



Các cờ: bit còn lại của byte đầu chứa các trường DUP, QoS và RETAIN
+ DUP : Vị trí byte 1, bit 3
Cờ này được bật khi client hoặc server đang cố chuyển lại một gói PUBLISH,

PUBREL, SUBSCRIBE hoặc UNSUBSCRIBE. Giá trị này được sử dụng trong
các mesage mà có QoSS lớn hơn 0 và yêu cầu ACK. Khi bit DUP được set,
phần header thay đổi sẽ chứa Message ID. Nhìn vào giá trị này sẽ biết được gói


8

tin đã nhận được trước đó hay không. Nó không nên sử dụng để tin ngay rằng
có duplicates hay không.
+ QoS : Vị trí byte 1, bits 2-1.
Cờ này sẽ cho biết độ đảm bảo việc nhận message PUBLISH.
+ RETAIN: Vị trí byte 1, bit 0.
Cờ này chỉ được sử dụng ở message PUBLISH. Khi client gửi 1 message
PUBLISH đến server, nếu cờ Retain được set (1), thì server phải hiểu rằng nên
giữ message này ngay cả sau khi chuyển nó đến các subcribers hiện tại. Khi có
1 subcription mới được thiết lập trên 1 topic, message cuối cùng của topic đó
nên được gửi đến subscriber với 1 trường Retain được set trong header. Nếu
không có messsage nào còn, thì không cần gửi gì hết.
+ Độ dài còn lại Vị trí: byte 2.
Miêu tả độ dài bao gồm cả phần header và payload có trong message.

2.2.2 Câu lệnh của message
Bảng 2. 2 Các lệnh của message
Từ gợi nhớ

Giá trị thứ tự

Miêu tả

Reserved


0

Chưa dùng

CONNECT

1

Client yêu cầu kết nối đến Server

CONNACK

2

Kết nối được chấp nhận

PUBLISH

3

Xuất bản message

PUBACK

4

Xuất bản message được chấp nhận

PUBREC


5

Xuất bản được nhận (đảm bảo nhận được part 1)

PUBREL

6

Xuất bản release (đảm bảo nhận được part 2)

PUBCOMP

7

Xuất bản hoàn thành (đảm bảo nhận được part 3)

SUBSCRIBE

8

Yêu cầu subcribe từ client

SUBACK

9

Yêu cầu subcriber được chấp nhận

UNSUBSCRIBE


10

Yêu cầu unsubcribe

UNSUBACK

11

Yêu cầu unsubcribe được chấp nhận

PINGREQ

12

Request PING

PINGRESP

13

Response PING

DISCONNECT

14

Client đang mất kết nối

Reserved


15

Reserved


9

2.2.3 Quy trình truyền nhận dữ liệu chính trong MQTT
 Trường hợp 1: Session và subscription được thiết lập với clean session flag = 1
(transient subscription).
Quy trình truyền nhận dữ liệu trong MQTT khi session flag = 1:
-

Client và Server được kết nối qua giao thức TCP.

-

Client gửi gói tin CONNECT yêu cầu kết nối đến Server, clean session = 1.
Đây là thời điểm đánh dấu session được thiết lập.

-

Server gởi gói CONNACK xác nhận thiết lập kết nối thành công.

-

Client thực hiện SUBSCRIBE đến topic XYZ. Đây là thời điểm bắt đầu timeout
của một subscription.


-

Server gởi gói SUBACK xác nhận quá trình subscription.

-

Client PUBLISH để gởi topic - message đến server.

-

Sau khi nhận đủ thông tin, client gửi gói UNSUBSCRIBE topic XYZ để kết
thúc quá trình Subscribe.

-

Server trả về gói UNSUBACK.

-

Client gửi gói DISCONNECT để kết thúc session truyền thông.

 Trường hợp 2: Session và subscription được thiết lập với clean session flag = 0
(durable subscription).
Quy trình truyền nhận dữ liệu trong MQTT khi session flag = 0:
-

Subscription lifetime đã được thiết lập trước.

-


Client và Server được kết nối qua giao thức TCP.

-

Client gửi gói tin CONNECT yêu cầu kết nối đến Server, clean session = 0.
Đây là thời điểm đánh dấu session được thiết lập.

-

Server gởi gói CONNACK xác nhận thiết lập kết nối thành công.

-

Client PUBLISH để gởi topic - message đến server.



Client gửi gói DISCONNECT để kết thúc session truyền thông.

2.3 So sánh những điểm cơ bản giữa hai chuẩn giao thức MQTT và CoAP.
2.3.1 Điểm giống nhau giữa hai giao thức
MQTT và CoAP là hai giao thức triển vọng nhất trong IoT, chúng có những đặc
điểm giống nhau như:


10

-

Là các chuẩn mở.


-

Phù hợp hơn HTTP đối với các môi trường bị hạn chế.

-

Cung cấp cơ chế truyền tin không đồng bộ.

-

Chạy trên IP (Internet Protocol).

-

Có hàng loạt cách triển khai.

2.3.2 Điểm khác nhau giữa hai giao thức
MQTT và CoAP đều hữu ích như các giao thức IoT, nhưng có các khác biệt cơ
bản sau:
-

MQTT là một giao thức truyền thông N-N để truyền các thông điệp giữa nhiều
khách hàng thông qua broker trung tâm. Nó tách riêng người sản suất producer
và người tiêu thụ consumer bằng cách cho phép các client gửi bản tin đi và có
các broker quyết định đường đi và sao chép bản tin. MQTT có một số hỗ trợ để
duy trì bản tin, nhưng nó làm tốt nhất nhiệm vụ là bus truyền dữ liệu trực tiếp.
CoAP chủ yếu là giao thức 1-1 để truyền trạng thái thông tin giữa client và máy
chủ. Nó hỗ trợ quan sát tài nguyên, CoAP phù hợp nhất với mô hình state
transfer (***) chứ không chỉ đơn thuần dựa trên các sự kiện.


-

Client MQTT tạo một kết nối TCP lâu dài đến broker. Điều này thường không
dành cho các thiết bị phía sau NAT. Client và máy chủ CoAP đều gửi và nhận
các gói tin UDP. Trong các môi trường NAT, luồng hoặc cổng chuyển tiếp có
thể được sử dụng để thông qua CoAP hoặc các thiết bị lần đầu tiên mở kết nối
đến đầu cuối như LWM2M.

-

MQTT không hỗ trợ các nhãn bản tin với các loại hoặc dữ liệu khác để giúp
client hiểu nó. Bản tin MQTT có thể được sử dụng cho bất kì mục đích nào,
nhưng tất cả các client phải biết định dạng bản tin để cho phép truyền thông.
CoAP ngược lại, nó hỗ trợ việc đàm phán nội dung và khám phá cho phép các
thiết bị thăm dò nhau để tìm cách trao đổi dữ liệu.

2.4 Kết luận chương
Chương 2 đã trình bày cho chúng ta phần nào hình dung được về khái niệm và
mô hình giao thức MQTT, một giao thức gởi dạng publish/subscribe sử dụng cho các
thiết bị Internet of Things với băng thông thấp, độ tin cậy cao và khả năng được sử


11

dụng trong mạng lưới không ổn định. Do giao thức này sử dụng băng thông thấp trong
môi trường có độ trễ cao nên nó là một giao thức lý tưởng cho các ứng dụng M2M.
Đặc điểm kỹ thuật giao thức MQTT v3.1, cấu trúc, định dạng bản tin, các lệnh
bản tin trong giao thức. So sánh những điểm cơ bản của 2 giao thức MQTT và CoAP,
hai giao thức triển vọng nhất dùng trong IoT. MQTT có tính linh hoạt trong các mô

hình truyền thông và hoạt động hoàn toàn như một đường ống cho các dữ liệu nhị
phân, là một giao thức truyền thông N-N để truyền các thông điệp giữa nhiều khách
hàng thông qua broker trung tâm do đó ta có thể sử dụng nhiều thiết bị được điều
khiển trong một hệ thống đồng thời có thể chia sẻ dữ liệu nhận được từ thiết bị cho
nhiều người khác. CoAP được thiết kế để có khả năng tương tác với các trang web, là
giao thức 1-1 để truyền trạng thái thông tin giữa client và máy chủ. Nó hỗ trợ quan sát
tài nguyên, CoAP phù hợp nhất với mô hình state transfer (***) chứ không chỉ đơn
thuần dựa trên các sự kiện do đó tính bảo mật trong thông tin sẽ cao hơn giao thức
MQTT nhưng khả năng trao đổi thông tin sẽ bị hạn chế. Trong một thế giới đang phát
triển theo xu hướng mở thì giao thức MQTT hứa hẹn sẽ thông dụng hơn trong các ứng
dụng IoT.


12

CHƯƠNG 3: ỨNG DỤNG GIAO THỨC MQTT TRONG
IOT CHO NGÔI NHÀ THÔNG MINH
3.1 Giới thiệu về arduino IDE
3.1.1 Tổng quan về arduino
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với
nhau hoặc với môi trường được thuận lợi hơn. Phần cứng bao gồm một board mạch
nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel
32bit. Những model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào
analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau.
Những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng,
không tốn kém cho những người yêu thích, sinh viên và giới chuyên nghiệp để tạo ra
những thiết bị có khả năng tương tác với môi trường thông qua các cảm biến và các cơ
cấu chấp hành. Những ví dụ phổ biến cho những người yêu thích mới bắt đầu bao gồm
các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động. Đi cùng với nó là
một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thường

và cho phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc
C++.

3.1.2 Arduino IDE
Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng crossplatform (nền tảng) được viết bằng Java, và từ IDE này sẽ được sử dụng cho Ngôn ngữ
lập trình xử lý (Processing programming language) và project Wiring. Nó được thiết
kế để dành cho những người mới tập làm quen với lĩnh vực phát triển phần mềm. Nó
bao gồm một chương trình code editor với các chức năng như đánh dấu cú pháp, tự
động brace matching, và tự động canh lề, cũng như compile(biên dịch) và upload
chương trình.

3.2 Cài đặt Arduino IDE
3.2.1 Cài đặt chương trình Arduino IDE
Truy cập vào trang web và tải về chương trình
Arduino IDE phù hợp với hệ điều hành của máy mình bao gồm Windown, Mac OS


13

hay Linux. Đối với Windown có bản cài đặt (.exe) và bản Zip, đối với Zip thì chỉ cần
giải nén và chạy chương trình không cần cài đặt.

3.2.2 Arduino IDE
Arduino IDE là nơi để soạn thảo code, kiểm tra lỗi và upload code cho arduino.

Hình 3. 1 Giao diện Arduino IDE

3.3 Quá trình mô phỏng dùng giao thức MQTT trong một số ứng dụng cho
ngôi nhà thông minh
3.3.1 Mô tả yêu cầu thiết kế hệ thống

Hệ thống ứng dụng công nghệ Internet of Things trong thu thập và đánh giá dữ
liệu về nhiệt độ, độ ẩm, hệ thống đèn trong ngôi nhà có yêu cầu đặt ra là: thu thập,
đánh giá nhiệt độ, độ ẩm và hệ thống đèn trong nhà, cho phép giám sát nhiệt độ, độ ẩm


14

và đèn trên nền web, vẽ đồ thị thời gian thực thể hiện sự thay đổi của thông số theo
thời gian trên web.

Hình 3. 2 Sơ đồ khối hệ thống

Nguyên lý hoạt động của hệ thống: Khi ta cấp nguồn cho hệ thống, khối nguồn
với LM2596 sẽ có nhiệm vụ điều chỉnh và đảm bảo điện áp hoạt động phù hợp để nuôi
toàn bộ hệ thống. Khối cảm biến với module cảm biến DHT11 có chức năng thu thập
nhiệt độ độ ẩm môi trường và gửi dữ liệu về cho khối vi xử lý. Khối vi xử lý với
module ESP8266 sẽ gửi dữ liệu lên server thông qua đường truyền Internet. Server
sẽ tiếp nhận dữ liệu đồng thời hiển thị dữ liệu trên web để người dùng theo dõi bắt cứ
lúc nào nếu có kết nối internet.

3.3.2 Lưu đồ thuật toán


15

Hình 3. 3 Lưu đồ thuật toán chương trình

3.3.3 Phần cứng
 NodeMCU là bo mạch khai thác khả năng của chip esp8266. Nó kết hợp các
chức năng của WIFI, vi xử lý và ngôn ngữ LUA.

Thông số kỹ thuật NodeMCU
-

32-bit RISC CPU, running at 80 MHz.

-

Hổ trợ Flash ngoài 4MiB.

-

64KBytes RAM thực thi lệnh.

-

96KBytes RAM dữ liệu.

-

64KBytes boot ROM.

-

Chuẩn wifi EEE 802.11 b/g/n, Wi-Fi 2.4 GHz.

-

16 chân GPIO.

-


1 ADC 10 bit.

-

Dải nhiệt độ hoạt động: -40~125 độ


16

 DHT11 được sử dụng cho Khối cảm biến với các thông số kỹ thuật cơ bản sau:
-

Điện áp hoạt động 3.5V– 5.5V.

-

Dải đo độ ẩm 20-95%.

-

Dải đo nhiệt độ 0-50%.

-

Sai số độ ẩm ±5%.

-

Sai số nhiệt độ ±2%.


3.3.4 Phần mềm


Khởi động chương trình Arduino IDE



Cài đặt thư viện ESP8266
Vào Tool→Board→Boards Manager, đợi một lát để chương trình tìm kiếm.

Ta kéo xuống và click vào ESP8266 by ESP8266 Community, click vào Install.

Hình 3. 4 Cài đặt thành công library esp8266

-

Cài đặt thư viện sensor DHT11
Vào Tool→Board→Boards Manager, ta cài đặt chương trình thư viện cho

sensor DHT11 trong ô tìm kiếm, click vào DHT sensor library, click vào Install.


17

Hình 3. 5 Cài đặt thành công library sensor DHT11

3.3.5 Quá trình mô phỏng
 Thực hiện kiểm tra trao đổi dữ liệu giữa publish và subcribe.
Dùng ESP8266 (NodeMCU) làm Client để kết nối lên một dịch vụ MQTT

Broker là CloudMQTT. Gửi (publish) dữ liệu lên broker, và nhận thông tin (subcribe)
từ broker, kiểm tra publish và subcribe dữ liệu giữa ESP8266 và MQTT Broker thực
hiện bật tắt LED
-

Tạo tài khoản và cấu hình CloudMQTT.

-

Tạo và cấu hình MQTT Broker

Hình 3. 6 Cấu hình MQTT broker

-

Kiểm tra chức năng subcribe và publish bằng bật tắt LED

Trong chương trình ta sẽ thực hiện kết nối với mạng wifi trước để có kết nối tới
internet, sau đó thực hiện gửi thông tin lên broker bằng lệnh publish, sau đó lắng nghe


18

thông tin có trên Broker (ở đây là thông tin do chính nó gửi lên) và in thông tin này ra
terminal của Arduino thông qua hàm callback. Từ giao diện Websocket UI Send
message xuống, ở dưới khi nhận được message thì ESP8266 thực hiện bật/tắt LED có
sẵn trên kit.


Kết nối và gửi dữ liệu thành công lên broker


Hình 3. 7 Quá trình kết nối thành công thiết bị lên webserver

Hình 3. 8 Quá trình bật/tắt LED từ webserver truyền về thiết bị

 Thực hiện đo nhiệt độ độ ẩm gửi lên MQTT broker


Đấu nối cảm biến DHT11 với NodeMCU như hình vẽ


19

Hình 3. 9 Sơ đồ đấu nối cảm biến DHT11 với NodeMCU

-

Chân đất của DHT11 nối với chân GND của NodeMCU.

-

Chân nguồn của DHT11 nối với chân nguồn 5V của NodeMCU.

-

Chân tín hiệu của DHT11 nối với chân D2 của NodeMCU.
Sau khi chuẩn bị xong phần cứng, thực hiện chuẩn bị mã nguồn để nạp vào

NodeMCU. Thiết bị sẽ kết nối lên broker, sau đó lấy dữ liệu từ cảm biến DHT11, gửi
dữ liệu nhiệt độ độ ẩm lên broker.

-

Tạo 2 Field mô tả trường dữ liệu nhiệt độ độ ẩm nhận được từ thiết bị trên
thinkspeak

Hình 3. 10 Tạo hai trường dữ liệu nhiệt độ, độ ẩm trên thinkspeak


20

Cảm biết DHT11 thu thập dữ liệu nhiệt độ độ ẩm và thông qua NodeMCU
esp8266 gửi lên broker thinkspeak và hiển thị ra hai trường dữ liệu.

Hình 3. 11 Dữ liệu trường nhiệt độ trên webserver

Hình 3. 12 Dữ liệu trường độ ẩm trên webserver

3.4 Đánh giá kết quả mô phỏng
Quá trình mô phỏng đã thực hiện được kết nối từ một client lên một dịch vụ
MQTT Broker là CloudMQTT. Gửi (publish) dữ liệu lên broker, và nhận thông tin


21

(subcribe) từ broker, kiểm tra publish và subcribe dữ liệu giữa client và MQTT Broker
để thực hiện bật tắt LED.
Lập trình để đọc các dữ liệu do sensor cảm biến nhiệt độ, độ ẩm thu nhận được.
Sau đó gửi dữ liệu lên webserver một cách trực quan và dễ hiểu.
Qua nhiều lần thử nghiệm, chương trình demo chạy ổn định, đúng như thiết kế
hệ thống. Ngoài ra chương trình demo còn sử dụng các thiết bị hiện có trên thị trường

(nhiệt kế, ẩm kế, lux kế) để đo thủ công cùng thời điểm với các sensor của hệ thống
thu dữ liệu. Kết quả cho thấy, các kết quả do thiết bị đo thủ công và đo tự động bằng
sensor (chương trình demo) là như nhau.

3.5 Kết luận chương
Chương 3 trình bày các bước cài đặt Arduino IDE, cách sử dụng các lệnh và
key chức năng trên trình biên dịch, biết cách cài đặt các thư viện cần thiết cho quá
trình thực hiện các dự án. Hiểu rõ về cấu trúc và chức năng các chân của sensor cảm
biến DHT11, kit NodeMCU ESP8266, quá trình đấu nối cảm biến với kit, đồng thời
thực hiện quá trình mô phỏng bật tắt LED từ MQTT broker, giám sát nhiệt độ, độ ẩm
trong ngôi nhà và gửi dữ liệu lên web giúp chúng ta có thể theo dõi ngôi nhà ở bất cứ
đâu.
Qua đó ta có thể phát triển tích hợp thêm các cảm biến giúp người dùng có thể
theo dõi, giám sát và bật tắt các thiết bị điện cần thiết trong ngôi nhà của mình bất cứ
lúc nào dù đang ở bất cứ nơi đâu qua smartphone hay table có kết nối internet.


22

KẾT LUẬN VÀ KIẾN NGHỊ
Luận văn đã nghiên cứu tổng quan về vấn đề công nghệ Internet of Things, xu
hướng phát triển của hiện tại và tương lai, đưa ra được khái niệm, mô hình, kiến trúc
của IoT.
Luận văn có thể phát triển thêm nhiều chức năng khác như thêm tính năng giám
sát các thiết bị điện trong nhà và điều khiển chúng theo ý muốn của chủ sở hữu, khi
thực hiện các công việc cụ thể khác khi cài đặt nhiệt độ, độ ẩm quá ngưỡng như trong
ngôi nhà… Thêm nhiều node cảm biến hơn trên 1 sản phẩm, xây dựng thành mạng
cảm biến để có thể thu thập, giám sát và cảnh báo khi có những sự việc vượt quá
ngưỡng cài đặt trên thiết bị. Bổ sung các kết nối không dây khác như RF, Bluetooth,…
để có thể giám sát, cảnh báo, thực thi công việc trên các thiết bị cầm tay (ví dụ:

Smartphone, tay phát RF…).
Sản phẩm thu thập và đánh giá nhiệt độ độ ẩm môi trường có thể được ứng
dụng thực tiễn trong các ngôi nhà thông minh, áp dụng trong nông nghiệp ở các trang
trại cần sự đảm bảo về nhiệt độ, độ ẩm (trang trại chăn nuôi gà, trồng nấm, vườn ươm
cây, lò ấm trứng…), ứng dụng trong công nghiệp để đảm bảo tính chính xác trong sản
xuất. Sản phẩm cũng có thể áp dụng trong giám sát, quan trắc, thời tiết môi trường…
Dựa vào sự biến đối của nhiệt độ, độ ẩm của môi trường theo thời gian để có những
dự báo hoặc biện pháp phù hợp với khu vực cần khảo sát, thực nghiệm.



×