ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai...

42
BGIÁO DỤC ĐÀO TẠO TRƢỜNG ĐẠI HỌC ĐÀ LẠT BÁO CÁO TỔNG KT ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018 NG DỤNG INTERNET OF THINGS XÂY DỰNG HTHNG HTRQUẢN LÝ NHÀ KÍNH Chnhiệm đề tài: Võ Xuân Phong, CTK38, 1410349 Lâm Đồng, tháng 6/2018

Transcript of ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai...

Page 1: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

BỘ GIÁO DỤC ĐÀO TẠO

TRƢỜNG ĐẠI HỌC ĐÀ LẠT

BÁO CÁO TỔNG KẾT

ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018

ỨNG DỤNG INTERNET OF THINGS XÂY DỰNG HỆ THỐNG HỖ TRỢ

QUẢN LÝ NHÀ KÍNH

Chủ nhiệm đề tài: Võ Xuân Phong, CTK38, 1410349

Lâm Đồng, tháng 6/2018

Page 2: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

BỘ GIÁO DỤC ĐÀO TẠO

TRƢỜNG ĐẠI HỌC ĐÀ LẠT

BÁO CÁO TỔNG KẾT

ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018

ỨNG DỤNG INTERNET OF THINGS XÂY DỰNG HỆ THỐNG HỖ TRỢ

QUẢN LÝ NHÀ KÍNH

Giáo viên Hƣớng dẫn Chủ nhiệm đề tài (ký, họ tên) (ký, họ tên)

Xác nhận của cơ quan chủ trì (Ký, họ tên,đóng dấu)

Lâm Đồng, tháng 6/2018

Page 3: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

Danh sách những thành viên

Sinh viên thực hiện

STT MSSV Họ tên Email

1 1410349 Võ Xuân Phong [email protected]

2 1410183 Nguyễn Thanh Tùng [email protected]

Giáo viên hướng dẫn: TS. Trần Ngô Như Khánh

Page 4: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

MỤC LỤC

CHƢƠNG 1: TỔNG QUAN.................................................................................................1

Phương pháp nghiên cứu ................................................................... 1 1.1.

Nội dung và kết quả nghiên cứu......................................................... 2 1.2.

Công nghệ Internet of Things (IoT) ................................................... 2 1.3.

Các mô hình triển khai IoT ................................................................ 6 1.4.

Một số giao thức truyền dữ liệu sử dụng trong IoT. ........................... 9 1.5.

CHƢƠNG 2: PHÂN TÍCH, THIẾT KẾ HỆ THỐNG ......................................................13

Ứng dụng trên máy chủ (Server) ...................................................... 13 2.1.

Cơ sở dữ liệu lưu trữ ........................................................................ 14 2.2.

Ứng dụng di động ............................................................................ 14 2.3.

Hệ thống thiết bị tại nhà kính ........................................................... 15 2.4.

CHƢƠNG 3: TRIỂN KHAI HỆ THỐNG .........................................................................17

Mô tả hệ thống................................................................................. 17 3.1.

Một số kết quả xây dựng hệ thống ................................................... 27 3.2.

CHƢƠNG 4: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ...................................................33

Kết luận ........................................................................................... 33 4.1.

Hướng phát triển.............................................................................. 33 4.2.

TÀI LIỆU THAM KHẢO ..................................................................................................34

Page 5: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

DANH SÁCH HÌNH ẢNH

Hình 1. 1 Kiến trúc hệ thống IoT....................................................................... 1

Hình 1. 2 Hình ảnh tổng quan về IOT ............................................................... 3

Hình 1. 3 Các thành phần cơ sở của IoT ............................................................ 4

Hình 1. 4 Các mô hình triển khai trong IOT ...................................................... 7

Hình 1. 5 Mô hình hoạt động của MQTT .......................................................... 9

Hình 1. 6 Mô hình giao thức CoAP và HTTP .................................................. 10

Hình 1. 7 Mô hình hoạt động của Websocket .................................................. 11

Hình 2. 1 Mô hình tổng quan hệ thống ............................................................ 13

Hình 2. 2 Mô hình hoạt động của RESTful API .............................................. 15

Hình 3. 1 Mô hình triển khai ........................................................................... 18

Hình 3. 2 Bộ điều khiển tại nhà kính ............................................................... 19

Hình 3. 3 Màn hình thống kê của ứng dụng web ............................................. 28

Hình 3. 4 Màn hình điều khiển của ứng dụng web........................................... 28

Hình 3. 5 Màn hình cấu hình tự động .............................................................. 29

Hình 3. 6 Màn hình đăng nhập của ứng dụng di động ..................................... 29

Hình 3. 7 Màn hình điều khiển của ứng dụng di động ..................................... 30

Hình 3. 8 Màn hình xem thông số môi trường trên ứng dụng di động .............. 31

Hình 3. 9 Màn hình thống kê thông số môi trường trên ứng dụng di động ....... 32

Page 6: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

DANH SÁCH BẢNG BIỂU

Bảng 1. 1 Danh mục các loại thiết bị tại nhà kính ............................................ 16

Bảng 2. 1 Danh mục các thiết bị tại nhà kính .................................................. 21

Page 7: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

MỞ ĐẦU

Internet kết nối vạn vật – Internet of Things (IoT) là một mạng toàn cầu các

thiết bị truyền thông được kết nối với nhau. IoT tích hợp các khái niệm truyền thông

mọi lúc mọi nơi, tính toán tự động và thông minh. Trong môi trường IoT, “mọi thứ”

(things), đặc biệt là các vật dụng hàng ngày như đồ dùng gia dụng, quần áo, xe cộ,

đường xá, các vật liệu thông minh,… đều có thể đọc được, nhận dạng, định vị và có

thể điều khiển thông qua internet [1]. Điều này tạo ra nền tảng cho nhiều ứng dụng

mới như các ứng dụng giám sát và điều khiển áp dụng cho nhiều lĩnh vực trong đó có

nông nghiệp.

Hiện nay, trong xu thế của cuộc cách mạng công nghiệp 4.0, nông nghiệp công

nghệ cao là một trong những định hướng chính để phát triển kinh tế - xã hội của nước

ta. Riêng đối với Lâm Đồng, một địa phương rất có thế mạnh trong phát triển kinh tế

nông nghiệp với điều kiện khí hậu, đất đai thích hợp với 4 vùng sinh thái đặc trưng, có

gần 209.000 ha đất đỏ bazan thuận lợi cho phát triển đa dạng, quanh năm nhiều chủng

loại cây trồng như rau, hoa, chè, cà phê, tiêu, điều, cây ăn trái, phát triển chăn nuôi bò

sữa, nuôi cá nước lạnh, ứng dụng IoT trong sản xuất nông nghiệp cũng đã trở thành

một nhu cầu cấp thiết. Toàn tỉnh hiện có hơn 50.000ha đất sản xuất nông nghiệp sản

xuất theo mô hình ứng dụng công nghệ cao, chiếm 18% tổng diện tích sản xuất nông

nghiệp, tỷ trọng giá trị sản xuất nông nghiệp công nghệ cao đạt 30% giá trị toàn ngành,

80% giá trị xuất khẩu toàn tỉnh. Đã có rất nhiều mô hình ứng dụng IoT trong nông

nghiệp đã được triển khai và thực hiện. Chẳng hạn như mô hình ứng dụng IoT vào

trồng cây trong nhà lưới, nhà kính thông qua hệ thống giám sát thông số môi trường,

như: độ pH, độ dẫn điện EC của dung dịch thủy canh, nhiệt độ, độ ẩm không khí hay

mô hình điều khiển thông minh cho vườn cây thông qua việc giám sát nhiệt độ và độ

ẩm không khí; thông tin về độ ẩm đất được theo dõi và ghi nhận; giảm chi phí nhân

công, tăng năng suất và giảm lượng nước tiêu thụ. Hay mô hình tăng năng suất bằng

kỹ thuật chiếu sáng hiệu quả nhằm rút ngắn thời gian canh tác, tăng sản lượng đến hai

lần, cải thiện chất lượng rau quả (màu sắc, chất dinh dưỡng).

Tuy nhiên, việc ứng dụng IoT trong nông nghiệp công nghệ cao còn gặp nhiều

khó khăn như chi phí đầu tư ban đầu lớn; tồn tại tâm lý ngại thay đổi, ứng dụng giải

pháp công nghệ, kỹ thuật mới; sự liên kết giữa nghiên cứu - quản lý và chuyển giao -

Page 8: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

ứng dụng còn rời rạc. Theo thống kê năm 2017, trên địa bàn tỉnh hiện có khoảng 15

trang trại/doanh nghiệp ứng dụng IoT nhưng chỉ tập trung ở những doanh nghiệp lớn,

chưa áp dụng rộng rãi được mô hình cho nhiều trang trại và hộ nông dân khác [2].

Mục tiêu của đề tài là nghiên cứu các kiến trúc và nền tảng IoT để ứng dụng

xây dựng hệ thống mô phỏng hỗ trợ quản lý nhà kính, hướng tới việc tiếp cận phát

triển ứng dụng nhà kính thông minh có chi phí triển khai thấp và có thể ứng dụng rộng

rãi.

Đề tài “Ứng dụng Internet of Things xây dựng hệ thống hỗ trợ quản lý nhà

kính” được thực hiện góp phần giải quyết các vấn đề trên. Hệ thống sẽ cung cấp các

chức năng hỗ trợ quản lý và điều khiển các thiết bị của nhà kính theo thời gian thực,

thu thập thông số môi trường, hệ thống có thể tự động hóa dựa trên thông số môi

trường được gửi lên từ các cảm biến hoặc do người dùng lập lịch cho thiết bị bật tắt tự

động theo thời gian, thống kê và lập báo cáo.

Page 9: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 1

CHƢƠNG 1: TỔNG QUAN

Phƣơng pháp nghiên cứu 1.1.

Hướng tiếp cận của đề tài là dựa trên việc tìm hiểu, nghiên cứu kiến trúc, công

nghệ và các ứng dụng của IoT, đặc biệt là trong lĩnh vực nông nghiệp công nghệ cao

để phát triển hệ thống IoT quản lý nhà kính. Kiến trúc của hệ thống IoT có thể chia

làm 05 tầng: tầng nhận thức (Perception Layer), tầng mạng (Network layer), tầng trung

gian (Middleware layer), tầng ứng dụng (Application layer) và tầng nghiệp vụ

(Bussiness layer) [3].

Tầng nhận thức gồm các cảm biến và thiết bị chấp hành sử dụng trong IoT.

Tầng mạng làm nhiệm vụ chuyển dữ liệu tạo ra bởi các thiết bị vật lý của tầng nhận

thức đến tầng trung gian thông qua các công nghệ như RFID, ZigBee, WPAN, WSN,

DSL, UMTS, GPRS, WiFi, WiMax, LAN, WAN, 3G và LTE. Tầng trung gian có

chức năng chính là quản lý dịch vụ, kết nối dịch vụ với nơi yêu cầu thông qua các cơ

chế dùng địa chỉ và tên để cung cấp khả năng độc lập với phần cứng. Trong khi đó,

tầng ứng dụng cung cấp các dịch vụ được yêu cầu bởi người dùng. Dựa trên những

thông tin có được từ tầng ứng dụng, tầng nghiệp vụ - có nhiệm vụ quản lý các hoạt

động tổng thể của hệ thống IoT - sẽ xây dựng các mô hình nghiệp vụ, đồ thị, biểu

đồ,…

Hình 1. 1 Kiến trúc hệ thống IoT

Page 10: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 2

Dựa trên kiến trúc này, đề tài tập trung vào tầng ứng dụng để xây dựng hệ thống

hỗ trợ quản lý nhà kính. Để minh họa cho hoạt động của nhà kính, một bộ điều khiển

khiển được thiết kế và phát triển dựa trên board mạch vi xử lý Ardunio. Bộ điều khiển

được kết nối đến các thiết bị như thiết bị cảm biến, thiết bị chấp hành (actuator). Ứng

dụng được xây dựng dựa trên công nghệ điện toán đám mây, hỗ trợ nền tảng thiết bị di

động.

Nội dung và kết quả nghiên cứu 1.2.

Hệ thống hỗ trợ quản lý nhà kính được được xây dựng gồm các chức năng

chính như quản lý và điều khiển các thiết bị thời gian thực, thu thập thông số môi

trường, tự động hóa hoạt động thiết bị dựa trên thông số môi trường hoặc do người

dùng lập lịch, thống kê và xem thông số theo nhiều khung thời gian.

Công nghệ Internet of Things (IoT) 1.3.

1.3.1. Khái niệm

Mạng lưới vạn vật kết nối Internet hoặc là Mạng lưới thiết bị kết nối Internet

viết tắt là IoT (tiếng Anh: Internet of Things) là một kịch bản của thế giới, khi mà mỗi

đồ vật, con người được cung cấp một định danh của riêng mình, và tất cả có khả năng

truyền tải, trao đổi thông tin, dữ liệu qua một mạng duy nhất mà không cần đến sự

tương tác trực tiếp giữa người với người, hay người với máy tính. IoT đã phát triển từ

sự hội tụ của công nghệ không dây, công nghệ vi cơ điện tử và Internet. Nói đơn giản

là một tập hợp các thiết bị có khả năng kết nối với nhau, với Internet và với thế giới

bên ngoài để thu thập thông tin về môi trường xung quanh để thực hiện một công việc

nào đó.

Page 11: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 3

Hình 1. 2 Hình ảnh tổng quan về IOT

1.3.2. Đặc điểm của Internet of Things.

Tính năng kết nối liên thông (interconnectivity): Đối với IOT bất cứ thứ gì cũng

có thể kết nối được với nhau nhờ mạng lưới thông tin và các cơ sở hạ tầng liên lạc

tổng thể.

Các thành phần cơ sở của IoT gồm có: sự định danh, sự thụ cảm, truyền thông,

tính toán, các dịch vụ và ngữ nghĩa[1].

Page 12: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 4

Hình 1. 3 Các thành phần cơ sở của IoT

Sự định danh là yếu tố cần thiết của việc phát triển hệ thống IoT để đảm bảo

việc xác định các đối tượng cùng với dịch vụ được yêu cầu. Có nhiều phương pháp

định danh như sử dụng mã thiết bị điện tử (EPC) và mã rộng khắp (uCode). Ngoài ra

còn có các cơ chế định địa chỉ như địa chỉ IP. Các phương thức định địa chỉ phổ biến

hiện nay gồm IPv4, IPv6 và 6LoWPAN-một giao thức cung cấp chức năng nén gói tin

IPv6. Với không gian địa chỉ của giao thức IPv6 sẽ đảm bảo cung cấp đủ cho nhu cầu

rất lớn của các thiết bị IoT.

Phần cảm biến làm nhiệm vụ thu thập dữ liệu từ môi trường và gửi đến cơ sở

dữ liệu đặt cục bô cùng vị trí với cảm biến hoặc các cơ sở dữ liệu ở xa, kết nối thông

qua các công nghệ điện toán đám mây. Các cảm biến có thể thấy trong hệ thống IoT

như cảm biến thông minh, thiết bị chấp hành, hoặc cảm biến trong thiết bị đeo trên

người.

Sự truyền thông là thành phần thiết yếu của tất cả các thiết bị IoT. Do những

giới hạn xuất phát từ đặc điểm của vạn vật (things), ví dụ như pin nguồn hoạt động hay

giới hạn về phạm vi truyền dữ liệu, nhiều giao thức truyền thông khác nhau được sử

dụng như WiFi, ZigBee, GSM, GPRS, UMTS, 3G, LTE và 5G. Chuẩn IEEE

802.15.4e được phát hành bởi IEEE vào năm 2012 đã cải tiến và bổ sung một số tính

năng so với chuẩn 802.15.4 trước đó, để giải quyết yêu cầu cấp thiết của các ứng dụng

trong công nghiệp nhúng. Ngoài ra còn có một số kỹ thuật truyền thông khác như

RFID, NFC và Beacons (Bluetooth Low Energy). CwT+ (Window tree plus)-giao thức

Page 13: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 5

xử lý xung đột sử dụng ít bộ nhớ được đề xuất để làm đơn giản quá trình giải quyết

xung động của mạng RFID. Trong đó, một thẻ NFC có giá thành thấp, cho phép các

thiết bị có thể dễ dàng giao tiếp với điện thoại thông minh hay máy tính. Còn công

nghệ Bluetooth 4.2 cung cấp đặt tính Bluetooth Low Energy, một công nghệ truyền

thông tiêu thụ ít năng lượng, được áp dụng trong các mạng 6LoWPAN.

Hơn nữa, IoT được triển khai trên nhiều nền tảng phần cứng khác nhau như

Arduino, Intel Galileo, Raspberry Pi hay ESP8266. Các công nghệ điện toán đám mây

cũng đóng vai trò quan trọng trong chức năng tính toán của hệ thống IoT bởi vì cung

cấp các tính năng lưu trữ và xử lý dữ liệu thời gian thực.

Các dịch vụ IoT có thể phân thành các nhóm dịch vụ như Định danh (Identity

related), tập hợp thông tin (Information aggregation) , cộng tác (Collaborative-Aware)

và rộng khắp (Ubiquitous). Dịch vụ định danh tập trung vào việc xác định các thực

thể, trong khi dịch vụ tập hợp thu thập dữ liệu từ cảm biến và gửi cho ứng dụng phía

sau. Dịch vụ cộng tác đưa ra quyết định dựa trên kết quả phân tích dữ liệu thu được và

dịch vụ rộng khắp giúp dịch vụ cộng tác hoạt động mọi lúc mọi nơi.

Khái niệm ngữ nghĩa trong IoT quan tâm đến khả năng rút trích tri thức từ máy

để cung cấp theo yêu cầu bằng cách khai phá và sử dụng các tài nguyên và mô hình

hóa thông tin. Ví dụ về các công nghệ web ngữ nghĩa (Semantic web) gồm Resource

Description Framework (RDF) and the Web Ontology Language (OWL).

1.3.3. Ứng dụng của Internet of Things

Internet of Things có thể ứng dụng được trong bất kì lĩnh vực nào mà chúng ta

muốn. Một số lĩnh vực nổi bật hiện nay được ứng dụng IoT nhiều nhất như:

Nhà kính thông minh

Ngôi nhà thông minh

Quản lý các thiết bị cá nhân: thiết bị đeo tay để đo nhịp tim huyết áp

Quản lý môi trường:

Xử lý trong các tình huống khẩn cấp

Quản lý giao thông

Lĩnh vực mua sắm thông minh

Đồ dùng sinh hoạt hằng ngày: như máy pha coffee, bình nóng lạnh

Page 14: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 6

Tự động hóa: các công xưởng sản xuất xe hơi đã áp dụng công nghệ IoT

để cắt giảm hầu hết các công nhân, thay vào đó là các bộ máy tích hợp trí

thông minh nhân tạo cho năng suất tăng gấp nhiều lần và độ chính xác

cao hơn.

1.3.4. Ƣu và nhƣợc điểm của Internet of Things

Ưu điểm:

Kết nối và truy xuất thông tin nhanh

Tiện dụng cho mọi hoạt động của con người

Tiết kiệm được thời gian khi sử dụng IOT

Nâng cao năng xuất trong lao động và sản xuất

Nhược điểm:

Chi phí để triền khai hệ thống hoàn thiện cao

Tính bảo mật về thông tin chưa cao

Các mô hình triển khai IoT 1.4.

Bài toán truyền thông trong IoT chủ yếu liên quan tới những vấn đề phát sinh

trong việc truyền thông giữa 3 nhóm: thiết bị, gateways và cloud. Cụ thể hơn thì quá

trình truyền thông đó chủ yếu liên quan tới trao đổi message (thông điệp). Việc trao

đổi message thường tuân theo một mô hình truyền thông nhất định. Và với mỗi mô

hình truyền thông thì cách trao đổi message lại khác nhau đôi chút. Để lựa chọn được

giải pháp truyền thông phù hợp cho sản phẩm IoT, chúng ta nên xem xét đầy đủ các

mô hình truyền thông IoT.

Dựa vào cách thức trao đổi thông điệp (message), ta có thể chia các mô hình

truyền thông IoT thành 4 nhóm như sau:

Từ xa (Telemetry): dữ liệu di chuyển một chiều từ thiết bị đến hệ thống.

Mục đích là gửi trạng thái của thiết bị lên phía hệ thống

Yêu cầu (Inquiry): gửi các yêu cầu của thiết bị lên hệ thống, các yêu

cầu này liên quan tới việc thu thập các thông tin mà thiết bị hiện tại

không thu thập được. Các thông tin đó được dùng để kích hoạt một sự

kiện nào đó được mô tả từ trước

Page 15: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 7

Lệnh (Command): gửi mệnh lệnh từ hệ thống tới thiết bị hoặc 1 nhóm

thiết bị để bắt các thiết bị đó thực thi một công việc cụ thể, đồng thời yêu

cầu trả về trạng thái thực thi công việc

Thông báo (Notification): gần giống với Telemetry, ở mô hình này,

thông tin cũng di chuyển 1 chiều, nhưng là từ hệ thống tới các thiết bị

(chiều ngược lại so với Telemetry)

Ta có thể hình dung một cách trực quan về 4 mô hình này như sau:

Hình 1. 4 Các mô hình triển khai trong IOT

Mỗi mô hình trên có thể cần đến việc lưu trữ dữ liệu. Khi đó, các cơ chế store &

forward (lưu trữ và chuyên tiếp) sẽ được tận dụng (ví dụ: hàng đợi, topic/subscription

trong các broker hoặc socket trong các room). Nếu bên gửi và bên nhận cùng online, ta

có thể dùng các giải pháp direct message (tin nhắn trực tiếp).

Cơ chế store & forward thường được áp dụng trong mô hình Command. Bởi vì

khi gửi lệnh cho một thiết bị thì thiết bị đó có thể không online... Tình huống này lại

phát sinh ra một giải pháp khác, đó là sử dụng thuộc tính TTL cho message (Time To

Live). Khi thiết bị trở lại trạng thái online, TTL giúp device tránh được việc thực thi

các lệnh quá cũ hoặc một giải pháp nữa là lưu trữ các trạng thái xuống database và khi

thiết bị online trở lại thì việc đầu tiên là yêu cầu trạng thái và các message đã được lưu

trữ để thiết bị có thể cập nhật lại trạng thái mới nhất. Direct message (tin nhắn trực

tiếp) thì lại được áp dụng cho mô hình Telemetry (mặc dù đôi khi lưu trữ các dữ liệu

gửi bằng mô hình Telemetry vẫn có ích).

Page 16: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 8

1.4.1. Telemetry

Giao thức HTTP có thể thực thi mô hình này theo 2 cách: hoạt động như một

client, gửi yêu cầu PUT/POST chứa các thông tin trạng thái cần cập nhật sang một hệ

thống khác hoặc hoạt động như một server, nhận những yêu cầu GET từ các hệ thống

khác để thu thập dữ liệu. Trong bất kì trường hợp nào, việc thực thi này xoay quanh 2

hành động chính là request / reply (yêu cầu / hồi đáp).

1.4.2. Inquiry

Sử dụng HTTP để gán vào mô hình này khá đơn giản vì bản thân giao thức

HTTP đã hoạt động dưới hình thức gửi request - nhận response. Do đó, khi implement

theo mô hình Inquiry, việc trao đổi thông điệp với HTTP chỉ xoay quanh các yêu cầu

GET từ thiết bị lên hệ thống để lấy thông tin.

1.4.3. Command

Mô hình này hơi ngược so với Inquiry, bên bắt đầu quá trình truyền thông lại là

hệ thống chứ không phải thiết bị.

Với giao thức HTTP, mô hình này có thể implement bằng cách cho thiết bị

nhận một trong 2 vai trò: client hoặc server. Nếu thiết bị hoạt động như một server, hệ

thống sẽ gửi yêu cầu POST và chờ đợi phản hồi tương ứng (đồng bộ hóa) từ phía thiết

bị để biết quá trình thực thi mệnh lệnh có diễn ra suôn sẻ không... Nếu thiết bị hoạt

động như client, thiết bị sẽ gửi GET request lên hệ thống để hỏi xem có mệnh lệnh nào

cần thực thi không. Nếu không có lệnh nào, client sẽ phải đợi (đồng bộ hóa). Sau khi

nhận và thực thi lệnh, thiết bị sẽ gửi POST request lên hệ thống để thông báo kết quả

thực thi mệnh lệnh.

1.4.4. Notification

Mô hình này ngược với Telemetry, luồng lưu thông thông điệp thì lại gần giống

với mô hình Command, tuy nhiên việc trao đổi thông điệp theo mô hình Notification

không cần phản hồi cho mỗi thông điệp nhận được.

Với giao thức HTTP, thiết bị nhận thông báo từ hệ thống. Trong quá trình

truyền thông với thiết bị, hệ thống hoạt động như một server (hệ thống sẽ gửi yêu

POST) hoặc client (hệ thống sẽ gửi yêu cầu GET). Nếu hệ thống hoạt động như một

client, nó chỉ có thể phản hồi khi thông báo từ phía thiết bị đã sẵn sàng hoặc phản hồi

ngay lập tức.

Page 17: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 9

Một số giao thức truyền dữ liệu sử dụng trong IoT. 1.5.

1.5.1. MQTT

MQTT là một giao thức publish/subscribe bản tin, được thiết kế cho công nghệ

M2M (Machine to Machine) gọn nhẹ.

MQTT kiểm soát các gói tin header được giữ sao cho càng nhỏ càng tốt. Mỗi

gói tin điều khiển MQTT bao gồm ba phần, phần header cố định, phần header thay đổi

và payload. Mỗi gói tin điều khiển MQTT có header cố định 2 byte. Không phải tất cả

các gói tin điều khiển có phần header thay đổi và payload. Phần header thay đổi chứa

thông tin nhận dạng của gói tin nếu nó được sử dụng bởi gói tin kiểm soát. Phần

payload có dung lượng lên đến 256 MB được đính kèm trong các gói tin. Việc có một

header nhỏ làm cho giao thức này phù hợp với ứng dụng IoT bằng cách giảm lưu

lượng dữ liệu truyền qua mạng hạn chế băng thông.

Hình 1. 5 Mô hình hoạt động của MQTT

1.5.1.1. Ƣu điểm

Ít tốn băng thông

Độ tin cậy cao

1.5.1.2. Nhƣợc điểm

Độ bảo mật thông tin không cao

1.5.2. CoAP

CoAP là một giao thức truyền tải tài liệu theo mô hình client/server dựa trên

internet tương tự như giao thức HTTP nhưng được thiết kế cho các thiết bị ràng buộc.

Giao thức này hỗ trợ một giao thức one-to-one để chuyển đổi trạng thái thông tin giữa

client và server.

Page 18: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 10

CoAP sử dụng UDP (User Datagram Protocol), không hỗ trợ TCP, ngoài ra còn

hỗ trợ địa chỉ broadcast và multicast, truyền thông CoAP thông qua các datagram phi

kết nối (connectionless) có thể được sử dụng trên các giao thức truyền thông dựa trên

các gói.

UDP có thể dễ dàng triển khai trên các vi điều khiển hơn TCP nhưng các công

cụ bảo mật như SSL/TSL không có sẵn, tuy nhiên ta có thể sử dụng Datagram

Transport Layer Security (DTLS) để thay thế.

Hình 1. 6 Mô hình giao thức CoAP và HTTP

1.5.2.1. Ƣu điểm

Dễ cài đặt và triển khai

1.5.2.2. Nhƣợc điểm

Không bảo mật

1.5.3. Websocket

WebSoket là công nghệ hỗ trợ giao tiếp hai chiều giữa client và server bằng

cách sử dụng một TCP socket để tạo một kết nối hiệu quả và ít tốn kém. Mặc dù được

thiết kế để chuyên sử dụng cho các ứng dụng web, lập trình viên vẫn có thể đưa chúng

vào bất kì loại ứng dụng nào.

Page 19: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 11

Hình 1. 7 Mô hình hoạt động của Websocket

1.5.3.1. Ƣu điểm

WebSockets cung cấp khả năng giao tiếp hai chiều mạnh mẽ, có độ trễ

thấp và dễ xử lý lỗi. Không cần phải có nhiều kết nối như phương pháp

Comet long-polling và cũng không có những nhược điểm như Comet

streaming.

API cũng rất dễ sử dụng trực tiếp mà không cần bất kỳ các tầng bổ sung

nào, so với Comet, thường đòi hỏi một thư viện tốt để xử lý kết nối lại,

thời gian chờ timeout, các Ajax request (yêu cầu Ajax), các tin báo nhận

và các dạng truyền tải tùy chọn khác nhau (Ajax long-polling và jsonp

polling).

1.5.3.2. Nhƣợc điểm

Nó là một đặc tả mới của HTML5, nên nó vẫn chưa được tất cả các trình

duyệt hỗ trợ.

Không có phạm vi yêu cầu nào. Do WebSocket là một TCP socket chứ

không phải là HTTP request, nên không dễ sử dụng các dịch vụ có phạm

vi-yêu cầu, như SessionInViewFilter của Hibernate. Hibernate là một

framework kinh điển cung cấp một bộ lọc xung quanh một yêu cầu

HTTP. Khi bắt đầu một yêu cầu, nó sẽ thiết lập một contest (chứa các

Page 20: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 12

transaction và liên kết JDBC) được ràng buộc với luồng yêu cầu. Khi

yêu cầu đó kết thúc, bộ lọc hủy bỏ contest này.

Page 21: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 13

CHƢƠNG 2: PHÂN TÍCH, THIẾT KẾ HỆ THỐNG

Phần này trình bày tổng quan về các thành phần chính cùng với chức năng

tương ứng trong hệ thống. Cụ thể, hệ thống được gồm có 4 phân hệ chính như sau:

Ứng dụng trên máy chủ (Server)

Cơ sở dữ liệu lưu trữ (Database)

Ứng dụng di động (Mobile Application)

Hệ thống thiết bị tại nhà kính

Hình 2. 1 Mô hình tổng quan hệ thống

Ở mô hình trên máy chủ web là trung tâm cho mọi giao tiếp giữa các thiết bị,

ứng dụng di động và trang web của người dùng, mọi thông tin về thông số môi trường

được gửi lên từ các thiết bị cảm biến sau đó được lưu trữ xuống cơ sở dữ liệu và hiển

thị lên màn hình di động cũng như trang web của người sử dụng các thông số môi

trường đã được thu thập trước đó cũng như trạng thái của các thiết bị.

Ứng dụng trên máy chủ (Server) 2.1.

Đóng vài trò trung tâm của hệ thống, được phát triển dựa trên các công nghệ

điện toán đám mây, cung cấp dịch vụ cho người dùng thông qua hai cách thức là ứng

dụng web và ứng dụng trên thiết bị di động.

Việc giao tiếp với các thiết bị của nhà kính được thực hiện thông qua giao thức

Websocket để lấy các thông số môi trường cũng như gửi tín hiệu điều khiển cho thiết

Page 22: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 14

bị. Ứng dụng web được xây dựng trên nền tảng NodeJS, một nền tảng công nghệ mới

nhưng đầy sức mạnh, được duy trì và phát triển bởi cộng đồng đông đảo lập trình viên

trên toàn thế giới. Nền tảng mã nguồn mở này cũng cung cấp cơ chế tạo các thư viện

API cho phép ứng dụng di động được kết nối dễ dàng.

Cơ sở dữ liệu lƣu trữ 2.2.

Với đặc trưng của ứng dụng IoT là lượng dữ liệu phát sinh trong quá trình hoạt

động của hệ thống rất lớn (big data), do đó cơ sở dữ liệu của ứng dụng phải đảm bảo

được việc lưu trữ dữ liệu lớn và tốc độ truy xuất. Một phương án tối ưu là sử dụng cơ

sở dữ liệu NoSQL, tức là dữ liệu không lưu theo cấu trúc bảng mà lưu theo định dạng

JSON, thay cho cơ sở dữ liệu SQL thông thường.

Hệ thống được phát triển sử dụng cơ sở dữ liệu MongoDB. Cơ sở dữ liệu này

được lưu trữ theo kiểu BJSON, đảm bảo tốc độ truy xuất và lưu trữ với một lượng lớn

cơ sở dữ liệu, tiết kiệm được dung lượng về phần cứng một cách tối đa.

Ứng dụng di động 2.3.

Ứng dụng di động được xây dựng trên nền tảng của React Native nó được bảo

trợ bởi công ty mạng xã hội lớn nhất toàn cầu Facebook. Công nghệ này có thể tương

thích với hệ điều hành IOS và Android, xây dựng một lần và chạy được trên nhiều nền

tảng nhưng vẫn đảm bảo về mặt tốc độ cũng như hiệu suất của ứng dụng.

2.3.1. Mô hình giao tiếp giữa ứng dụng di động và máy chủ

Mô hình giao tiếp giữa ứng dụng di động và máy chủ dựa theo kiến trúc của

RESTful API Web service.

REST (Representational State Transfer) (đôi khi còn được viết là ReST) là một

kiểu kiến trúc được sử dụng trong việc giao tiếp giữa các máy tính (máy tính cá nhân

và máy chủ của trang web) trong việc quản lý các tài nguyên trên internet. REST được

sử dụng rất nhiều trong việc phát triển các ứng dụng Web Services sử dụng giao thức

HTTP trong giao tiếp thông qua mạng internet. Các ứng dụng sử dụng kiến trúc REST

này thì sẽ được gọi là ứng dụng phát triển theo kiểu RESTful.

Page 23: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 15

Hình 2. 2 Mô hình hoạt động của RESTful API

RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng

web để quản lý các tài nguyên. RESTful là một trong những kiểu thiết kế API được sử

dụng phổ biến nhất ngày nay.

a) Giới thiệu về nền tảng React Native

React Native là một framework cho phép các xây dựng các ứng dụng trên cả hai

nền tảng Android và iOS sử dụng ngôn ngữ lập trình Javascript.

Một ứng dụng react native gồm 2 phần:

+ Phần hiển thị (view): được biên dịch từ Javascript sẽ ánh xạ với các thành

phần của hệ thống (Android và IOS).

+ Phần xử lý: được thực hiện trực tiếp bằng bộ core xử lý của Javascript

b) Các chức năng chính trên ứng dụng di động

Đăng nhập, đăng xuất

Xem thông số nhiệt độ, độ ẩm, cường độ ánh sáng, .. tại thời điểm hiện tại

Điều khiển các thiết bị theo thời gian thực

Báo cáo thống kê các thống số môi trường theo khoảng thời gian

Cấu hình điều khiển theo thông số môi trường và lập lịch

Hệ thống thiết bị tại nhà kính 2.4.

Gồm các thiết bị điều khiển (controller), cảm biến (sensor), thiết bị chấp hành

(actuator). Các thiết bị này được lập trình để thu thập và gửi các thông số môi trường

(độ ẩm, ánh sáng) lên máy chủ, đồng thời nhận lệnh từ máy chủ để điều khiển các thiết

bị như đèn, quạt gió,…

Page 24: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 16

Danh mục các loại thiết bị tại nhà kính được liệt kê trong bảng sau.

STT Loại thiết bị Thiết bị Chức năng

1 Thiết bị điều

khiển

Module ESP8266 NodeMCU

Module ESP8266 ESP-01

Arduino Uno

Có hai chức năng chính là

điều khiển rơ le, bật tắt các

công tắc và thu thập dữ

liệu từ các cảm biến gửi

lên máy chủ.

2 Cảm biến DTH11

BH1750

Thu thập các thông số môi

trường như: nhiệt độ, độ

ẩm, cường độ ánh sáng.

3 Thiết bị chấp

hành Relay Module

Nhận lệnh từ bộ điều khiển

để bật tắt thiết bị đèn, quạt.

Bảng 1. 1 Danh mục các loại thiết bị tại nhà kính

Page 25: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 17

CHƢƠNG 3: TRIỂN KHAI HỆ THỐNG

Như phân tích yêu cầu của hệ thống ở các phần trên, hệ thống sẽ được xây

dựng, phát triển với mục tiêu là hỗ trợ điều khiển, tự động hóa một số qui trình quản lý

nhà kính. Chương này sẽ trình bày chi tiết về các công nghệ, kỹ thuật được sử dụng để

triển khai hệ thống cũng như một số hình ảnh minh họa ứng dụng đã được xây dựng.

Hệ thống hỗ trợ quản lý nhà kính được xây dựng đã hoàn thiện những chức

năng chính sau:

Xây dựng hệ thống thống ứng dụng trên máy chủ có khả năng mở rộng

cao, kết nối được với nhiều thiết bị và nền tảng phần cứng khác nhau.

Xây dựng chức năng phân quyền cho người dùng.

Điều khiển thiết bị và tiếp nhận thông tin môi trường từ các cảm biến.

Chức năng thu thập dữ liệu và lưu trữ, thống kê chi tiết ra dạng biểu đồ

từ các thông tin được gửi lên.

Chức năng nhận biết thiết bị đang hoạt động hay đã mất kết nối hiển thị

trên Google Map.

Chức năng điều khiển tự động theo thông số môi trường và lập lịch.

Mô tả hệ thống 3.1.

Có thể thấy trong mô hình triển khai chi tiết của hệ thống, các thành phần (ứng

dụng máy chủ, thiết vị, các thiết bị sử dụng đầu cuối) truyền thông với nhau thông qua

mạng Internet sử dụng công nghệ không dây (Wi-fi).

Page 26: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 18

Hình 3. 1 Mô hình triển khai

3.1.1. Máy chủ (Server)

Ứng dụng web được xây dựng trên máy chủ sử dụng công nghệ NodeJS, cụ thể

là Express Framework, một trong những framework được sử dụng phổ biến nhất của

NodeJS giúp xây dựng được ứng dụng hiệu quả. Máy chủ cũng cung cấp các API cho

hoạt động của ứng dụng di động.

Dưới đây là đoạn mã minh họa cho một server xây dựng bằng NodeJS và

Socket.IO.

//Khai báo các thư viện cần sử dụng

var express = require('express');

var path = require('path');

var http = require('http')

//Khai báo View

app.set('view engine', 'ejs');

app.set('views', path.join(__dirname, 'views'));

//Khai báo server và biến io của socket

var server = require("http").Server(app);

var io = require("socket.io")(server);

//Lắng nghe sự kiện kết nối từ client đến server

io.on('connection', function (socket) {

Page 27: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 19

//Lắng nghe yêu cầu lấy trạng thái của thiết bị

socket.on('my-devices-state', function () {

socket.emit('your-devices-state',jsonResult);

})

//Lắng nghe nếu có một trong các client bị mất kết nối

socket.on('disconnect', function () {

console.log("disconnect");

})

})

//Tạo ra web server lắng nghe ở cổng 3000

server.listen(3000, function () {

console.log('Server started on port ' + app.get('port'));

});

3.1.2. Thiết bị tại nhà kính

Mô hình triển khai cung cấp giải pháp kết nối và điều khiển các thiết bị điện

như đèn và quạt trong nhà kính từ web hoặc từ ứng dụng di động, để điều khiển được

đèn và quạt thì ESP8266 NodeMCU phải có kết nối Wifi sau đó nó sẽ tự động liên hệ

tới Server thông qua Socket.IO để đảm bảo thông tin truyền nhận điều khiển là thời

gian thực.

Hình 3. 2 Bộ điều khiển tại nhà kính

Page 28: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 20

Việc thu thập thông số nhà kính từ các cảm biến nhiệt độ, độ ẩm DHT11 và

cảm biến ánh sáng BH1750 được chuyển cho các chân trên Arduino và Arduino sẽ

chuyển cho ESP8266 V1 có kết nối Wifi để gửi toàn bộ dữ liệu thu thập được lên máy

chủ và lưu trữ những dữ liệu này xuống cơ sở dữ liệu. Mô hình này có tính nhất quán

cao bởi vì chức năng điều khiển thời gian thực sẽ được giao cho ESP8266 NodeMCU

còn thu thập dữ liệu và gửi lên thì sẽ giao cho Arduino và ESP8266.

Vì sao phải tách ra phần điều khiển và phần thu thập dữ liệu riêng biệt như vậy?

Câu trả lời là bởi nếu giao nhiều nhiệm vụ cho một vi điều khiển thì sẽ không đảm bảo

nó sẽ hoạt động tốt và dữ liệu truyền nhận sẽ bị chậm trễ, bởi do lập trình cho các vi

điều khiển bằng ngôn ngữ C++ các đoạn lệnh sẽ được chạy và xử lý tuần tự vì thế sẽ

gây ra sự chậm trễ lớn nếu như chỉ dùng 1 vi điều khiển.

Bảng sau mô tả chi tiết thông số và chức năng các thiết bị sử dụng tại nhà kính:

Tên thiết bị Thông số Chức năng

ESP8266

NodeMCU

Tên: Module ESP8266

NodeMCU

IC chính: ESP8266 Wifi SoC

Chip nạp và giao tiếp UART:

CP2102

Cấp nguồn: 5VDC MicroUSB

hoặc Vin

Giữ chức năng điều khiển

bật tắt các công tắc

Arduino Uno

Tên: Mạch Arduino Uno

Chíp: ATmega328

Cấp nguồn: 5V

Giữ chức năng thu thập dữ

liệu từ các cảm biến gửi lên

Server

ESP8266 V1

Tên: Module Wifi ESP8266

Version 1

Giao tiếp: UART

Cấp nguồn: 3.3V

Hỗ trợ kết nối vào Wifi để

đẩy các thông số từ các

cảm biến mà Arduino thu

thập được lên Server

DHT11

Tên: Cảm biến nhiệt độ, độ ẩm

DHT11

Cấp nguồn: 3 - 5V

Đo tốt ở dải nhiệt độ từ 0 đến 50

độ C sai số +- 2 độ C.

Cảm biến thông số nhiệt

độ, độ ẩm của môi trường

BH1750 Tên: Cảm biến cường độ ánh Cảm biến thông số về

Page 29: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 21

sáng BH1750

Cấp nguồn: 3 – 5V

Khoảng đo: 1 -> 65535 lux

cường độ ánh sáng

Relay

Tên: 4 Relay

Số Relay: 4

Điện áp kích: 5VDC

Relay dùng để bất tắt các

thiết bị dựa vào chỉ thị của

ESP8266 NodeMCU

Bảng 2. 1 Danh mục các thiết bị tại nhà kính

Bộ điều khiển tại nhà kính sử dụng thư viện Socket.IO để truyền thông và giao

tiếp với Web server đã thiết lập ở trên. Đoạn mã sau minh hoạ việc sửa dụng Arduino

IDE để viết và nạp mã cho bộ điều khiển bằng ngôn ngữ được viết là C++.

#include <ESP8266WiFi.h>

#include <SocketIOClient.h>

#include <ArduinoJSON.h>

SocketIOClient client;

//Tên mạng Wifi để kết nối vào Wifi để ra ngoài Internet

const char* ssid = "PhongVo";

const char* password = "123456789";

char host[] = "192.168.1.54"; //Địa chỉ của Server

int port = 3484; //Cổng dịch vụ socket server do chúng ta tạo!

int D0 = 0, D1 = 1, D2 = 2;

int leds[3] = { D0, D1, D2 };

//từ khóa extern: dùng để #include các biến toàn cục ở một số thư viện khác.

Trong thư viện SocketIOClient có hai biến toàn cục

// mà chúng ta cần quan tâm đó là

// RID: Tên hàm (tên sự kiện

// Rfull: Danh sách biến (được đóng gói lại là chuối JSON)

extern String RID;

extern String Rfull;

void setup()

{

Serial.begin(115200);

delay(10);

//Thiết lập các chân OUTPUT

pinMode(leds[0], OUTPUT);

pinMode(leds[1], OUTPUT);

pinMode(leds[2], OUTPUT);

//Kết nối vào mạng Wifi

Page 30: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 22

WiFi.begin(ssid, password);

//Chờ đến khi đã được kết nối WIFI

while (WiFi.status() != WL_CONNECTED) { //Thoát ra khỏi vòng

delay(500);

Serial.print('.');

}

//Cố gắng kết nối đến Server

if (!client.connect(host, port)) {

Serial.println(F("Ket noi den socket server that bai!"));

return;

}

//Khi đã kết nối thành công

if (client.connected()) {

//Thì gửi sự kiện ("connection") đến Socket server ahihi.

client.send("connection", "message", "Connected !!!!");

delay(1000);

client.send("my-devices-state");

}

}

void loop()

{

//Khi bắt được bất kỳ sự kiện nào thì chúng ta có hai tham số:

// +RID: Tên sự kiện

// +RFull: Danh sách tham số được nén thành chuỗi JSON!

if (client.monitor()) {

Serial.println(RID);

Serial.println(Rfull);

if (RID == "your-devices-state"){

//Chuyển đổi thông điệp nhận được về dạng JSON

StaticJsonBuffer<300> JSONBuffer;

JsonObject& parsed = JSONBuffer.parseObject(Rfull);

//Lấy các thông tin trạng thái từ Server gửi về

//Sử dụng lệnh digitalWrite để bật tắt công tắc

digitalWrite(leds[0], parsed["mydev"][0]);

digitalWrite(leds[1], parsed["mydev"][1]);

digitalWrite(leds[2], parsed["mydev"][2]);

}

}

}

3.1.3. Ứng dụng di động

Các API được xây dựng để ứng dụng di động có thể giao tiếp với server. Trước

hết cần tạo API để tạo token khi người dùng đăng nhập như sau:

// login

Page 31: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 23

exports.login = function(req, res) {

var username = req.body.email;

var password = req.body.password;

var dbname = req.body.dbname;

mongoose.connect('mongodb://localhost:27017/'+dbname);

User.findOne({

'email': username

}, function(err, user) {

console.log(user);

if (!user) {

res.json({ error : 'User is not exist'})

} else if (user && user.comparePassword(password)) {

var payload = { email: user.email, dbname:dbname };

var jwtToken = jwt.sign(payload, config.jwtSecret, { expiresIn: 1

* 30000000 });

console.log('jwtToken: ' + jwtToken);

Farm.find({},function (err, farm){

var farms = farm.map(function(item){

return item.name;

})

res.json({

name:user.username,

dbname:dbname,

email:user.email,

farms:farms,

token:jwtToken

})

})

} else {

res.json({ error : 'Login Error'})

}

})

};

API để xác thực token:

exports.isAuthenticated = function(req, res, next) {

if (req.headers &&

req.headers.authorization &&

req.headers.authorization.split(' ')[0] === 'JWT') {

var jwtToken = req.headers.authorization.split(' ')[1];

jwt.verify(jwtToken, config.jwtSecret, function(err, payload) {

if (err) {

console.log(err);

res.status(401).json(

{success:false,message: 'Unauthorized user!'});

} else {

Page 32: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 24

req.payload = payload;

next();

}

});

} else {

res.status(401).json({ message: 'Unauthorized user!' });

}

};

API để lấy trạng thái các cảm biến:

exports.get_real_time = function(req, res){

var payload = req.payload;

var farm = req.params.farm;

console.log(farm);

mongoose.connect('mongodb://localhost:27017/'+payload.dbname);

Model.findOne({"farm_name":farm},function(err,model){

if(err)

res.send(err);

res.json(model);

})

.sort({

"create_date": -1

})

.limit(1)

};

API nhận yêu cầu từ ứng dụng di động:

'use strict';

module.exports = function(app) {

var auth = require('../controllers/AuthController');

var device = require('../controllers/DeviceController');

var temphumi = require('../controllers/TempHumiController');

var user = require('../controllers/UserController');

var microController = require('../controllers/MicroController');

var farm = require('../controllers/FarmController');

var controlType = require('../controllers/ControlTypeController');

var automaticSchedule =

require('../controllers/AutomaticScheduleTimeController');

var automaticControl = require('../controllers/AutomaticControlController');

app.route('/device')

.get(auth.isAuthenticated,device.get_all)

.post(auth.isAuthenticated,device.create);

app.route('/devicefarm/:farm')

.get(auth.isAuthenticated, device.get_by_farm);

Page 33: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 25

app.route('/device/:id')

.get(auth.isAuthenticated,device.single)

.put(auth.isAuthenticated,device.update)

.delete(auth.isAuthenticated,device.delete);

app.route('/microcontroller')

.get(auth.isAuthenticated,microController.get_all)

.post(auth.isAuthenticated,microController.create);

Đoạn mã minh họa xây dựng điều khiển đèn thời sử dụng API và Socket.io trên

ứng dụng di động:

class DeviceScreen extends Component {

constructor(props) {

super(props);

this.state= {

ListDevice: new Array(),

isLoading: false,

isRefreshing:false,

error:"",

selectedFarm:"KV1"

};

this.socket = io('http://35.185.177.64:3484', {

transports: ['websocket']// you need to explicitly tell it to use

websockets,

});

console.log(props);

this.onLedChange = this.onLedChange.bind(this);

this.reloadListDevice = this.reloadListDevice.bind(this);

this.handleRefreshData = this.handleRefreshData.bind(this);

}

onLedChange(data){

this.reloadListDevice(data);

}

async getListDevice(farm){

const {user} = this.props.user;

const json = await AppWorker.getListDevice(user.token,farm);

if (json === undefined) {

this.setState({error:'Can\'t get data from server', isLoading:false,

isRefreshing:false});

} else if (json.code) {

this.setState({error:json.message});

} else {

this.setState({ListDevice:json,isLoading:false,isRefreshing:false});

Page 34: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 26

}

}

reloadListDevice(data){

this.setState({ListDevice:data.led});

}

componentDidMount() {

const {user} =this.props.user;

this.socket.on('connect',function(s){

this.socket.emit("request-from-client",{ client: user.dbname,

farm_name: this.state.selectedFarm });

}.bind(this));

this.socket.on('LED_website', this.onLedChange);

this.setState({selectedFarm:user.farms[0]});

this.getListDevice(user.farms[0]);

}

onSendLed(data){

var list = this.state.ListDevice;

var index = list.findIndex(x=>x.id===data.id);

list[index] = data;

this.socket.emit("led-website-change-state",{

devices:list

});

}

handleSelectFarm(farm) {

this.setState({ selectedFarm: farm });

this.getListDevice(farm);

}

handleRefreshData(){

this.setState({isRefreshing:true});

this.getListDevice(this.state.selectedFarm);

}

_renderItem(item) {

return (<DeviceItem device={item}

onSendLed={()=>this.onSendLed(item)}/>)

}

renderHeader(user) {

return (<SelectFarm

farms={user.farms}

selected={this.state.selectedFarm}

onSelectedSubmit={this.handleSelectFarm.bind(this)} />);

};

render() {

const {isLoading,ListDevice, isRefreshing}=this.state;

const {user} = this.props.user;

return (<FlatList

contentContainerStyle={[styles.flatlist,{flexDirection: 'column',

marginTop:50}]}

data={ListDevice}

Page 35: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 27

keyExtractor={(item, index) => index}

renderItem={({ item }) => this._renderItem(item) }

scrollEventThrottle={1}

refreshing={isRefreshing}

numColumns={4}

refreshControl={

<RefreshControl

refreshing={isRefreshing}

onRefresh={this.handleRefreshData}

/>

}

ListHeaderComponent={this.renderHeader(user)}

onEndReachedThreshold={100} />);

}

}

DeviceScreen.navigationOptions = {

title: "Thiết bị",

headerLeft: Menu(),

headerRight: EmptyView(),

headerTintColor: Color.headerTintColor,

headerStyle: Styles.Common.toolbar,

headerTitleStyle: Styles.Common.headerStyle,

tabBarIcon: ({tintColor}) => <TabBarIcon css={{width: 20, height: 20}}

icon={Images.IconControl} tintColor={tintColor}/>,

}

const mapStateToProps = ({netInfo, user}) => ({netInfo, user});

export default connect(mapStateToProps)(DeviceScreen);

Một số kết quả xây dựng hệ thống 3.2.

Sau đây là một số hình ảnh minh họa kết quả triển khai được của các phân hệ

trong hệ thống.

Page 36: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 28

3.2.1. Ứng dụng web

Hình 3. 3 Màn hình thống kê của ứng dụng web

Hình 3. 4 Màn hình điều khiển của ứng dụng web

Page 37: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 29

Hình 3. 5 Màn hình cấu hình tự động

3.2.2. Ứng dụng di động

Hình 3. 6 Màn hình đăng nhập của ứng dụng di động

Page 38: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 30

Hình 3. 7 Màn hình điều khiển của ứng dụng di động

Page 39: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 31

Hình 3. 8 Màn hình xem thông số môi trường trên ứng dụng di động

Page 40: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 32

Hình 3. 9 Màn hình thống kê thông số môi trường trên ứng dụng di động

Page 41: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 33

CHƢƠNG 4: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN

Kết luận 4.1.

Thông qua việc nghiên cứu, tìm hiểu về kiến trúc của IoT cũng như các công

nghệ, giao thức nổii bật hiện nay được dùng để xây dựng, phát triển các ứng dụng IoT,

đề tài đã xây dựng được hệ thống mô phỏng hỗ trợ một số qui trình quản lý nhà kính.

Cụ thể:

Về mặt lý thuyết: Hiểu rõ các khái niệm và kiến trúc của hệ thống IoT cũng

như qui trình để xây dựng một ứng dụng IoT.

Về mặt thực nghiệm: Đã mô phỏng việc ứng dụng IoT trong nông nghiệp

công nghệ cao thông qua việc xây dựng hệ thống hỗ trợ quản lý nhà kính với

nhiều chức năng từ cơ bản đến nâng cao. Hệ thống được phát triển có khả

năng mở rộng và tính khả thi cao, có thể áp dụng vào thực tế nếu kết hợp với

các thiết bị phần cứng chuyên dụng tại nhà kính.

Hƣớng phát triển 4.2.

Với những kết quả đạt được, đề tài dự kiến sẽ tiếp tục phát triển với những định

hướng chính sau:

- Triển khai hệ thống vào thực tế (tại nhà kính thật).

- Phát triển và bổ sung các chức năng bảo mật.

- Phát triển các tính năng thông minh như nhận dạng giọng nói, cảnh cáo hoạt

động thiết bị.

- Xây dựng qui trình áp dụng cho một loại cây trồng cụ thể trong nhà kính, hệ

thống sẽ tự động điều chỉnh hoạt động theo quá trình sinh trưởng của cây

được cài đặt trước.

- Áp dụng máy học để phân tích, rút trích thông tin và dự báo từ dữ liệu thu

thập được.

Page 42: ĐỀ TÀI KHOA HỌC SINH VIÊN NĂM 2018dlu.edu.vn/Resources/Docs/SubDomain/cntt/De tai NCKH/CTK38_IOT… · Danh sách những thành viên Sinh viên thực hiện ... hoa, chè,

TRANG 34

TÀI LIỆU THAM KHẢO

[1] Marques, G., Garcia, N., & Pombo, N. (2017). A survey on IoT: architectures,

elements, applications, QoS, platforms and security concepts. In Advances in Mobile

Cloud Computing and Big Data in the 5G Era (pp. 115-130). Springer, Cham.

[2] Vũ Đình Đông, Lâm Đồng coi trọng ứng dụng, phát triển nông nghiệp công nghệ

cao, Nguồn: http://www.qdnd.vn/kinh-te/cac-van-de/lam-dong-coi-trong-ung-dung-

phat-trien-nong-nghiep-cong-nghe-cao-523910

[3] Al-Fuqaha, A., Guizani, M., Mohammadi, M., Aledhari, M., & Ayyash, M. (2015).

Internet of things: A survey on enabling technologies, protocols, and applications.

IEEE Communications Surveys & Tutorials, 17(4), 2347-2376.