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

ĐIỀU KHIỂN ổn ĐỊNH và GIÁM sát NHIỆT độ có CẢNH báo, 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 (2.52 MB, 62 trang )

ĐIỀU KHIỂN ỔN ĐỊNH VÀ GIÁM
SÁT NHIỆT ĐỘ CÓ CẢNH BÁO
CÓ CODE


MỤC LỤC


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

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


DANH MỤC CÁC TỪ VIẾT TẮT
1. LCD

Liquid-Crystal Display

2. LED

Light Emitting Diode

3. RS

Register Select

4. RW

Read/Write

5. EEPROM



Electrically Erasable Programmable Read-Only Memory6

6. NC

Normally Closed

7. NO

Normally Open

8. COM

Common


Trang 5/59

CHƯƠNG 1.
1.1

TỔNG QUAN VỀ ĐỂ TÀI

Giới thiệu đề tài :

-Tên đề tài: Điều khiển ổn định và giám sát nhiệt độ có cảnh báo.
● Tìm hiểu về Module ESP8266 NODEMCU.
● Tìm hiểu về cảm biến DHT11.
● Tìm hiểu về HTML và hoạt động của Webserver.
● Tìm hiểu về LCD 16x2 với module I2C để kết nối LCD và ESP8266.

1.2

Mục đích nghiên cứu :
-

Tìm hiểu về điều khiển cân bằng nhiệt độ và cách thức hoạt động điều khiển
qua Websever.

1.3

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

Module ESP8266 NODEMCU.

-

LCD(16X2).

-

Cảm biến DHT11

-

HTML.

-

Module Relay.


-

Module I2C.

-

Quạt Sunon.

1.4

Phạm vi nghiên cứu:
-

Điều khiển nhiệt độ ở phạm vi nhỏ do khoảng cách sẽ ảnh hưởng đến cảm
biến.

1.5

Dự kiến kết quả


Trang 6/59

-

Sản phẩm có được sau khi thực hiện đề tài:
● Cảm biến DHT11 đó được nhiệt độ ở của bóng đèn gửi về cho module
ESP8226 NODEMCU.
● Module ES8266 NODEMCU sau khi nhận được giá trị NODEMCU

sẽ xuất giá trị đó hiển thị lên LCD 16x2 qua giao tiếp module I2C.
● Hệ thống sẽ có 2 chế độ hoạt động: Điều khiển tự động và điều khiển
bằng tay.
● Sẽ có 1 nút để chọn chế độ hoạt động và 1 đèn thông báo cho ta biết
đang ở chế độ nào.
● Nếu nút không được nhấn sẽ ở chế độ hoạt động tự động, đèn sẽ sáng
cho đến khi cảm biến DHT11 trả về giá trị nhiệt độ lớn hơn 31 độ C
thì quạt sẽ bắt đầu chạy và đèn sẽ tắt để điều khiển nhiệt độ. Cho đến
khi nhiệt độ giảm xuống dưới 29 độ C lúc đó quạt sẽ dừng và đèn sẽ
sáng trở lại.
● Nếu nút nhấn được nhấn thì hệ thống sẽ hoạt động ở chế độ điều
khiển bằng tay. Sẽ có 2 nút: 1 để điều khiển ON/OFF đèn và 1 để điều
khiển ON/OFF quạt giúp điều khiển cân bằng nhiệt độ.
● Ngoài ra module ESP8226 NODEMCU được thiết kế kết nối với Wifi
theo chế độ Access Point. Với chế độ này Wifi sẽ cấp cho module
ESP8266 NODEMCU một IP (192.168.1.7) để kết nối.
● Ở địa chỉ IP này tạo được 1 Website sử dụng HTML là ngôn ngữ giúp
hiển thị giá trị nhiệt độ được cập nhật và có thể điều khiển được như
chế độ bằng tay với giá trị ON/OFF của đèn và quạt.


Trang 7/59

CHƯƠNG 2.
1.6

CƠ SỞ LÝ THUYẾT

Module ESP8266 NODEMCU


1.1.1 Giới thiệu về module ESP8266 NODEMCU

Hình 2.11. Module ESP8266 NodeMCU
-

ESP8266 là một mạch vi điều khiển có thể giúp chúng ta điều khiển các thiết
bị điện tử. Thêm vào đó nó được tích hợp Wi-fi 2.4GHZ có thể dùng cho lặp
trình.

-

Trên thị trường có nhiều bo ESP8266 khác nhau, đến từ nhiều nhà sản xuất
khác nhau. Nó có thể đền từ Espressif System hoặc Adafruit Huzzah,


Trang 8/59

NodeMCU devkit, node.IT, SparkFun Wifi Shield – ESP8266. Về cơng dụng
thì khơng có sự chênh lệch lớn.
-

Phần cứng của mạch phát triển NodeMCU gồm:
o Module ESP-12, bộ nhớ Flash dung lượng 4Mbytes.
o Sử dụng IC giao tiếp máy tính CP2102 hoặc CH340 (loại rẻ tiền).
o Nguồn cấp DC 5V thơng qua cổng Micro-USB hoặc thơng qua chân
Vin, GND.
o Tích hợp sẵn 2 nút nhấn trên mạch phát triển.

1.1.2 Sơ đồ chân của module ESP8266 NodeMCU :


Hình 2.12.Sơ Đồ Chân Của Module ESP8266 NodeMCU


Trang 9/59

-

Có tổng cơng là 30 chân.

-

Có 13 chân GPIO ( 11 chân input/output uart,i2c,one wire), 1 chân Analog
(A0).

-

Tuy nhiên một số chân được dùng cho những mục đích quan trọng khác nhau
vì vậy chúng ta phải lưu ý khi sử dụng như sau:
o GPIO16 có điện trở kéo xuống, khơng hỗ trợ ngắt ngồi . Các GPIO
cịn lại đều có điện trở kéo lên. Người sử dụng có thể kích hoạt hoặc
khơng kích hoạt các điện trở kéo này . Có thể dùng để đánh thức
Module ESP8266 NodeMCU khỏi chế độ ngủ sâu => Phải kết nối
GPIO16 với chân RST.
o GPIO 1 được nối với TX và GPIO 3 được nối với RX của bộ
UART10, NodeMCU nạp code thông qua bộ UART nên tránh sử dụng
2 chân này.
o GPIO9, GPIO10: hai chân này dùng để giao tiếp với External Flash
của ESP8266 vì vậy khơng dùng đc.
o GPIO2,GPIO0,GPIO15: cấu hình mode cho q trình nạp code bên
trong NodeMCU( có tên gọi là strapping pins) có các điện trở kéo lên

để định sẵn mức logic =>muốn sử dụng các chân này với vai trị
GPIO cần phải thiết kế một ngun lí riêng để tránh xung đột trong
quá trình nạp code.
o GPIO cịn lại như : 4,5,12,13,14,16 có thể sử dụng theo các mục đích
như bình thường.
o Analog Pin (A0): Chỉ có 1 chân, chân này được gọi là ADC0. Điện áp
đầu vào từ 0 đến 3.3V vì có bộ chia điện áp bên trong.
o Đèn led trên board: Led được nối với GPIO2, hoạt động với mức
logic ngược => gửi mức logic HIGH để tắt và LOW để bật.


Trang 10/59

o I2C: Module ESP8266 khơng có chân I2C trong phần cứng, nhưng nó
có thể triển khai trong phần mềm. Vì vậy có thể sử dụng bất kì GPIO
làm I2C.
o SPI: Module ESP8266 NodeMcu có sẵn 4 chân để giao tiếp SPI
(SD1,CMD,SD0,CLK).
o UART: Module ESP8266 NodeMcu có 2 kết nối UART là
UART0(RXD0 & TXD0) và UART1 (RXD1 & TXD1). UART được
sử dụng để upload firmware/program.
1.1.3 Thông số kĩ thuật và tính năng:
-

Bộ vi điều khiển: Tensilica 32-bit RISC CPU Xtensa LX106.

-

Điện áp hoạt động :3.3V


-

Điện áp đầu vào: 7-12V.

-

I/0 Pins (DIO): 13G chân.

-

Analog Input pins (ADC) : 1.

-

Flash Memory : 4MB.

-

SRAM: 64KB.

-

Clock Speed: 80 Mhz

-

USB-TLL dựa trên CP2102( hoặc CH340 loại rẻ hơn) được bao gồm trên bo
mạch, cho phép cắm và chạy.

-


PCB Antenna (Anten PCB).

-

Kích thước module nhỏ để vừa vào bên trong hệ thống IOT.

1.1.4 Chế độ nạp:
-

Module ESP8266 NodeMCU hỗ trợ cho người dùng 3 chế độ nạp (boot
mode): nạp chương trình từ máy tính thơng qua UART, nạp chương trình SPI
Flash thơng qua SPI và nạp chương trình từ SD Card thơng qua SDIO. Với 3
chế độ này, chế độ nạp thông tin qua SPI và SDIO gây bất tiện cho người
dùng vì để nạp được chương trình theo các cách này cần phải lưu chương


Trang 11/59

trình vào SPI Flash hay SD Card. Trong khi đó với chố độ nạp thơng qua
UART, người dùng có thể nạp chương trình trực tiếp từ máy tính, ta có thể
thấy rõ được sự linh hoạt vượt trội của chế độ này so với 2 chế độ kia .
-

UART ( Universal Asynchronous Serial Reveiver And Transmitter) là bộ
truyền nhận nối tiếp không đồng bộ. Khái niệm UART dùng để chỉ thiết bị
phần cứng (hard ware), không phải chuẩn giao tiếp. UART cần phải kết hợp
với một thiết bị chuyển đổi mức điện áp để tạo ra một chuẩn giao tiếp như
chuẩn RS232 ( Máy tính sẽ sử dụng cổng COM để truyền nhận dữ liệu bằng
UART thông qua chuẩn RS232). UART thường dùng để truyền nhận dữ liều

giữa 2 hay nhiều thiết bị khác nhau (có thể là giữa vi điều khiển với vi điều
khiển, giữa vi điều khiển với máy tính, vi điều khiển với module sim,…). Ở
kiểu truyền nối tiếp bất đồng bộ bao gồm 1 đường truyền dữ liệu và 1 đường
nhận dữ liệu, khơng có tín hiệu xong clock nên gọi là bất đồng bộ. Để có thể
truyền nhận dữ liệu, yêu cầu cả bên truyền và bên nhận phải tự tạo xung
clock có cùng tần số, gọi là tốc độ truyền dữ liệu (baud).

-

Các thông số cơ bản trong việc truyền nhận UART:
o Baund rate (tốc độ Baund): số bit được truyền trong 1 giây. Thông số
này phải được cài đặt giống nhau ở thiết bị truyền nhận.
o Frame (khung truyền): khung truyền quy định về số bit trong mỗi lần
truyền.
o Start Bit: Bit đầu tiên được truyền trong 1 Frame. Báo hiệu thiết bị
nhận có 1 gói dữ liệu sắp được truyền đến. Bit này bắt buộc phải có
o Data: dữ liệu cần truyền. Bit nhỏ nhất (LBS) được truyền trước, cuối
cùng là bit lớn nhất (MSB)


Trang 12/59

o Parity bit: dùng để báo hiệu số lượng bit có giá trị bằng 1 (hệ nhị
phân) trong một nhóm bit cho trước là 1 số chẵn hay số lẻ. Sử dụng
Parity bit là cách phát hiện lỗi cơ bản nhất.
o Stop bit: Là 1 hoặc các bit báo cho thiết bị rằng gói dữ liệu đã gửi
xong. Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảo
tính chính xác của dữ liệu. Bit này là bit bắt buộc phải có.
-


Phương thức truyền dữ liệu nối tiếp UART:

Hình 2.13. Phương Thức Truyền Dữ Liệu Nối Tiếp UART
o Thông tin đi vào cổng TX pin.
o Bắt đầu bằng Start bit. Nhiệm vụ của Start bit là kéo đường truyền từ
mức cao xuống mức thấp để báo hiệu cho vi xử lí nhận là chuẩn bị
truyền dữ liệu.
o Tiến hành truyền chuỗi dữ liệu


Trang 13/59

o Kết thúc bằng Stopbit. Nhiệm vụ của Stopbit báo kết thúc truyền dữ
liệu (tiến hành chuyển đường truyền từ mức thấp sang mức cao).

1.1.5 Deep Sleep Operating (Chế độ ngủ sâu hay tiết kiệm năng lượng):
-

Có 3 chế độ khác nhau : Modem-sleep, light-sleep, deep-sleep.

-

Sự khác nhau của 3 chế độ:

Sơ đồ 2.11. So Sánh 3 Chế Độ Của Deep Sleep Operating.
-

Lưu ý: Mức tiêu thụ này dùng cho ESP8266 như chip độc lập nếu dùng các
bằng phát triển (ở đây dùng module ESP8266 NodeMCU) thì sẽ có các thành
phần thụ động sử dụng nhiều dòng điện hơn.



Trang 14/59

1.7

LCD 16X2

1.1.6 Giới thiệu chung:

Hình 2.21.LCD 16x2
-

LCD là thiết bị dùng để giao tiếp với người dùng, có khả năng hiển thị hầu
hết các ký tự trong bảng mã ASCII.

-

Có rất nhiều ứng dụng trong thực tế.


Trang 15/59

1.1.7 Các thông số của LCD

Hình 2.22.Thông Số Chân Của Lcd
VSS

Nối GND.


VDD

Cấp nguồn cho LCD (VCC=5).

VEE

Điều chỉnh độ tương phản cho LCD.

RS

Chân chọn thanh ghi.

RW

Chân chọn chế độ đọc/ghi.

E (Enable)

Chân cho phép.

D0-D7

Dùng để trao đổi thơng tin,có 2 chế độ 4bit và 8bit.

LEDA

Cấp nguồn dương cho đèn nền.

LEDK


Nối GND cho đèn nền .
BẢNG 2. CHỨC NĂNG CÁC CHÂN CỦA LCD


Trang 16/59

1.8

DHT11:

1.1.8 Giới thiệu về DHT11:

Hình 2.31.Cảm Biến DHT11
-

Là cảm biến nhiệt độ và độ ẩm rất thông dụng hiện nay vì chi phí rẻ và rất dễ
lấy dữ liễu qua giao tiếp 1-wire (là giao tiếp digital 1-wire truyền dữ liệu duy
nhất). Cảm biến được tích hợp bộ tiền xử lí tín hiệu giúp nhận về được chính
xác mà khơng cần phải qua bất kì tính tốn nào.


Trang 17/59

1.1.9 Cấu tạo của DHT11:
-

Cảm biến DHT11 bao gồm 1 phần tử cảm biến độ ẩm điện dung và một điện
trở nhiệt để cảm nhận được nhiệt độ.

-


Để đo được nhiệt độ, cảm biến này sử dụng một nhiệt điện trở có hệ số nhiệt
độ âm, làm giảm giá trị điện trở của nó khi nhiệt độ tăng lên. Để có được giá
trị điện trở lớn hơn ngay cả đối với sự thay đổi nhỏ nhất của nhiệt độ, cảm
biến này thường được làm bằng gốm bán dẫn hoặc polyme.

-

Phạm vi nhiệt độ: 0-50 độ

-

Tốc độ lấy mẫu :1Hz.

-

Điện áp hoạt động : 3-5V.

-

Dòng tối đa được sử dụng : 2.5mA.

-

Sai số: +(-) 2 độ.


Trang 18/59

1.1.10 Nguyên lí hoạt động của DHT11:

-

Đấu nối dây DHT11 với MCU:

Hình 2.32. Đấu Nối DHT11 Với MCU
o Khi cáp kết nối ngắn hơn 20m, sử dụng điện trở kéo lên 5kΩ.
o Khi cáp kết nối dài hơn 20m, sử dụng 1 điện trở kéo lên phù hợp.
-

Power and Pin: Nguồn cung cấp cua DHT11 là từ 3-5.5V DC. Khi cung cấp
nguồn cho cảm biến, không gửi bất kỳ tín hiệu nào cho cảm biến trong vịng
1s để qua trạng thái khơng ổn định. Có thể thêm 1 tụ điện có giá trị 100nF
giữa chân VDD và GND để lọc điện.

-

Quy trình giao tiếp: Giao tiếp nối tiếp (Single-Wire Two Way) hay là giao
tiếp 2 chiều với 1 dây.
o Định dạng dữ liệu 1 bus (single-bus) được sử dụng để giao tiếp đồng
bộ hóa giữa MCU và cảm biến DHT11.
o Khoảng thời gian trong 1 lần giao tiếp là 4ms.
o Dữ liệu bao gồm phần thập phân và phần tích phân.


Trang 19/59

o Q trình truyền dữ liệu hồn chỉnh là 40bit và cảm biến gửi dữ liệu
cao hơn bit đầu tiên.
o Định dạng dữ liệu: 8bit tích phân RH+ 8bit thập phân RH + 8bit tích
phân T + 8bit thập phân T + 8bit check sum.

o Nếu dữ liệu truyền là đúng thì bit check sum phải là 8bit của : 8bit
tích phân RH+ 8bit thập phân RH + 8bit tích phân T + 8bit thập phân
T.
-

Quy trình giao tiếp tổng thể:
o Khi MCU gửi Start Signal, DHT11 chuyển từ chế độ low-powercomsumption (chế độ tiêu thụ điện năng thấp) sang chế độ runningmod (chế độ đang chạy), chờ đến khi MCU hoàn thành gửi Start
Signal.
o Sau khi hoàn thành, DHT11 sẽ gửi 1 tín hiệu phàn hồi 40bit dữ liệu
bao gồm thông tin về nhiệt độ và độ ẩm tương đối tới MCU.
o Người dùng có thể chọn đọc 1 số dữ liệu.
o Nếu khơng có Start Signal, DHTT sẽ khơng cung cấp tín hiệu phản
hồi cho MCU.
o Sau khi dữ liệu được thu thập DH11 sẽ chuyển sang chế độ lowpower-comsumption cho đến khi nó nhận được Start Signal từ MCU
lần nữa.

Hình 2.33. Quy Trình Giao Tiếp Tỏng Thể Của DHT11 và MCU


Trang 20/59

-

Cách MCU gửi Start Signal tới DHT11:
o Trạng thái của dữ liệu Single-bus free status đang ở mức điện áp cao.
o Khi có sự giao tiếp giữa MCU và DH11 xảy ra, MCU sẽ đặt mức điện
áp của dữ liệu Single-bus xuống thấp (q trình này mất ít nhất 18ms
để đảm bảo DHT phát hiện ra tín hiệu của MCU).
o Sau đó MCU sẽ kéo điện áp lên và đợi 20-40us cho phản hồi của
DHT11.


Hình 2.34. MCU Gửi Start Signal Tới DHT11
-

DHT phản hồi lại MCU:
o Khi DHT phát hiện tín hiệu khởi động, nó sẽ gửi tín hiệu phản hồi
mức điện áp thấp, kéo dài 80us.
o Sau đó, chương trình của DHT11 sẽ đặt mức điện áp của dữ liệu
Single-bus từ mức thấp lên mức cao và giữ nó trong vịng 80us để
DHT chuẩn bị gửi dữ liệu.
o Khi dữ liệu Signal-bus ở mức điện áp thấp, điều này có nghĩa là DHT
đang gửi tín hiệu phản hồi.
o Sau khi DHT gửi tín hiệu phản hồi, nó kéo điện áp lên và giữ trong
80us và chuẩn bị cho việc truyền dữ liệu.


Trang 21/59

o Trong khi DHT đang gửi dữ liệu đến MCU, mọi bit dữ liệu bắt đầu
với mức điện áp thấp trong 50us và độ dài của mức điện áp cao được
xác định xem dữ liệu bit là “0” hay là “1”.

Hình 2.35.DHT11 Trả Giá Trị Là “0”

Hình 2.36.DHT11 Trà Giá Trị Là “1”
o Nếu tín hiệu phản hồi từ DHT ln ở mức điện áp cao, điều đó chi
thấy rằng DHT khơng phản hồi đúng cách và vui lịng kiểm tra kết
nối.



Trang 22/59

o Khi dữ liệu bit cuối cùng được truyền, DHT11 kéo mức điện áp xuống
và giữu nó trong 50us. Khi đó, điện áp Single-Bus sẽ được kéo lên bởi
điện trở để đặt nó về free status.
o Nếu thời gian trả về là 26-28 us thì là 0 cịn 70us thì là 1.
1.9

Module I2C LCD1602/LCD2004 :

1.1.11 Giới thiệu về module I2C LCD1602/LCD2004:

Hình 2.41. Module I2C LCD 16x2
-

Vì LCD 16x2 có q nhiều chân cịn module ESP8266 NodeMCU có q ít
chân để sử dụng nên phải sử dụng Module I2C LCd 16x2 để rút số chân cần
sử dụng trên vi điểu khiển cịn lại là 2.

-

Thay vì phải mất 6 chân (RS,EN,D7,D6,D5,D4) thì giờ chỉ cần tốn 2 chân để
kết nối là SCL và SDA để kết nối.


Trang 23/59

1.1.12 Thông số kĩ thuật:
-


Điện áp hoạt động: 2.5-6V DC.

-

Hỗ trợ màn hình: LCD1602,1604,2004 (diver HD44780)

-

Giao tiếp : I2C.

-

Địa chỉ mặc định: 0x27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2).

-

Tích hợp jump chốt để cung cấp đèn cho LCD hoặc ngắt.

-

Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.

1.1.13 Cấu tạo:

Hình 2.42. Cấu Tạo Của Module I2C LCD 16x2

-

Lưu ý: Khai báo thư viện: LiquidCrystal_I2C lcd(0x27,16,2)
o Trong đó 0x27 là địa chỉ mặc định (hoặc 0x3F).

o 16 là 16 ô của hàng ngang.
o 2 là số cột.


Trang 24/59

-

Kiểm trà địa chỉ Module:
o Đọc tên IC ở sau module là PCF8574T hoặc PCF8574AT.
o Sau đó tra theo bảng để lấy địa chỉ.Trên mạch có 3 chân A0,A1,A2 để
chọn địa chỉ, nếu 2 chân nối với nhau tương ưng trong bảng Bridged.

Sơ đồ 2.41. Tra Địa Chỉ Của Module
1.10

USB (Type A):

Hình 2.51.USB Type A


Trang 25/59

-

USB sử dụng để nạp là Micro USB Type A: Có thứ tự màu dây USB bên
trong : theo thứ tự từ trái sang phải là : đỏ, trắng (với một số hãng sẽ là màu
vàng), xanh lá, đen (với một số hang sẽ mà màu xanh da trời).
o Dây đỏ: cấp điện dương (+).
o Dây trắng (hoặc vàng): Data -.

o Dây xanh lá: Data +.
o Dây đen: cấp điện âm (-).

-

Ta có thể nạp code cho Module ESP8266 NodeMCU qua cổng USB do
Module có bộ chuyển đổi USB Serial theo giao tiếp RS323.

-

Giao tiếp RS323 là kỹ thuật được sử dụng rộng rãi để ghép nối tiếp các thiếu
bị ngoại vi với máy tính.

-

Ưu điểm của RS323:
o Khả năng chống nhiễu của các cổng nối tiếp cao.
o Thiết bị ngoại vi có thể thao lắp ngay cả khi máy tính đang được cấp
điện.
o Các mạch điện đơn giản có thể nhận được điện áp nguồn ni qua
cổng nối tiếp ( ở đây có thể cấp cho Module ESP8266 NodeMCU).

-

Các đặc điểm cần lưu ý trong chuẩn RS232:
o Có mức giới hạn trên và dưới (logic 0 và 1) là +(-) 12V.
o Được cố định trở kháng tải trong phạm vi từ 3000Ω-7000Ω.
o Tốc độ truyền nhận dữ liệu cực đại là 100kps (có thể lớn hơn).
o Các lối vào phải có điện dung nhỏ hơn 200pF.
o Các giá trị tốc độ truyền dữ liệu

chuẩn:50,70,110,750,300,600,1200,2400,…115200 bps,..


×