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

Điều khiển nhiệt độ, độ ẩm trong nhà lưới

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.63 MB, 26 trang )

ĐỒ ÁN
VI XỬ LÝ TRONG ĐIỀU KHIỂN

“Điều khiển nhiệt độ, độ ẩm trong nhà
lưới”
Giáo viên hướng dẫn: Lại Văn Song
Sinh viên thực hiện: 1. Vũ Trung Thành
2. Trần Mạnh Hùng
3. Lê Văn Tiến

Msv:576137
Msv:573110
Msv: 576141


Mục lục
I. Tổng quan nghiên cứu
1.1 Giới thiệu chung
1.2 Kết quả nghiên cứu trong nước và thế giới
1.3 Yêu cầu về hệ thống thiết kế
Phần II. Nội dung công nghệ sử dụng
2.1 Đối tượng nghiên cứu
2.2 Nội dung nghiên cứu
2.3 Phương pháp nghiên cứu
2.4 Công nghệ sử dụng
Phần III: Chế tạo và thử nghiệm
3.1 Mô hình thiết kế
3.2 Thiết kế phần mềm
Phần IV: Thảo luận kết quả đạt được



Tên đồ án:

Điều khiển nhiệt độ độ ẩm trong nhà
lưới
Phần I. Tổng quan nghiên cứu
1.1Giới thiệu chung:
Ngày nay,các bộ điều khiển đang có ứng dụng rộng rãi trong các lĩnh vực khoa
học kỹthuật và đời sống xã hội, đặc biệt là trong tự động hoá và điều khiển. Giờ
đây với nhu cầu chuyên dụng hoá,tối ưu hoá về thời gian không gian giá
thành,bảo mật, tính chủ động trong công việc, ... ngày càng đòi hỏi khắt khe. Vì
thế mà việc đưa tự động hóa như diễn ra một điều tất yếu.
1.2 Kết quả nghiên cứu trong nước và trên thế giới:
Mô hình nhà lưới là nền tảng cho tiêu chuẩn về chất lượng, công năng và giá
trị của sản phẩm trong việc sản xuất nông nghiệp theo hướng nông nghiệp công
nghệ cao. Tính linh hoạt của nhà lưới giúp cho người trồng trọt có thể dùng cho
bất cứ môi trường trồng trọt nào, từ vài trăm mét vuông cho đến hàng chục hécta. Cho đến nay hàng trăm mô hình nhà lưới đã được triển khai, một phần là các
mô hình trình diễn khuyến nông do Trung Tâm Khuyến Nông, một số quận
huyện đầu tư hỗ trợ, phần còn lại là do người trồng rau tự đầu tư.
Mô hình nhà lưới :
-Xung quanh và mái được phủ bỡi lưới chắn công trùng do đó có khả năng
thông thoáng tốt trong mùa hè;
-Mô hình thiết kế có khả năng liên kết mở rộng từ nhỏ hoặc lên đến vài chục
héc ta;
- Mở rộng thiết kế thích ứng với từng lượng mưa, gió và chịu tải trọng khác
nhau
1.3 Yêu cầu về hệ thống được thiết kế:
Việc lập trình phải thật chính xác, các linh kiện phải đảm bảo hoạt động tốt.
Trong quá trình vận hành phải đảm bảo khi nhiệt độ trên 30°C quạt sẽ quay và
khi nhiệt độ dưới 28°C quạt sẽ ngừng quay.Khi độ ẩm dưới 80% thì máy bơm
sẽ hoạt động và khi độ ẩm trên 85% thì máy bơm sẽ ngừng hoạt động



Phần II: Nội dung và công nghệ sử dụng
2.1 Đối tượng nghiên cứu:
Đồ án tập trung nghiên cứu về hệ thống đo và điều khiển nhiệt độ độ ẩm của
môi trường bằng Arduino, qua đó áp dụng vào quá trình điều khiển nhiệt độ độ
ẩm trong nhà lưới
2.2 Nội dung nghiên cứu:
Hệ thống làm mát tự động bằng quạt hoạt động dựa trên cảm biến nhiệt độ
dht11 và Arduino-uno-r3. Nhiệt độ đo được sẽ hiển thị trên LCD được đặt trên
mô hình để tiện cho việc theo dõi và kiểm tra sự cố. Arduino-uno-r3được lập
trình khi nhiệt độ tăng đến một mức nhất định sẽ làm cho quạt tự động quay,
làm mát cho khu vực trồng hoa trên mô hình cũng như làm quạt tự động dừng
quay khi nhiệt độ giảm xuống dưới mức cho phép.
2.3 Phương pháp nghiên cứu
Toàn bộ hệ thống được thiết kế dựa trên ứng dụng của vi điều khiển, vi điều
khiển là một máy tính được tích hợp trên một chíp, nó thường được sử dụng để
điều khiển các thiết bị điện tử. Vi điều khiển thực chất gồm một vi xử lý có hiệu
suất đủ cao và giá thành thấp (so với các vi xử lý đa năng dùng trong máy tính)
kết hợp với các thiết bị ngoại vi như các bộ nhớ, các mô đun vào/ra, các mô đun
biến đổi từ số sang tương tự và từ tương tự sang số, mô đun điều chế độ rộng
xung (PWM)...
Vi điều khiển thường được dùng để xây dựng hệ thống nhúng. Nó xuất hiện
nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại,
dây truyền tự động
Hầu hết các loại vi điều khiển hiện nay có cấu trúc Harvard là loại cấu trúc mà
bộ nhớ chương trình và bộ nhớ dữ liệu được phân biệt riêng.
Cấu trúc của một vi điều khiển gồm CPU, bộ nhớ chương trình (thường là bộ
nhớ ROM hoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), các bộ định thời, các
cổng vào/ra để giao tiếp với các thiết bị bên ngoài, tất cả các khối này được tích

hợp trên một vi mạch.
2.4 Công nghệ sử dụng
a.Arduino-uno-r3


Hình ảnhArduino-uno-r3
Một vài thông số của Arduino UNO R3
Vi điều khiển

ATmega328 họ 8bit

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

5V DC (chỉ được cấp qua cổng USB)

Tần số hoạt động

16 MHz

Dòng tiêu thụ

khoảng 30mA

Điện áp vào khuyên dùng

7-12V DC

Điện áp vào giới hạn

6-20V DC


Số chân Digital I/O

14 (6 chân hardware PWM)

Số chân Analog

6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V)

500 mA

Dòng ra tối đa (3.3V)

50 mA

Bộ nhớ flash

32 KB (ATmega328) với 0.5KB dùng bởi
bootloader

SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)



Vi điều khiển

Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8,
ATmega168, ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản
như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa,
làm một trạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,…
Năng lượng
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn
ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thường thì
cấp nguồn bằng pin vuông 9V là hợp lí nhất nếu bạn không có sẵn nguồn từ
cổng USB. Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, bạn sẽ làm hỏng
Arduino UNO.
Các chân năng lượng


ND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn
dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này
phải được nối với nhau.



5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.



3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là
50mA.




Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực
dương của nguồn với chân này và cực âm của nguồn với chân GND.



IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể
được đo ở chân này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy bạn không
được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không
phải là cấp nguồn.



RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương
đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ.

Lưu ý:




Arduino UNO không có bảo vệ cắm ngược nguồn vào. Do đó bạn phải
hết sức cẩn thận, kiểm tra các cực âm – dương của nguồn trước khi cấp
cho Arduino UNO. Việc làm chập mạch nguồn vào của Arduino UNO sẽ
biến nó thành một miếng nhựa chặn giấy. mình khuyên bạn nên dùng
nguồn từ cổng USB nếu có thể.




Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho
các thiết bị khác, không phải là các chân cấp nguồn vào. Việc cấp nguồn
sai vị trí có thể làm hỏng board. Điều này không được nhà sản xuất
khuyến khích.



Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp
dưới 6V có thể làm hỏng board.



Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều
khiển ATmega328.



Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của
Arduino UNO nếu vượt quá 200mA sẽ làm hỏng vi điều khiển.



Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino
UNO sẽ làm hỏng vi điều khiển.



Cường độ dòng điện qua một chân Digital hoặc Analog bất kì của
Arduino UNO vượt quá 40mA sẽ làm hỏng vi điều khiển. Do đó nếu
không dùng để truyền nhận dữ liệu, bạn phải mắc một điện trở hạn dòng.

Bộ nhớ

Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:


32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong
bộ nhớ Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số
này sẽ được dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần
quá 20KB bộ nhớ này đâu.



2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn
khai báo khi lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng
cần nhiều bộ nhớ RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ
RAM lại trở thành thứ mà bạn phải bận tâm. Khi mất điện, dữ liệu trên
SRAM sẽ bị mất.



1KB cho
EEPROM (Electrically Eraseble Programmable Read Only Memory):
đây giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu


của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu
trên SRAM.
Các cổng vào/ra

Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có

2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở
mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển
ATmega328 (mặc định thì các điện trở này không được kết nối).
Một số chân digital có các chức năng đặc biệt như sau:


2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết
bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na
chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial, bạn
không nên sử dụng 2 chân này nếu không cần thiết



Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM
với độ phân giải 8bit (giá trị từ 0 → 2 8-1 tương ứng với 0V → 5V) bằng
hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh
đượcđiện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức
0V và 5V như những chân khác.




Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài
các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu
bằng giao thức SPI với các thiết bị khác.



LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi

bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối
với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.

Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit
(0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên
board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog.
Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân
analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác.
b. Màn hình LCD 16x2

1.

Mặt trước và sau màn hình LCD 16x2


1

Sơ đồ khối của màn hình LCD 16x2

-Sơ đồ khối có thể hiểu đơn giản như sau:
Các đường giao tiếp( VDD, VSS, …, DB0-DB7) nhằm kết nối thiết bị điều
khiển bên ngoài và nguồn nuôi với IC trung tâm( LCD Controller LSI) của màn
hình, dựa vào dữ liệu được gửi đến( DB0-DB7) IC này sẽ điều khiển màn hiển
thị “LCD panel”, “Segment driver” thông qua bus COM, bus SEG. Ngoài ra, 2
đường giao tiếp BL1(+) và BL2(-) để điều khiển đèn nền( Backlight).
-Kích thước.

Kích thước thực tế của màn hình 16x2

Màn hình 16x2 với kích thước như sau:
Dài 80,0 ± 0,5 mm, trong đó có 64,5 ± 0,2 mm dành cho panel hiển thị.
Rộng: 36,0 ± 0,5 mm, trong đó có 14,0 ± 0,2 mm dành cho phần panel hiển
thị.


Dày 12,0 mm( chiều dày tối đa).16 chân giao tiếp, tương ứng với đó là 16
lỗ, mỗi lỗ chân rộng 1mm để cắm các kết nối, hoặc hàn luôn cable kết nối vào
đó. Hai chân liền kề cách nhau “2,54mm” (đúng bằng kích thước và khoảng
cách giữa các lỗ trên bìa đục lỗ thường dùng hàn mạch).
Trên panel hiển thị có 2 hàng( dòng), mỗi dòng có 16 module hiển thị, chính
vì điều này nên thường gọi luôn màn hình này là 16x2. Kích thước mỗi module
5,02x3 mm; các module trên cùng 1 hàng cách nhau 0,5mm và giữa 2 hàng cách
nhau 0,6mm; trên mỗi module có 8x5=40 điểm ảnh, kích thước mỗi điểm ảnh
0,54x0,52mm và chúng cách nhau 0,1mm.
Chân
số


hiệu

Mức
logic

Vào/Ra
(I/O)

1

VSS


-

-

2

VDD

-

-

3

V0
(VEE)

-

I

4

RS

0/1

I


5

R/W

0/1

I

0/1

I

6

E

7 -14

DB0DB7

0/
1

I/O

Tính năng
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này
với GND của mạch điều khiển.
Điện áp nguồn cho LCD, nối với VDD 5V của mạch điều
khiển.

Cung cấp điện áp để điều chỉnh độ tương phản
Chân lựa chọn thanh ghi( Register Select). Nối chân RS
với mức logic 1( H) hoặc logic 0 để chọn thanh ghi.
+ Logic 1: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR
bên trong LCD
+ Logic 0: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của
LCD( ở chế độ ghi), hoặc nối với bộ đếm địa chỉ của
LCD( ở chế độ đọc)
Chân chọn chế độ đọc/ghi. Nối chân R/W với logic 0 để
LCD hoạt động ở chế độ ghi, nối với mức logic 1 để LCD
ở chế độ đọc.
Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên
bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung
cho phép của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển
vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một
xung (high-to-low transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7
khi phát hiện cạnh lên (low-to-high transition) ở chân E và
được LCD giữ ở bus đến khi nào chân E xuống mức thấp.
Tám đường của bus dữ liệu dùng để trao đổi thông tin với
MPU. Có 2 chế độ sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với
bit MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4
tới DB7, bit MSB là DB7. Chi tiết sử dụng 2 giao thức này
được đề cập ở phần sau.


15

16

A
(+)
K
(-)

-

-

Chân cấp nguồn 5VDC cho đèn nền màn hình, nối với
VDD.

-

-

Chân 0V cho đèn nền màn hình.

Chức năng của các chân

c. Môđun LCD I2C


Môđun LCD I2C cho Arduino dùng để điều khiển hiển thị dữ liệu lên các màn
hình 16x2; 16x4; 20x4;... thông qua giao tiếp I2C.
Ưu điểm khi dùng môđun LCD I2C:
Chỉ cần 2 chân tín hiệu (SDA và SCL) để truyền dữ liệu cần hiển thị từ Arduino
tới LCD thay vì 7 chân như khi kết nối trực tiếp LCD với Arduino

Có thể hiển thị đồng thời tới 8 (hoặc hơn) các LCD mà vẫn chỉ cần 2 chân tín
hiệu nếu trên
Kết nối modun i2c với lcd


d. Cảm biến DHT11

Cảm biến DHT11 đã được tích hợp trong một mạch duy nhất, bạn chỉ việc nối
dây nguồn (Vcc, GND) và dây tín hiệu (Signal) vào mạch Arduino là xong.


Sơ đồ kết nối vi xử lý:

- Nguyên lý hoạt động:
Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lý thực hiện theo
2 bước:
o Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại.
o Khi đã giao tiếp được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu


và nhiệt độ đo được.
- Bước 1: gửi tín hiệu Start

o MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trong
khoảng thời gian >18ms. Trong Code mình để 25ms. Khi đó DHT11 sẽ
hiểu MCU muốn đo giá trị nhiệt độ và độ ẩm.
o MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào.
o Sau khoảng 20-40us, DHT11 sẽ kéo chân DATA xuống thấp. Nếu
>40us mà chân DATA ko được kéo xuống thấp nghĩa là ko giao tiếp
được với DHT11.

o Chân DATA sẽ ở mức thấp 80us sau đó nó được DHT11 kéo nên cao
trong 80us. Bằng việc giám sát chân DATA, MCU có thể biết được có
giao tiếp được với DHT11 ko. Nếu tín hiệu đo được DHT11 lên cao, khi
đó hoàn thiện quá trình giao tiếp của MCU với DHT.
- Bước 2: đọc giá trị trên DHT11
o DHT11 sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 byte. Trong đó:
§ Byte 1: giá trị phần nguyên của độ ẩm (RH%)
§ Byte 2: giá trị phần thập phân của độ ẩm (RH%)
§ Byte 3: giá trị phần nguyên của nhiệt độ (TC)
§ Byte 4 : giá trị phần thập phân của nhiệt độ (TC)
§ Byte 5 : kiểm tra tổng.
ð Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ ẩm
và nhiệt độ là chính xác, nếu sai thì kết quả đo không có nghĩa.
o Đọc dữ liệu:
Sau khi giao tiếp được với DHT11, DHT11 sẽ gửi liên tiếp 40 bit 0 hoặc
1 về MCU, tương ứng chia thành 5 byte kết quả của Nhiệt độ và độ ẩm.


Bit 0:

Bit 1:

Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được
DHT11 kéo lên 1. Nếu chân DATA là 1 trong khoảng 26-28 us thì là 0,
còn nếu tồn tại 70us là 1. Do đó trong lập trình ta bắt sườn lên của chân
DATA, sau đó delay 50us. Nếu giá trị đo được là 0 thì ta đọc được bit 0,
nếu giá trị đo được là 1 thì giá trị đo được là 1. Cứ như thế ta đọc các bit
tiếp theo.
Thông số kĩ thuật





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



Ngưỡng độ ẩm: 20 - 90%



Sai số độ ẩm: ± 5%



Ngưỡng nhiệt độ: 0 - 55oC



Sai số nhiệt độ: ± 2oC

e. Động cơ
Máy Bơm Mini 6-12V MB385
Hình ảnh


Thông số kỹ thuật.
Điện áp: DC6-12V



- Dòng tiêu thụ: 0.6-2A
- Công suất: 5-12W
- Nhiệt độ hoạt động: 80 độ C
- Lưu lượng bơm: 1-2L/Min
- Kích thước: 90x40x35MM
- Đầu hút cách nước: <= 2 Mét
- Đẩy nước cao <= 3 Mét ( Có ống tio)
Động Cơ Mini 3-6V V1

Hình ảnh động cơ
Thông số kỹ thuật
Đường kính trục: 2MM
- Độ dài trục: 10MM
- Kích thước Động cơ: 25x21MM
- Động cơ chạy ổn định ở 3V


- Tốc độ: 3V 12.000r/Min
- Dòng tiêu thụ: 0.3-0.4A
f. Module Relay 2 Kênh 5V-220V/10A

Tín hiệu vào : 5V
Bật 0, tắt 1
Thay đổi J0,J1 để thay đổi mức điều khiển
Tiếp điểm relay 220 V-10A
NC thường đóng
NO thường mở
VCC,GND là nguồn chung với điều khiển
VSS+, VSS- là nguồn của relay


Phần III: Chế tạo và thử nghiệm
3.1 Mô hình thiết kế:


Mô hình thiết kế

3.2 Thiết kế phần mềm


Bắt đầu
a.Thuật toán

Khởi tạo modul

Hiển thị LCD

Đo nhiệt độ + độ ẩm

t°≤28°
Động cơ
không
quay

Động cơ
quay

28°
t°≥30°


b.Chương trình điều khiển
#include <DHT.h>
#include <Wire.h>

h<80%

Bơm hoạt
động

80%≤h<85%

h≥85%

Bơm
ngừng hoạt
động


#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f,16,2);
const int DHTPIN = 2;
const int DHTTYPE = DHT11;
DHT dht(DHTPIN, DHTTYPE);

byte degree[8] = {
0B01110,
0B01010,
0B01110,
0B00000,
0B00000,

0B00000,
0B00000,
0B00000
};

void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
lcd.init();
lcd.backlight();


lcd.print("Nhiet do: ");
lcd.setCursor(0,1);
lcd.print("Do am: ");
lcd.createChar(1, degree);
dht.begin();
}

void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(t) || isnan(h)) { // Kiểm tra xem thử việc đọc giá trị có bị thất bại
hay không. Hàm isnan bạn xem tại đây />}
else {
lcd.setCursor(10,0);
lcd.print(round(t));

lcd.print(" ");
lcd.write(1);
lcd.print("C");

lcd.setCursor(10,1);
lcd.print(round(h));
lcd.print(" %");
}


if (t>30) {

digitalWrite (6,LOW);
}
if (t<28) {

digitalWrite(6,HIGH);

}
if (h <75) {
digitalWrite (4,LOW);
}
if (h >80) {
digitalWrite(4,HIGH);
}
}

Phần IV.Thảo luận kết quả đạt được:
- Kết quả đạt được: đã chế tạo thành công hệ thống điều khiển nhiệt độ độ ẩm
trong nhà lưới

- Hướng nghiên cứu tiếp theo: Sẽ cố gắng hoàn thành mô hình nhà lưới công
nghệ cao sử dụng hệ thống đo nhiệt độ, độ ẩm kết hợp làm mát bằng quạt và
phun sương tự động cho hoa, sử dụng các tấm chỉ thị để phát hiện côn trùng gây
hại cho hoa…
* Kết luận và đề nghị:
Do điều kiện còn chưa đầy đủ nên đồ án của em còn đơn giản, việc đưa công
nghệ cao vào mô hình là chưa đầy đủ.


×