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

Báo cáo đồ án thiết kế hệ thống nhúng: Đo độ ẩm, nhiệt đô trong phòng hiển thị qua LCD

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 (1013.08 KB, 12 trang )

Học viện Cơng nghệ Bưu chính Viễn thơng

Báo cáo mơn Đồ án thiết kế hệ thống nhúng
Đề tài: Đo độ ẩm, nhiệt độ trong phịng
hiển thị qua LCD
Giảng viên:

N.N.Minh

Nhóm:

08

Sinh viên thực hiện:

Nguyễn Quang Quân

B17DCDT146

Trần Minh Tú

B17DCDT198

Phạm Hồng Sơn

B17DCDT162

Phạm Xuân Trường

B17DCDT194


Hà Nội, 2021

1


Mục lục
I.

Giới thiệu..........................................................................................................3

II. Nội dung chính....................................................................................................3
III. Phần cứng cần thiết..........................................................................................3
IV. Thơng số chi tiết các linh kiện..........................................................................3
1.

Giới thiệu LCD 16×2...................................................................................3

2.

Module I2C Arduino...................................................................................4

3.

Giới thiệu giao thức I2C.............................................................................6

4.

Arduino UNO R3........................................................................................6

5.


Cảm biến nhiệt độ, độ ẩm DHT11.............................................................9

V.

Sơ đồ mạch.....................................................................................................10

VI. Code...............................................................................................................10
VII.

Kết quả demo.............................................................................................11

2


I.

Giới thiệu
Sự bùng nổ của công nghệ ngành điện tử ngày càng phát triển một cách mạnh mẽ.
Những ứng dụng của nó giúp con người ngày càng có cuộc sống nâng cao. Sự khảo sát về
nhiệt độ ,độ ẩm môi trường với con người trước kia ln gặp khó khăn do phải đo đạc và
tính tốn một cách khá phức tạp. Do đó chúng em đã lựa chọn đề tài đo nhiệt độ độ ẩm
môi trường để ứng dụng vào nhiều công việc khác nhau.
Đề tài giúp học được cách đo nhiệt độ - độ ẩm từ cảm biến và xuất ra màn hình LCD.
Hiểu được Arduino tạo cho người dùng một sự đơn giản và tiện lợi đến mức nào.
II. Nội dung chính
Đọc dữ liệu từ cảm biến nhiệt độ - độ ẩm DHT11.
Sử dụng màn hình LCD để xuất thơng tin.
III. Phần cứng cần thiết



Màn hình LCD 16 x 2



Mạch điều khiển màn hình LCD sử dụng giao tiếp I2C



Cảm biến nhiệt độ - độ ẩm DHT11



Arduino UNO R3

IV. Thông số chi tiết các linh kiện
1. Giới thiệu LCD 16×2

3


 Thơng số kỹ thuật LCD 16×2:
- LCD 16×2 được sử dụng để hiển thị trạng thái hoặc các thông số.
 LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển
(RS, RW, EN).
 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.
 Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ
liệu.
 Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.
-


LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm.

2. Module I2C Arduino

-

LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng
nhiều chân trên vi điều khiển.

-

Module I2C LCD ra đời và giải quyết vấn để này .

Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5
và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối.
Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4,
…) và tương thích với hầu hết các vi điều khiển hiện nay.
 Ưu điểm
 Tiết kiệm chân cho vi điều khiển.

4


 Dễ dàng kết nối với LCD.
 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 (driver 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.
 Các lỗi thường gặp khi sử dụng I2C LCD
-

Hiển thị một dãy ơ vng.
Màn hình chỉ in ra một ký tự đầu.
Màn hình nhấp nháy.
Module I2C LCD 16×2

Arduino UNO

GND

GND

VCC

5V

SDA

A4/SDA

SCL

A5/SCL

Sơ đồ đấu nối


5


3. Giới thiệu giao thức I2C
I2C là tên viết tắt của cụm từ tiếng anh “Inter-Integrated Circuit”. Nó là một giao
thức giao tiếp được phát triển bởi Philips Semiconductors để truyền dữ liệu giữa một bộ
xử lý trung tâm với nhiều IC trên cùng một board mạch chỉ sử dụng hai đường truyền tín
hiệu.
Do tính đơn giản của nó nên loại giao thức này được sử dụng rộng rãi cho giao tiếp giữa
vi điều khiển và mảng cảm biến, các thiết bị hiển thị, thiết bị IoT, EEPROMs, v.v …
Đây là một loại giao thức giao tiếp nối tiếp đồng bộ. Nó có nghĩa là các bit dữ liệu được
truyền từng bit một theo các khoảng thời gian đều đặn được thiết lập bởi một tín hiệu
đồng hồ tham chiếu.
 Đặc điểm
-

Sau đây là một số đặc điểm quan trọng của giao thức giao tiếp I2C:
 Chỉ cần có hai đường bus (dây) chung để điều khiển bất kỳ thiết bị / IC nào trên
mạng I2C
 Không cần thỏa thuận trước về tốc độ truyền dữ liệu như trong giao tiếp UART.
Vì vậy, tốc độ truyền dữ liệu có thể được điều chỉnh bất cứ khi nào cần thiết
 Cơ chế đơn giản để xác thực dữ liệu được truyền
 Sử dụng hệ thống địa chỉ 7 bit để xác định một thiết bị / IC cụ thể trên bus I2C
 Các mạng I2C dễ dàng mở rộng. Các thiết bị mới có thể được kết nối đơn giản
với hai đường bus chung I2C
4. Arduino UNO R3

6



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)

 Các chân năng lượng
GND (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ó ln 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.

7


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Ω.

 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. 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.
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().
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK. 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.

8


-

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.

-

Đặ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.
5. Cảm biến nhiệt độ, độ ẩm DHT11

-

Cảm biến độ ẩm và nhiệt độ DHT11 là cảm biến rất thông dụng hiện nay vì chi
phí rẻ và rất dễ lấy dữ liệu thông qua chuẩn giao tiếp 1 wire (Chuẩn giao tiếp 1
wire là dùng 1 chân Digital để truyền dữ liệu).

-

Bộ tiền xử lý tín hiệu được tích hợp trong cảm biến giúp bạn có thể đọc dữ liệu
chính xác mà khơng phải qua bất kỳ tính tốn nào.

.

Thơng số kỹ thuật của cảm biến:
 Điện áp hoạt động: 3V – 5V (DC)
 Dải độ ẩm hoạt động: 20% – 90% RH, sai số ±5%RH
 Dải nhiệt độ hoạt động: 0°C ~ 50°C, sai số ±2°C
 Khoảng cách truyển tối đa: 20m
Cách nối với Arduno
Arduino Uno

Cảm biến nhiệt độ, độ ẩm DHT11

5V

VCC

9


GND

GND

D4

DATA

V.

Sơ đồ mạch

I2C


DHT11

Arduino R3

LCD

VI. Code
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);// chú ý LCD có 2 địa chỉ ( 0x3F hoặc 0x27)
#include <LiquidCrystal.h>

10


const int DHTPIN = 9;
//Đọc dữ liệu từ DHT11 ở chân 2 trên mạch
Arduino
const int DHTTYPE = DHT11; //Khai báo loại cảm biến, có 2 loại là
DHT11/DHT22 /DHT21 -thay vao
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
dht.begin();
lcd.init();
lcd.backlight();
Serial.begin(9600);

// giao tiếp Serial với baudrate 9600


lcd.print(" WELCOME");
// put your setup code here, to run once:
delay(1500);
lcd.setCursor(0,0);
lcd.println("
");
}
void loop()
{
// put your main code here, to run repeatedly:
int h = dht.readHumidity();
int t = dht.readTemperature();
lcd.setCursor(0,0);
lcd.print(" NHIET DO:");
lcd.print(t);
lcd.write(0xdf);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print(" DO AM :");
lcd.print(h);
lcd.print("%");
Serial.print("Nhhiet do : ");Serial.println(t);
Serial.print("Do am : ");Serial.println(h);
}

11


VII.


Kết quả demo

12



×