Professional Documents
Culture Documents
BÁO CÁO ĐỒ ÁN
ĐỀ TÀI: ĐO NHIỆT ĐỘ, ĐỘ ẨM SỬ DỤNG CẢM BIẾN
DHT11 HIỂN THỊ TRÊN LCD
Hà Nội, 2021
MỤC LỤC
LỜI NÓI ĐẦU
Trong những thập niên thế kỉ XX, từ sự ra đời của công nghệ bán dẫn, kĩ
thuật cảm biến đã có sự phát triển vượt bậc. Các thiết bị điện tử sau đó đã được
tích hợp với mật độ cao và rất cao trong các diện tích nhỏ, nhờ vậy các thiết bị điện
tử kích thước nhỏ hơn và nhiều chức năng hơn. Các thiết bị điện tử thông minh
ngày càng nhiều chức năng trong khi giá thành ngày càng rẻ hơn, chính vì vậy mà
cảm biến có mặt khắp mọi nơi.
Ngày nay, trong các hệ thống đo lường - điều khiển, mọi quá trình đều được
đặc trưng bởi các biến trạng thái. Các biến trạng thái này thường là các đại lượng
không điện như nhiệt độ, áp suất, lưu lượng, tốc độ, độ di chuyển v.v… Để thực
hiện các quá trình đo lường và điều khiển cần phải thu thập thông tin, đo đạc, theo
dõi sự biến thiên của các biến trạng thái của quá trình thực hiện chức năng trên là
các thiết bị cảm biến. Hầu hết các thiết bị kỹ thuật từ phức tạp đến đơn giản như
thiết bị điều khiển tự động, thiết bị văn phòng cho đến các thiết bị trong gia đình
đều được tích hợp các cảm biến. Các thiết bị cảm biến đang dần trở thành một
phần không thể thiếu trong đời sống hiện đại của chúng ta. Giờ đây không có một
lĩnh vực nào mà ở đó không sử dụng cảm biến. Chúng có mặt trong các hệ thống tự
động phức tạp, người máy, kiểm tra chất lượng sản phẩm, tiết kiệm năng lượng,
chống ô nhiễm môi trường. Cảm biến cũng được ứng dụng rộng rãi trong lĩnh vực
giao thông vận tải, sản xuất hàng tiêu dùng, bảo quản thực phẩm, sản xuất ô tô,
điện thoại…. Và một trong những cảm biến đang được ứng dụng rộng rãi ngày nay
là cảm biến đo nhiệt độ, độ ẩm DHT11.
Cảm biến đo nhiệt độ, độ ẩm được ứng dụng trong thực tế rất phổ biến như
ứng dụng để theo dõi thời tiết, đo nhiệt độ phòng, những nơi cần kiểm soát độ
ẩm… trong nhiều ứng dụng đó nhóm sinh viên chúng em đã tham gia vào thực
hiện đề tài “ĐO NHIỆT ĐỘ, ĐỘ ẨM SỬ DỤNG CẢM BIẾN DHT11 HIỂN
THỊ TRÊN LCD”. Trong quá trình thực hiện làm do chúng em chưa có kinh
nghiệm nhiều nên còn thiếu sót mong thầy (cô) chỉ dạy chúng em thêm trong
những lần tiếp theo để chúng em thực hiện đề tài thành công hơn.
Chúng em xin chân thành cảm ơn!!!
Arduino là gì mà có thể khiến ngay cả những sinh viên và nhà nghiên cứu tại
các trường đại học danh tiếng như MIT, Stanford, Carnegie Mellon phải sử dụng;
hoặc ngay cả Google cũng muốn hỗ trợ khi cho ra đời bộ kit Arduino Mega ADK
dùng để phát triển các ứng dụng Android tương tác với cảm biến và các thiết bị
khác?
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 bo Arduino có 20 ngõ I/O có thể tương tác và
điều khiển chừng ấy thiết bị.
Arduino ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt theo tên một vị
vua vào thế kỷ thứ 9 là King Arduin. Arduino chính thức được đưa ra giới
thiệu vào năm 2005 như là một công cụ khiêm tốn dành cho các sinh viên của giáo
sư Massimo Banzi, là một trong những người phát triển Arduino, tại trường
Interaction Design Instistute Ivrea (IDII). Mặc dù hầu như không được tiếp thị gì
cả, tin tức về Arduino vẫn lan truyền với tốc độ chóng mặt nhờ những lời truyền
miệng tốt đẹp của những người dùng đầu tiên. Hiện nay Arduino nổi tiếng tới nỗi
có người tìm đến thị trấn Ivrea chỉ để tham quan nơi đã sản sinh ra Arduino.
3.1.2. Tổng quan về Arduino Uno R3
3.1.2.1. Giới thiệu board Arduino Uno R3
Mạch Arduino Uno là dòng mạch Arduino phổ biến, khi mới bắt đầu làm
quen, lập trình với Arduino thì mạch Arduino thường nói tới chính là dòng
Arduino UNO. Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (Mạch Arduino
Uno R3).
Arduino Uno R3 là dòng cơ bản, linh hoạt, thường được sử dụng cho người
mới bắt đầu. Bạn có thể sử dụng các dòng Arduino khác như: Arduino Mega,
Arduino Nano, Arduino Micro… Nhưng với những ứng dụng cơ bản thì mạch
Arduino Uno là lựa chọn phù hợp nhất.
Arduino UNO R3 là kit Arduino UNO thế hệ thứ 3, với khả năng lập trình
cho các ứng dụng điều khiển phức tạp do được trang bị cấu hình mạnh cho các loại
bộ nhớ ROM, RAM và Flash, các ngõ vào ra digital I/O trong đó có nhiều ngõ có
khả năng xuất tín hiệu PWM, các ngõ đọc tín hiệu analog và các chuẩn giao tiếp đa
dạng như UART, SPI, TWI (I2C).
3.1.2.2. Cấu tạo của Arduino Uno R3
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Bảng 2.1. Thông số kỹ thuật của Arduino UNO R3
Thông số kỹ thuật:
- Điện áp hoạt động: 3.3V đến 5V (DC).
- Dải nhiệt độ đo: 0°C ~ 50°C, sai số ± 2°C.
- Dải độ ẩm đo: 20% - 90% RH, sai số ± 5% RH.
- Tần số lấy mẫu: 1Hz, nghĩa là 1 giây DHT11 lấy mẫu một lần.
- Chuẩn giao tiếp: TTL, 1 – Wire.
- Dòng tối đa: 2.5mA
- Kích thước cảm biến: 15mm x 12mm x 5.5mm.
- Kích thước module: 28mm x 12mm x 10 mm.
Để 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 tín hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại.
- Khi đã giao tiếp 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. 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 thời gian là 20 - 40 µs, DHT11 sẽ kéo chân DATA xuống thấp.
Nếu > 40 µs mà chân DATA không được kéo xuống thấp nghĩa là không giao
tiếp được với DHT11.
• Chân DATA sẽ ở mức thấp 80 µs sau đó nó được DHT11 kéo lên cao trong
80 µs. 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 không. 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 DHT11.
• Bit 1:
- Sau khi tiến hiệu được đưa về 0, ta đợi chân DATA của DHT11 được MCU
kéo lên 1. Nếu chân DATA là 1 trong khoảng 26 – 28 µs thì là bit 0, còn nếu
tồn tại 70 µs là bit 1. Do đó trong lập trình ta bắt sườn của chân DATA, sau
đó delay 50 µs. Nếu giá trị đo được là 0 thì ta đọc được bit 0, nếu giá trị đo
được là 1 thì ta đọc được là bit 1. Cứ như thế ta đọc các Bit tiếp theo.
Hình 2.8 Cách truyền bit
3.3. Tổng quan về LCD
3.3.1. Giới thiệu về LCD
Thế kỷ 21 đã chứng kiến sự phát triển vượt bậc của các ngành công nghệ.
Một trong số các công nghệ đó chúng ta phải kể đến đó là công nghệ LCD. Nhà
vật lý người Áo Frinitzen Reinitzer đã phát hiện ra các tinh thể lỏng vào năm 1888.
Màn hình tinh thể lỏng đầu tiên đuợc sản xuất vào những năm 70 của thế ký 20 với
những ứng dụng ban đầu trong máy tính, đồng hồ và quan sát phần tử…. Công
nghệ màn hình tinh thể lỏng phát triển rất mạnh mẽ với giá thành ngày càng thấp,
tiêu hao ít năng luợng kiểu dáng gọn nhẹ với rất nhiều các ứng dụng trong thực tế
như: tivi, màn hình máy tính, màn hình điện thoại…
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ẽ …
LCD là tên viết tắt của (Liquid Crystal Display) hay còn được biết đến cái
tên dân dã hơn là màn hình tinh thể lỏng. Có rất nhiều loại màn hình LCD khác
nhau. Với những ứng dụng nhỏ thường sử dụng loại màn hình cỡ nhỏ đơn giản là
loại LCD16x2. Các ký tự được hiển thị trên màn hình với 2 hàng, mỗi hàng hiển
thị được 16 ký tự.
+ Loại hiển thị ký tự (charater LCD) gồm có các các kích cỡ 16x1(16 kí tự
x1 dòng); 16x2(16 ký tự x2 dòng); 16x4 (16 ký tự x4 dòng); 20x1 (20 ký tự x1
dòng).
+ Loại hiển thị đồ họa (graphic LCD) đen trắng hoặc màu gồm các kích cỡ
1,47 inch (128x128 điểm ảnh); 1,8 inch (128x160 điểm ảnh); 2,4 inch (240x320
điểm ảnh).
Thông số kỹ thuật:
Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
2 VDD
VCC=5V của mạch điều khiển.
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
4 RS (ở 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.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
5 R/W “0” để LCD hoạt động ở chế độ ghi, hoặc nối với 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
6 E 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.
7- D0 - Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU.
14 D7 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.
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.
CHƯƠNG 4. THỰC HIỆN ĐỒ ÁN
void loop()
{
delay(1000);
while(1)
{
delay(1000);
pinMode(gate,OUTPUT);
digitalWrite(gate,LOW);
delay(20);
digitalWrite(gate,HIGH);
pinMode(gate,INPUT_PULLUP);//by default it will become high
due to internal pull up
// delayMicroseconds(40);
duration=pulseIn(gate, LOW);
if(duration <= 84 && duration >= 72)
{
while(1)
{
duration=pulseIn(gate, HIGH);
else if(z==40){
break;}
i[z/8]|=value<<(7- (z%8));
j[z]=value;
z++;
}
}
answer=i[0]+i[1]+i[2]+i[3];
z=0;
i[0]=i[1]=i[2]=i[3]=i[4]=0;
}
}