Tải bản đầy đủ (.docx) (39 trang)

HỆ THỐNG IOT điều KHIỂN NHÀ THÔNG MINH, có CODE

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 (1.8 MB, 39 trang )

HỆ THỐNG IOT
ĐIỀU KHIỂN VÀ GIÁM SÁT NHÀ
THƠNG MINH, CĨ CODE


2

MỤC LỤC

- DANH MỤC CÁC HÌNH VẼ


3

Hình 4.1: Lưu đồ giải thuật


4

DANH MỤC CÁC BẢNG BIỂU

-


5

- DANH MỤC CÁC TỪ VIẾT TẮT

IoT

Internet of Things



IDE

Integrated Development Environment

MQTT

Message Queue Telemetry Transport

I/O

Input/ Output

UART

Universal Asynchronous Receiver Transmitter

ESP

Electronic Stability Program

V
Volt


Trang 6/33

CHƯƠNG 1.

TỔNG QUAN VỀ HỆ THỐNG IOT ĐIỀU KHIỂN VÀ

GIÁM SÁT NHÀ THÔNG MINH

1.1

Giới thiệu
Trong cuộc sống bận rộn hiện nay, số lượng và áp lực công việc ngày càng tăng cao

khiến cho cơ thể mệt mỏi sau khi đi làm về dẫn tới hậu quả ngôi nhà trở nên bừa bộn
và khơng có cảm giác khi trở về nhà. Vậy nên, nhu cầu gánh vác một phần công việc
trong nhà cửa đã trở nên cần thiết trong mỗi gia đình và từ đó xuất hiện ngơi nhà thơng
minh (smart home). Smart Home có nghĩa là một ngơi nhà được lắp ráp những trang
thiết bị điện tự tiện ích nhằm mục đích hỗ trợ phần nào những hoạt động sinh hoạt
hằng ngày.

Hình 1.1: Hình giới thiệu Smart Home

Đề tài này sử dụng những thiết bị điện tử như vi điều khiển, cảm biến nhiệt độ, độ
ẩm,.. Để điều khiển những thiết bị gia dụng trong ngôi nhà. Đồng thời giám sát khơng
khí, nhiệt độ, độ ẩm,… và điều chỉnh chúng sao cho chúng ta cảm thấy thoải mái nhất.
1.2

Mục đích nghiên cứu
Đề tài này được nghiên cứu nhằm mục đích mang lại sự thối mái và tiện ích trong

ngơi nhà người sử dụng. Đồng thời có thể bảo vệ sức khỏe cho gia đình chúng ta, cũng
như giám sát và điều khiển tình trạng ngơi nhà thơng qua những chiếc smartphone.
1.3

Đối tượng nghiên cứu
-


Giao thức MQTT

-

Lập trình node-red


Trang 7/33

1.4

-

Mạch thu phát Wifi ESP32

-

Phần mềm lập trình Arduino IDE

-

Cảm biến nhiệt độ và độ ẩm DHT11
Phạm vi nghiên cứu

Đồ án hiện nay chỉ giới hạn đến điều khiển và giám sát các thiết bị điện tử trong
ngôi nhà đơn giản như đèn led, cảm biến thông qua điện thoại hoặc laptop. Phần cứng
bao gồm mạch thu phát wifi ESP32, cảm biến nhiệt độ và độ ẩm DHT11 và ngơn ngữ
lập trình là C/C++ trên phần mềm Arduino.
1.5


Dự kiến kết quả
Đồ án sẽ thu được kết quả là điều khiển các đèn led của từng phịng trong ngơi nhà

bằng các nút nhấn tại mơ hình hoặc trên dashboard của node-red. Mạch ESP32 sẽ nhận
và thu dữ liệu của đèn, cảm biến để truyền tới webserver thông qua giao thức MQTT.
Cảm biến nhiệt độ và độ ẩm tính tốn nhiệt độ và độ của mơi trường xung quanh và trả
tín hiệu về ESP32 và ESP32 sẽ truyền dữ liệu lên webserver để hiển thị nhiệt độ và độ
ẩm trên màn hình giao diện dashboard của node-red.


Trang 8/33

CHƯƠNG 2.
1.6

CƠ SỞ LÝ THUYẾT

ESP32
Mạch ESP32 là mạch vi điều khiển thừa kế của mạch ESP8266 sỡ hữu rất nhiều
tính năng mới vượt trội hơn so vs mạch ESP8266 có thiết kế lõi thép , kết nối wifi
và bluetooth khơng dây. Hiện nay, mạch ESP32 có tới 32 các port I/O và CPU lõi
kép 32 bit có khả năng xử lý nhanh hơn, phức tạp hơn. Tuy có những khả năng
vượt trội hơn và mới hơn nhưng ESP32 vẫn có giá thành cực kì hợp lí từ khoảng
100.000 vnd đến 200.000đ.

Hình 2.1: Hình Bo phát triển ESP32 DOIT Devkit V1

ESP32 có chip CP2102 là cầu nối chuyển đổi USB sang UART, có 2 nút nhấn EN
và BOOT để thiết lập trạng thái của ESP32 như nạp chương trình hay reset. Mơi

trường lập trình của ESP32 cũng khá đa dạng như: Arduino IDE, Espressif IDF (IoT
Development Framework), Micropython, LUA, JavaScript. Trong đề tài này, chủ yếu
lập trình cho ESP32 là Arduino IDE và bo mạch ESP32 DEVKIT DOIT cùng sử dụng
chip ESP-WROOM-32.


Trang 9/33

Thông số kỹ thuật:
Wi-Fi
Bluetooth
RAM
Số nhân
Tần số
Chân
Thiết bị ngoại vi
Kiến trúc

2,4 GHz
BLE và Bluetooth thông thường
512 KB
2
240Mhz
30 port
ADC, UART, I2C, DAC, PWM,…
32 bit
Bảng 2.1: Thông số kỹ thuật ESP32

Sơ đồ chân ESP32 phiên bản 30 chân:


Hình 2.2: Sơ đồ chân ESP32 Devkit DOIT

1.7

Node-red ?

Chương trình node-red là một chương trình hỗ trợ lập trình kết nối các thiết bị, dịch vụ
trực tuyến, APIS lại với nhau theo cách mới lạ và dễ dàng. Node-red có một trình soạn
thảo giúp kết nối đơn giản hơn với các node trong các palelte chỉ bằng cách kéo và thả
chuột.


Trang 10/33

Hình 2.3: Biểu tưởng node-red

Giao diện của trình soạn thảo này chia thành bốn phần: Tiêu đề (Header), Danh sách
các node (Palette), Khơng gian lập trình (Workspace), thanh cơng cụ bên phải
(SideBar)

Hình 2.4: Giao diện node-red


Trang 11/33

1.8

MQTT Aedes và Dashboard trong node-red
MQTT là một giao thức truyền tin đơn giản được thiết kế cho những thiết bị IoT sử


dụng băng thông thấp và ứng dụng thích hợp cho các ứng dụng IoT. Cho phép các thiết
bị IoT có thể nhận và phát các dữ liệu hoặc gửi các lệnh điều khiển từ các thiết bị IoT
thông qua các lệnh Publish/ Subcribe. Và để sử dụng được MQTT phải có MQTT
Broker (có tác dụng như một server) ở trong node-red có một node tạo được đó là
MQTT Aedes, nó có tất cả các chức năng của MQTT và cho phép gửi và nhận tín hiệu
mà khơng cần kết nối mạng. Để phát (Publish) hoặc nhận (Subcribe) phải đảm đảo
thành phần đó là topic và messages. Topic là đóng vai trị như nơi cần gửi và nhận tín
hiệu. Messages là dữ liệu trao đổi giữa các thiết bị IoT hoặc lệnh điều khiển .

Hình 2.5: Cách thức hoạt động của MQTT

Dashboard là một chức năng vô cùng hữu ích của node-red là giao diện được tạo ra
bởi các node nhằm hiển thị ra các thông số như nhiệt độ, độ ẩm,… hay các nút nhấn
hoặc công tắc để điều khiển các thiết IoT trên màn hình web. Người lập trình có thể
sáng tạo, chỉnh sửa hay thêm bớt để có một giao diện ưng ý nhất. Dashboard có thể
hiển thị trên các thiết bị như laptop hoặc smartphone.


Trang 12/33

Hình 2.6: Giao diện dashboard của node-red

2.1

Arduino IDE
Phần mềm Arduino IDE là một phần mềm viết và nạp chương trình vào những bo
mạch Arduino. Mơi trường này cho phép sử dụng cả ngôn ngữ C và C++ để viết
chương trình. Khơng những thế, phần mềm có nhiều thư viện có sẵn và có khả
năng thêm thư viện một cách dễ dàng. Do đó, phần mềm có thể viết và nạp nhiều
lại bo mạch khác nhau.


Hình 2.7: Giao diện chính phần mềm Arduino IDE


Trang 13/33

Arduino bao gồm các thành phần chính:
-

Verify: kiểm tra chương trình.

-

Upload: Nạp chương trình vào bo mạch.

-

Menu bar: thanh gồm các chức file, edit, sketch,…

-

Workspace: vùng viết chương trình.

1.9

Cảm biến nhiệt độ và độ ẩm DHT11
Cảm biến DHT11 là cảm biến để đo lường nhiệt độ và độ ẩm xung quanh nó và trả

giá trị sang tín hiệu điện. Cảm biến này được ứng dụng rất nhiều ở trong thực tế: theo
dõi tình trạng ngơi nhà, giám sát trạng thái của cây, thời tiết,….


Hình 2.8: Cảm biến nhiệt độ và độ ẩm DHT11

Như chúng ta đã biết, định luật Boyle – Mariotte có nói như sau: một lượng khí lý
tưởng n không đổi ở nhiệt độ T không đổi thì tích số giữa áp suất p và thể tích V là
một hằng số (n = const, T = const, pV = const). Ta có phương trình khí lý tưởng: pV =
nRT.
Thơng số kĩ thuật:
-

Điện áp hoạt động bình thường: 3.3 ~ 5V

-

Thang đo nhiệt độ: 0 – 50oC ( sai số ± 2 oC )

-

Thang đo độ ẩm: 20 – 90% RH (sao số 5% RH)

-

Tần số: cứ 1 giây đo 1 lần


Trang 14/33

CHƯƠNG 3.
1.10


THIẾT KẾ VÀ THI CÔNG

Sơ đồ khối hệ thống

Hình 3.1: Sơ đồ khối

1.11

Thiết kế mơ hình phần cứng

Trong đề tài này phần cứng gồm: đèn led, quạt 5v, cảm biến DHT11, ESP32 Devkit
V1- DOIT, module 4 relay Opto cách ly. Mơ hình trong đề tài sẽ sử dụng hai nguồn
khác nhau đó là nguồn dùng cho mạch điều khiển và nguồn cho các thiết bị điện trong
gia đình vì các đa số các thiết bị điện trong gia đình đều sử dụng các nguồn có cơng
suất cao so với nguồn được cấp vô mạch điều khiển. Module relay sẽ đóng vai trị là
cách ly hai nguồn điện để tránh hiện tượng dòng diện của thiết bị điện chạy ngược về
mạch điều khiển gây cháy nổ hoặc hư hại mạch điều khiển.


Trang 15/33

Hình 3.2: Mơ hình hồn chỉnh của đề tài

Hình 3.3: Hình mạch phần cứng


Trang 16/33

Hình 3.4: Sơ đồ đấu nối dây


1.12

Thiết kế giao diện điều khiển dashboard trên node-red

Để thiết kế giao diện dashboard cần phải tải thư viện các node dashboard. Cách tải thư
viện: Manage Palette



Mục Install



tìm và cài đặt node-red-dashboard. Như vậy

chúng ta sẽ có đầy đủ các chức năng để thiết kế giao diện dash board theo ý muốn.
Trong đề tài này sử dụng chủ yếu là công tắc và thang đo nhiệt độ và độ ẩm.

Hình 3.5: Lập trình node-red


Trang 17/33


Trang 18/33

Hình 3.6: Giao diện dashboard

1.13


Thiết lập kết nối ESP32

Trước khi tiến hành viết chương trình. Chúng ta phải thiết lập thư viện và chức năng
nạp code cho ESP32 trên phần mềm Arduino IDE. Đầu tiên, vào File
Preferences tại ô Additional Board Manager URLs thêm đường link này vào:
/>
Hình 3.7: Chỗ thêm thư viện cho ESP32

Cuối cùng, vào Tools Board Board Manager tìm và
cài đặt esp32.

Hình 3.8: cài đặt board để nạp chương trình cho ESP32

Trường hợp khi chạy thử mạch thấy phần mềm khơng hiện chân COM lên thì vô
Device Manager cài thêm driver cho chip tương ứng trên ESP32.


Trang 19/33

Hình 3.9: Cổng COM của ESP32

1.14

Thiết lập MQTT

Để tạo MQTT Broker thì trước hết phải cài đặt thêm vì nó khơng có sẵn. Vơ phần
Manager

Palette


mục

Install

tìm



cài

đặt

node-red-contrib-

aedes. Sau khi hồn thành xong phần cài đặt thì lấy node Aedes MQTT Broker ra đóng
vai trị như một server. Lấy MQTT in nếu node-red xuất tín hiệu về ESP32 và MQTT
out nếu muốn nhấn tín hiệu từ ESP32. Thiết lập những thơng số sau cho MQTT:

Hình 3.10: Thiết lập MQTT

Lưu ý: Mục Server phải lấy địa chỉ IP của mạng đang kết nối. Cách để lấy địa chỉ IP là
vô biểu tưởng WIFI

Properties và tìm dịng IPv4 Address để lấy địa chỉ IP.

Chân mặc định là 1883. Đặt tên topic là tên nơi nhận và phát tín hiệu. QoS được thiết
lập như sau hãy chọn 1 trong 3 phù hợp với nhu cầu:
-

QoS = 0: dữ liệu truyền nhiều nhất một lần (dễ thất thốt dữ liệu)


-

QoS = 1: dữ liệu truyền ít nhất một lần (dễ bị lặp dữ liệu)


Trang 20/33

-

QoS = 2: dữ liệu truyền sẽ chỉ truyền một lần (không gây mất hoặc lặp dữ liệu)

Ba mức QoS trên hãy lựa chọn sao cho phù hợp với nhu cầu đề tài nhất. Cuối cùng, để
ESP32 có thể hiểu truyền và nhận dữ liệu thơng qua MQTT thì phải cài đặt thư viện
PubSubClient cho Arduino.
Chức năng Publish: Gửi tín hiệu đi.
Chức năng Subscribe: Nhận tín hiệu về.

Hình 3.11: Chức năng Publish và Subscribe

CHƯƠNG 4.
1.15

GIẢI THUẬT VÀ ĐIỀU KHIỂN

Hoạt động của hệ thống

1.1.1 ESP32
Sau khi ESP32 được cấp nguồn khoảng 5V từ cổng USB của laptop ESP32 sẽ tự
động kết nối WiFi và MQTT. Sau khi kết nối thành công cảm biến nhiệt độ và độ ẩm

DHT11 sẽ đo lường nhiệt độ và độ ẩm môi trường và xuất tín hiệu điện vào ESP32.
ESP32 sẽ gửi dữ liệu mà cảm biến đo được lên node-red thông qua giao thức MQTT.
Nút nhấn cũng giống như cảm biến, khi được nhấn sẽ truyền tín hiệu đến ESP32 và
gửi lên node-red.
1.1.2 Node-red


Trang 21/33

Trên Node-red có MQTT Broker đóng vai trị là nơi để truyền dữ liệu, thông tin
qua lại với nhau của node-red dashboard với ESP32. Nếu có tín hiệu từ node-red
dashboard dữ liệu sẽ được gửi tới ESP32 hoặc ngược lại nếu có tín hiệu từ nút nhấn
hay cảm biến của ESP32 thì dữ liệu sẽ được gửi tới node-red và hiển thị trên giao diện
node-red dashboard.
1.1.3 Node-red Dashboard
Trên Node-red Dashboard, sẽ có các cơng tắc và thang đo nhiệt độ và độ ẩm của
môi trường xung quanh. Nếu sử dụng các công tắc trên node-red Dashboard để điều
khiển đèn và quạt, node-red sẽ gửi tín hiệu cho ESP32 cho thực hiện dữ liệu vừa được
gửi như bật tắt đèn phòng khách, phòng ăn hoặc bật tắt quạt phòng ăn.

1.16

Lưu đồ giải thuật ESP32


Trang 22/33

Hình 4.1: Lưu đồ giải thuật

CHƯƠNG 5.


THỰC NGHIỆM


Trang 23/33

1.17

Tiến trình thực nghiệm

Tiến hành thực nghiệm:
Bước 1: Sử dụng nguồn laptop để kết nối ESP32.
Bước 2: Kiểm tra ESP32 kết nối WiFi Và MQTT.
Bước 3: Nhấn nút nhấn K1, kiểm tra đèn led phịng khách có sáng hay khơng và có gửi
tín hiệu lên node-red để thay đổi cơng tắc phịng khách trên dashboard hay khơng.
Bước 4: Nhấn nút nhấn K2, kiểm tra đèn led phịng ngủ có sáng hay khơng và có gửi
tín hiệu lên node-red để thay đổi cơng tắc phịng ngủ trên dashboard hay khơng.
Bước 5: Nhấn nút nhấn K3, kiểm tra đèn led phòng ăn có sáng hay khơng và có gửi tín
hiệu lên node-red để thay đổi cơng tắc phịng ăn trên dashboard hay không.
Bước 6: Nhấn nút nhấn K4, kiểm tra quạt phịng ăn có chạy hay khơng và có gửi tín
hiệu lên node-red để thay đổi cơng tắc phịng ăn trên dashboard hay không.
Bước 7: Giám sát thang độ nhiệt độ và độ ẩm có hoạt động hay khơng.
Bước 8: Bật/tắt các công tắc trên Dashboard để điều khiển đèn led, quạt của các
phòng.


Trang 24/33

1.18


Kết quả thực nghiệm

Bước 1: Sử dụng nguồn laptop để kết nối ESP32.

Hình 5.1: ESP32 khi được cấp nguồn

Bước 2: Kiểm tra ESP32 kết nối WiFi Và MQTT.

Hình 5.2: ESP32 kết nối WiFi và MQTT thành công


Trang 25/33

Bước 3: Nhấn nút nhấn K1, kiểm tra đèn led phịng khách có sáng hay khơng và có gửi
tín hiệu lên node-red để thay đổi cơng tắc phịng khách trên dashboard hay khơng.

Hình 5.3: Bật đèn phịng khách

Bước 4: Nhấn nút nhấn K2, kiểm tra đèn led phòng ngủ có sáng hay khơng và có gửi
tín hiệu lên node-red để thay đổi cơng tắc phịng ngủ trên dashboard hay khơng.

Hình 5.4: Bật đèn phịng ngủ

Bước 5: Nhấn nút nhấn K3, kiểm tra đèn led phịng ăn có sáng hay khơng và có gửi tín
hiệu lên node-red để thay đổi cơng tắc phịng ăn trên dashboard hay khơng.


×