Tải bản đầy đủ (.doc) (28 trang)

NGHIÊN CỨU THIẾT KẾ MẠCH ĐO NHIỆT ĐÔ ĐỘ ẨM TRÊN LCD DÙNG CARD ARDUINO MEGA 2560

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.89 MB, 28 trang )

Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM
TP.HCM
KHOA CNKT ĐIỆN – ĐIỆN TỬ
----------

ĐỒ ÁN HỌC PHẦN 1
ĐỀ TÀI: NGHIÊN CỨU THIẾT KẾ MẠCH ĐO
NHIỆT ĐÔ - ĐỘ ẨM TRÊN LCD DÙNG CARD
ARDUINO MEGA 2560

GVHD: Lê Minh Thanh
SVTH : Võ Minh Quang
Lớp : 06DHDT3
MSSV : 2002150132

…., tháng… năm
SVTH: Võ Minh Quang

1


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

LỜI NÓI ĐẦU


Ngày nay cùng với sự phát triển nhanh chóng của khoa học kỹ thuật thì các
lĩnh vực ứng dụng kỹ thuật công nghệ cao ngày càng phát triển và kỹ thuật điện
tử đã và đang khẳng định vai trò to lớn của mình,góp phần nâng cao cải thiện đời
sống vật chất và tinh thần cho con người. Lĩnh vực ứng dụng điện tử số đang
ngày càng lớn mạnh và được ưa chuộng vì tính đa dạng, chính xác và những ưu
điểm vượt trội so với kỹ thuật tương tự. Những môn học về điện tử cũng đã được
ứng dụng rất nhiều.
Độ ẩm là một trong những đặc trưng quan trọng nhất của khí hậu và có ý
nghĩa quan trọng đối với một số quá trình công nghệ. Ứng dụng của cảm biến
nhiệt độ -độ ẩm vô cùng đa dạng, có thể dùng trong xác định độ ẩm của đất, nhiệt
độ trong các nhà máy, phòng thí nghiệm hay là đơn thuần để xác định nhiệt đô độ ẩm của không khí. Vận dụng kiến thức đã học và để làm sáng tỏ hiệu quả của
những ứng dụng mà cảm biến độ ẩm mang lại em quyết định chọn đề tài
“NGHIÊN CỨU THIẾT KẾ MẠCH ĐO NHIỆT ĐỘ - ĐỘ ẨM TRÊN LCD
DÙNG CARD ARDUINO”.
Đề tài gồm các nội dung sau:
Chương 1: Phần mở đầu
Chương 2: Giới thiệu về một số linh kiện trên mô hình nghiên cứu thiết kế
Chương 3: Thiết kế mạch và chương trình điều khiển
Chương 4: Kết luận
Dưới sự hướng dẫn ,chỉ bảo nhiệt tình của thầy Lê Minh Thanh cùng với sự
cố gắng nỗ lực của bản thân, em đã hoàn thành bài báo cáo đúng thời hạn cho
phép. Tuy nhiên do thời gian hạn chế, cũng như lượng kiến thức rất lớn nên
không thể tránh khỏi nhiều thiếu xót. Vì vậy em rất mong nhận được nhiều ý kiến
đánh giá, góp y của quý thầy cô giáo viên để có thể phát triển và hoàn hiện đề tài
này.
Tp.HCM, Ngày
tháng năm

.
Sinh viên thực hiện


SVTH: Võ Minh Quang

1


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
…………………………………………………………………………………
…..…..
……………………………………………………………………………...
……………………………………………………………………………………..
……..……………………………………………………………………………...
………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
….………………………………………………………………………..…...
………

Tp.HCM, Ngày
tháng năm

.

SVTH: Võ Minh Quang

2


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

Giáo viên hướng
dẫn

(ký và ghi rõ họ tên)

Mục lục
LỜI NÓI ĐẦU...................................................................................................................1
CHƯƠNG 1: PHẦN MỞ ĐẦU.......................................................................................5
1.1 Mục đích thực hiện đề tài.........................................................................................5
1.2 Đặt vấn đề................................................................................................................5
1.3 Giải quyết vấn đề.....................................................................................................5
1.4 Giới hạn vấn đề........................................................................................................5
CHƯƠNG 2: GIỚI THIỆU VỀ MỘT SỐ LINH KIỆN TRÊN MÔ HÌNH NGHIÊN
CỨU THIẾT KẾ..............................................................................................................6
2.1 Arduino....................................................................................................................6
2.1.1 Giới thiệu chung về Arduino.............................................................................6

2.1.2 Khái quát cấu tạo của Arduino Mega 2560.......................................................7
2.1.3 Ngôn ngữ lập trình cho Arduino.....................................................................10
2.1.4 Một số ứng dụng của Arduino Mega 2560......................................................12
2.2 Cảm biến nhiệt độ - độ ẩm DHT11........................................................................12
2.2.1 Giới thiệu.........................................................................................................12
2.2.2 Nguyên lí hoạt động........................................................................................13
2.3 LCD16*2...............................................................................................................16
2.3.1 Giới thiệu.........................................................................................................16
2.3.2 Hình dáng và kích thước.................................................................................16
2.3.3 Thông số kỹ thuật – chi tiết.............................................................................18
CHƯƠNG 3:THIẾT KẾ MẠCH VÀ CHƯƠNG TRÌNH ĐIỀU KHIỂN................19
3.1 Sơ đồ khối..............................................................................................................19
3.2 Chức năng các khối................................................................................................19
3.3 Sơ đồ kết nói phần cứng........................................................................................19
3.4 Mã chương trình.....................................................................................................20
3.4.1 Giới thiệu thư viện sử dụng trong chương trình..............................................20
3.4.2 Code lập trình..................................................................................................20

SVTH: Võ Minh Quang

3


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

3.4.3 Nạp code và chạy chương trình.......................................................................21
CHƯƠNG 4: KẾT LUẬN.............................................................................................23
4.1 Sản phẩm thực tế....................................................................................................23

4.2 Kết luận..................................................................................................................23
4.2.1 Kết quả đạt được.............................................................................................23
4.2.2 Những khó khăn gặp phải khi làm đề tài........................................................24

Danh mục hình
Hình 2.1 Arduino Mega 2560 ......................................................................................7
Hình 2.2 Chip ATmega 2560........................................................................................7
Hình 2.3 Arduino Mega 2560 (chi tiết)........................................................................8
Hình 2.4: Giao diện Arduino IDE...............................................................................10
Hình 2.5 IDE Menu Arduino Mega 2560...................................................................11
Hình 2.6 Cổng kết nối máy tính.................................................................................12
Hình 2.7 Cảm biến nhiệt độ - độ ẩm DHT 11............................................................13
Hình 2.8 Hình dáng của loại LCD thông dụng..........................................................16
Hình 2 9 Sơ đồ chân của LCD16*2...........................................................................16
Hình 3.1 Hình ảnh kết quả thực tế đo nhiệt độ...........................................................21
Hình 3.2 Serial Monitor của phần mềm Arduino IDE...............................................22
Hình 4.1 Mạch sau khi lắp ráp...................................................................................23

SVTH: Võ Minh Quang

4


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

CHƯƠNG 1: PHẦN MỞ ĐẦU
1.1 Mục đích thực hiện đề tài
Mục đích trước hết thực hiện đề tài này là hoàn thành đồ án học phần 1 của

học kì 1 2017-2018. Cụ thể khi chọn đề tài này là em muốn ứng dụng kiến thức
đã học để tạo ra một sản phẩm giúp người học có hứng thú đam mê trong học tập
cũng như khả năng ứng dụng và thực tế cao. Mặt khác tài liệu này cũng có thể
làm tài liệu tham khảo cho các sinh viên khóa sau, giúp họ hiểu rõ hơn những
ứng dụng của lập trình Arduino.

1.2 Đặt vấn đề
Sự biến đổi nhiệt độ trong môi trường sẽ ảnh hưởng đến quá trình làm việc
của thiết bị. Nhưng khi chúng ta nắm bắt được nhiệt độ làm việc của hệ thống
giúp ta biết được tình trạng làm việc và có những xử lý kịp thời hư hỏng. Việc
dùng phương pháp thủ công xác định được nhiệt độ sẽ trở nên ít chính xác và tốn
thời gian hơn. Thay vào đó sẽ dùng cảm biến nhiệt độ - độ ẩm để có được độ
chính cao và ít thời gian hơn. Chúng ta còn có thể áp dụng cảm biến nhiệt độ - độ
ẩm khống chế giới hạn nhiệt độ nào đó tùy vào ứng dụng thực tiễn.

1.3 Giải quyết vấn đề
Mạch đo nhiêt độ - độ ẩm sử dụng DHT11 hiển thị LCD trên Arduino sẽ trở
nên gần gũi với người sử dụng hơn, giao diện dễ gần thân thiện, độ chính xác
tương đối cao, chúng cũng được chế tạo bởi các linh kiện điện tử , lập trình tự
động có hoạt động tự động theo ý muốn người lập trình. Do đó em chọn đề tài
này để thực hiện.

1.4 Giới hạn vấn đề
Trong quá trình thực hiện đề tài này có nhiều vấn đề phát sinh như : do thời
gian có hạn, tài liệu tham khảo còn ít và kiến thức còn hạn chế cũng như kinh
nghiệm non kém nên không thể tránh khỏi những thiếu sót .

SVTH: Võ Minh Quang

5



Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

CHƯƠNG 2: GIỚI THIỆU VỀ MỘT SỐ LINH KIỆN TRÊN
MÔ HÌNH NGHIÊN CỨU THIẾT KẾ
 GIỚI THIỆU CHUNG:
Mạch đo nhiệt đô - độ ẩm hiển thị trên LCD được sủ dụng card Arduino
Mega 2560 tín hiệu này được Arduino xử lý và sau đó xuất ra tín hiệu và được
hiển thị trên LED. Để thực hiện một mạch đo nhiệt đô - độ ẩm hiển thị trên LCD
ta có thể sử dụng nhiều loại Arduino khác nhau. Tuy nhiên, do có sẵn board
Arduino Mega 2560 ,tài liệu nghiên cứu về chúng, bộ Kit phát triển, em đã lựa
chọn Arduino Mega 2560 cho mạch đo nhiệt đô - độ ẩm này. Ngoài ra mạch còn
sử dụng thêm cảm biến DHT11, LCD 16*2.

2.1 Arduino
2.1.1 Giới thiệu chung về Arduino
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương
tác với nhau hoặc với môi trường được thuận lợi hơn. Phần cứng bao gồm một
board mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc
ARM Atmel 32-bit. Những Model hiện tại được trang bị gồm 1 cổng giao tiếp
USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board
mở rộng khác nhau.
Arduino thật ra là một bo mạch vi xử lý được dùng để lập trình tương tác
với các thiết bị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác.
Đặc điểm nổi bật của Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử
dụng, với một ngôn ngữ lập trình có thể học một cách nhanh chóng ngay cả với
người ít am hiểu về điện tử và lập trình. Và điều làm nên hiện tượng Arduino

chính là mức giá rất thấp và tính chất nguồn mở từ phần cứng tới phần mềm. Chỉ
với khoảng $30, người dùng đã có thể sở hữu một board Arduino có 20 ngõ I/O
có tương tác và điều khiển chừng ấy thiết bị.
Được giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắng
mang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích,
sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác
với môi trường thông qua các cảm biến và các cơ cấu chấp hành. Những ví dụ
phổ biến cho những người yêu thích mới bắt đầu bao gồm các robot đơn giản,
điều khiển nhiệt độ và phát hiện chuyển động. Đi cùng với nó là một môi trường
phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thường và cho
phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc C++.

SVTH: Võ Minh Quang

6


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

2.1.2 Khái quát cấu tạo của Arduino Mega 2560
Arduino Mega 2560 là phiên bản nâng cấp của Arduino Mega hay còn gọi
là Arduino Mega 1280. Sự khác biệt lớn nhất với Arduino Mega 1280 chính là
chip nhân. Ở Arduino Mega 1280 sử dụng chip ATmega1280 với flash memory
128KB, SRAM 8KB và EEPROM 4 KB. Nhưng do tính năng, bộ nhớ và tốc độ
xử lí đã lỗi thời không còn đáp ứng được nhu cầu của thời đại công nghệ phát
triển chóng mặt, nên Arduino Mega 1280 không còn được sử dụng nữa, thay vào
đó là Arduino Mega 2560 đã đáp ứng tốt với nhu cầu của người dùng.


Hình 2.1 Arduino Mega 2560

Đây là Arduino Mega 2560 phiên bản hiện đang được sử dụng rộng rãi và
ứng dụng nhiều hơn. Với chip ATmega2560 có bộ nhớ flash memory 256 KB,
8KB cho bộ nhớ SRAM, 4 KB cho bộ nhớ EEPROM. Giúp cho người dùng thêm
khả năng viết những chương trình phức tạp và điều khiển các thiết bị lớn hơn như
máy in 3D, điều khiển robot…

Hình 2.2 Chip ATmega 2560

SVTH: Võ Minh Quang

7


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

Hình 2.3 Arduino Mega 2560 (chi tiết)

 Các thông số kỹ thuật của Ardiuno Mega 2560:
-

Vi điều khiển : ATmega 2560
Điện áp hoạt động : 5V
Nguồn ngoài ( giắc tròn DC) 7-9V. Không nên cấp nguồn 12v vì sẽ gây
hỏng IC ổn áp.
Giao tiếp UART: 4 bộ UART
Giao tiếp SPI: 1 bộ ( chân 50 đến chân 53) dùng với thư viện SPI của

Ardunio.
Giao tiếp I2C: 1 bộ.
 Các thông số chi tiết của Ardiuno Mega 2560:

-

Số chân Digital 54 ( 15 chân PWM là từ chân số 213 và các chân
44,45,46 )
Số chân Analog 16 (từ chân A0A15)
Bộ nhớ Flash 256KB, 8KB sử dụng cho Bootloader.
SRAM 8KB.
EEPROM 4KB.
Xung clock 16MHZ (thạch anh).
6 ngắt ngoài: chân 2 (interrupt 0), chân 3 (interrupt 1), chân 18 (interrupt
5), chân 19 (interrupt 4), chân 20 (interrupt 3), and chân 21 (interrupt 2).

SVTH: Võ Minh Quang

8


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

-

-

GVHD:Lê Minh Thanh

4 cổng Serial giao tiếp với phần cứng:

CỔNG SERIAL

CHÂN RX

CHÂN TX

Cổng 0

0

1

Cổng 1

19

18

Cổng 2

17

16

Cổng 3

15

14


1 thạch anh với tần số dao động 16MHz.
1 cổng kết nối USB
1 jack cắm điện.
1 đầu ICSP.
1 nút reset.

Đối với những ai quan tâm tới Matlab thì Arduino Mega 2560 cũng là một
sự chọn lừa tuyệt vời. Vì nó còn được tích hợp sẵn thư viện dành cho MatLab.
Với viện kết hợp giữa MatLab và Arduino là một sự kết hợp thú vị. Arduino
Mega 2560 có thể sử dụng hầu hết các shiled dành cho các mạch Arduino Uno
hoặc các mạch trước đây như Duemilanove hay Diecimila với cách cài đặt và nối
chân tương tự như Arduino Uno.

2.1.3 Ngôn ngữ lập trình cho Arduino

SVTH: Võ Minh Quang

9


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

 Phần mềm Arduino IDE Menu

Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại
nhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần
mềm. Môi trường lập trình đơn giản dễ sử dụng, ngôn ngữ lập trình Wiring dễ
hiểu và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan

trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở
là cực kỳ lớn.
Arduino IDE là phần mềm dùng để lập trình cho Arduino. Môi trường lập
trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là
Windows, Macintosh osx và Linux. Do có tính chất nguồn mở nên môi trường
lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh
nghiệm.
Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++. Và do
ngôn ngữ lập trình này dựa trên nền tảng ngôn ngữ c của AVR nẽn người dùng
hoàn toàn có thể nhúng thêm code viết bằng AVR vào chương trình nếu muốn.

Hình 2.4
Giao diện Arduino IDE

 Hiện tại, Arduino IDE có thể download từ trang chủ bao
gồm các phiên bản sau:
SVTH: Võ Minh Quang

10


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

-

GVHD:Lê Minh Thanh

Arduino 1.8.5 (Mới nhất cho đến hiện tại).
Arduinol.5.5 BETA (Hỗ trợ cho 2 board Arduino mới nhất là: Arduino Yun
và Arduino Due).

Arduino IDE cho Intel Galileo.
 Cách dùng phần mềm với Arduino Mega 2560

 Chọn loại vi điều khiển ( Arduino Mega 2560): Vào mục tool => Board
“Arduino/Genuino Mega 2560 or Mega 2560”=> Chọn Arduino/Genuino Mega
2560 or Mega 2560.

Hình 2.5 IDE Menu Arduino Mega 2560

 Chọn Cổng kết nối giữa máy tính và mạch vi điều khiển:

SVTH: Võ Minh Quang

11


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

Hình 2.6 Cổng kết nối máy tính

2.1.4 Một số ứng dụng của Arduino Mega 2560
 Ứng dụng trong công nghiệp
Arduino là trung tâm của bộ xử lí nên được dùng làm bộ nhớ trung tâm
trong các hệ thống điều khiển tự động như băng chuyền, hệ thống đếm hàng, hệ
thống tự động đóng chai trong các nhà máy nước ngọt…
 Ứng dụng trong dân dụng
Arduino được biết đến như là một thiết bị nhỏ gọn,rẻ và dễ dàng tương tác
nên được sử dụng rất nhiều trong dân dụng. Các hệ thống điều khiển các thiết bị

từ xa, hệ thống chống trộm, ngôi nhà thông minh… Tất cả để thân thiện và dễ
dàng sử dụng. Với giá thành rẻ và dễ dàng lắp đặt, ngày càng có nhiều sản phẩm
được hoàn thiện trong lĩnh vực này.

2.2 Cảm biến nhiệt độ - độ ẩm DHT11
2.2.1 Giới thiệu
- DHT11 là cảm biến nhiệt độ - độ ẩm. Nó ra đời sau và được sử dụng thay
thế cho dòng SHT1x ở những nơi không cần độ chính xác cao về nhiệt độ và độ
ẩm.
- DHT11 có cấu tạo 4 chân như hình. Nó sử dụng giao tiếp số theo chuẩn 1
dây.

SVTH: Võ Minh Quang

12


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

- Thông số kỹ thuật:
o Do độ ẩm: 20%-95%
o Nhiệt độ: 0-50ºC
o Sai số độ ẩm ±5
o Sai số nhiệt độ: ±2ºC

Hình 2.7 Cảm biến nhiệt độ - độ ẩm DHT 11

2.2.2 Nguyên lí hoạt động

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

SVTH: Võ Minh Quang

13


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

 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:
 Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại.
 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

 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.
 MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu và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.
 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

 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)
SVTH: Võ Minh Quang

14


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

 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.
 Đọ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:

SVTH: Võ Minh Quang

15


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM


GVHD:Lê Minh Thanh

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.

2.3 LCD16*2
2.3.1 Giới thiệu
Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) được sử dụng
trong rất nhiều các ứng dụng của VĐK. LCD có rất nhiều ưu điểm so với các
dạng hiển thị khác: Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và
kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao
tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẽ …

2.3.2 Hình dáng và kích thước
Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên
hình 1 là loại LCD thông dụng.

Hình 2.8 Hình dáng của loại LCD thông dụng

Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên
trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết. Các chân này được đánh số
thứ tự và đặt tên như hình 2.9

Hình 2 .9 Sơ đồ
chân của LCD16*2
SVTH: Võ Minh Quang


16


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

Thông thường, để sử dụng màn hình LCD, bạn sẽ phải mất rất nhiều chân
trên Arduino để điều khiển.
Do vậy, để đơn giản hóa công việc, người ta đã tạo ra một loại mạch điều
khiển màn hình LCD sử dụng giao tiếp I2C. Nói một cách đơn giản, bạn chỉ tốn 2
dây để điều khiển màn hình, thay vì 8 dây như cách thông thường.

Hàn mạch vào như thế này là xong.

2 chân SDA và SCL là 2 chân tín hiệu dùng cho giao tiếp I2C.

SVTH: Võ Minh Quang

17


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

2.3.3 Thông số kỹ thuật – chi tiết
 Thông số kỹ thuật:
- Điện áp hoạt động là 5 V.

- Kích thước: 80 x 36 x 12.5 mm
- Chữ đen, nền xanh lá/chữ trắng, nền xanh dương
- Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với
Breadboard.
- Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi
dây điện.
- Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử
dụng ít điện năng hơn.
- Có thể được điều khiển với 6 dây tín hiệu
- Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật
 Thông số chi tiết:
 Lcd có tất cả 16 chân:
- Chân cấp nguồn: vss (nối nguồn 5V), VDD (nối 0V), V0 (điều chỉnh độ
tương phản)
- RS: Chân chọn thanh ghi (Register select). Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ
“ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read).
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD.
- RW: Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
“0”để
LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc.
- E: Chân cho phép chốt xung kí tự (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.
-D0-D7: Chân dữ liệu
-A, K: Chân điều khiển đèn nền
Lcd có thể hoạt động theo 2 chế độ: 4 bit và 8 bit. Chế độ 4 bit đòi hỏi phải
kết nối với 7 chân I/O của ardiuno. Chế độ 8 bit đòi hỏi phải kết nối với 11 chân
I/O của Ardiuo.

SVTH: Võ Minh Quang

18


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

* Ghi chú : Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông
qua các chân DBx. Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều
khiển cho LCD thông qua các chân DBx.

SVTH: Võ Minh Quang

19


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

CHƯƠNG 3:THIẾT KẾ MẠCH VÀ CHƯƠNG TRÌNH

ĐIỀU KHIỂN
3.1 Sơ đồ khối

3.2 Chức năng các khối
 Cảm biến: có chức năng đo nhiệt độ từ môi trường và gửi giá trị đo được
cho Ardiuno khi có tín hiệu yêu cầu
.
 Khối xử lý trung tâm: có chức năng điều khiển cảm biến DHT11 đo
nhiệt độ,độ ẩm, đồng thời hiển thị dữ liệu trên LCD
 Khối hiển thị: có chức năng hiển thị giá tri nhiệt độ đo được.

3.3 Sơ đồ kết nói phần cứng

SVTH: Võ Minh Quang

20


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

3.4 Mã chương trình
3.4.1 Giới thiệu thư viện sử dụng trong chương trình
+ Thư viện: Cảm biến độ ẩm
#include "DHT.h"
+ Thư viện: LCD giao tiếp I2C
#include <LiquidCrystal_I2C.h>
+ Thư viện: I2CIO
#include "I2CIO.h"

+ Thư viện: LCD
#include "LCD.h"

3.4.2 Code lập trình
//DHT11 Sensor:
#include "DHT.h"
//Khai báo thư viện DHT
#define DHTPIN 12 // what digital pin we're connected to
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
//I2C LCD:
#include <Wire.h> // Comes with Arduino IDE
#include <LiquidCrystal_I2C.h>
//Khai báo thư viện LCD giao tiếp
I2C
// Set the LCD I2C address
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
Serial.println("Temp and Humidity Sensor Test");
dht.begin();
//khởi động cảm biến
}
void loop()
{
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
int h = dht.readHumidity();

//Đọc độ ẩm
int t = dht.readTemperature();
//Đọc nhiệt độ
// set the cursor to (0,0):
SVTH: Võ Minh Quang

21


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

//in ra màn hình nhiệt độ
lcd.setCursor(0, 0);
// print from 0 to 9:
lcd.print("Temp: ");
lcd.print(t);
lcd.print("C");
//In ra màn hình độ ẩm
// set the cursor to (16,1):
lcd.setCursor(0,1);
lcd.print("Humidity: ");
lcd.print(h);
lcd.print("%");
Serial.print("Temp: ");
Serial.print(t);
Serial.print("C, Humidity: ");
Serial.print(h);
Serial.println("%");

}

3.4.3 Nạp code và chạy chương trình
Sau khi nạp chương trình cho Arduino thì hệ thống bắt đầu
làm việc.Hệ thống hoạt động theo trình tự như sau:
.
 Arduino điều khiển DHT11 đo nhiệt độ và gửi lại nhiệt độ về
arduino,việc giao tiếp xảy ra tại chân digital 2.
.
 Arduino gửi nhiệt độ đo được cho LCD 16x2 hiển thị.

SVTH: Võ Minh Quang

22


Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

Hình 3.1 Hình ảnh kết quả thực tế đo nhiệt độ

Ta cũng có thể hiển thị giá trị nhiệt độ này lên màn hình máy
tính thông qua chế độ Serial Monitor của phần mềm Arduino IDE.

SVTH: Võ Minh Quang

23



Trường ĐH Công Nghiệp Thực Phẩm.TPHCM

GVHD:Lê Minh Thanh

Hình 3.2 Serial Monitor của phần mềm Arduino IDE

SVTH: Võ Minh Quang

24


×