- Thiết kế và chế tạo mạch sử dụng cảm biến DHT11 bao gồm việc kết nối cảm biến với vi điều khiển nhúng, sau đó lập trình vi điều khiển để đọc dữ liệu từ cảm biến và xử lý nó..
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TPHCM
KHOA CÔNG NGHỆ ĐIỆN TỬ
Hệ Thống Nhúng
Nhóm 3
Đề tài: Hệ thống đo nhiệt độ và độ ẩm bằng DHT11
theo phương thức I2C với STM32
Giảng viên hướng dẫn : ThS Trương Năng Toàn Sinh viên MSSV
Nguyễn Trung Hiếu 21102241
Hồ Trịnh Phúc Nam
Đặng Hồ Đức Huy 21094561
Lê Tự Hiếu
Nguyễn Sơn Anh
TP Hồ Chí Minh, 4/4/2024
Trang 3LỜI MỞ ĐẦU 1.Mục đích chọn đề tài
Môi trường không khí xung quanh chúng ta thực sự là yếu tố không thể phủ nhận về sức khỏe và chất lượng cuộc sống Trong thời đại hiện đại, với cuộc sống được nâng cao và
Trang 4những tiêu chuẩn mới về sự thoải mái và an toàn, việc tạo ra một môi trường nhân tạo lý tưởng trở nên vô cùng cấp thiết
Nhiệt độ và độ ẩm, như hai yếu tố quan trọng nhất trong môi trường không khí, có ảnh hưởng sâu sắc đến sức khỏe, tinh thần và hiệu suất làm việc của con người Nhiệt độ quá cao hoặc quá thấp không chỉ gây ra cảm giác không thoải mái mà còn có thể gây ra các vấn đề sức khỏe như trầm cảm, căng thẳng hoặc đau nhức cơ bắp Độ ẩm không phù hợp cũng có thể dẫn đến một loạt các vấn đề từ việc khó chịu da dẻ đến việc tăng nguy cơ nhiễm trùng đường hô hấp
Do đó, việc kiểm soát và duy trì một môi trường nhân tạo có nhiệt độ và độ ẩm lý tưởng
là rất quan trọng Trong các khu vực công cộng như văn phòng, trường học, bệnh viện hay các công trình công cộng, hệ thống điều hòa không khí không chỉ giúp tạo ra một môi trường thoải mái mà còn giúp tăng hiệu suất làm việc và giảm thiểu nguy cơ lây nhiễm
Ngoài ra, trong các ngành công nghiệp như nông nghiệp, chế biến thực phẩm hay sản xuất hàng hóa, việc kiểm soát nhiệt độ và độ ẩm không chỉ là vấn đề của sự thoải mái mà còn ảnh hưởng trực tiếp đến chất lượng và an toàn của sản phẩm cuối cùng
Vì vậy, nhóm em đã lựa chọn đề tài đo nhiệt độ và độ ẩm để để đảm bảo sức khỏe và thoải mái cá nhân mà còn là yếu tố quyết định đối với chất lượng cuộc sống và hiệu suất làm việc của cộng đồng
Đề tài, giúp nhóm em học được cách đo nhiệt độ - độ ẩm từ cảm biến và xuất ra màn hình LCD
2.Mục tiêu của đề tài
Trên thị trường hiện nay, có một loạt các loại cảm biến nhiệt độ với đặc tính và ứng dụng
đa dạng như LM335, LM35, DHT11, Pt100, và nhiều loại khác Trong dự án này, việc lựa chọn cảm biến DHT11 là vì tính linh hoạt và hiệu suất của nó, đặc biệt là khả năng đo
cả nhiệt độ và độ ẩm
Cảm biến độ ẩm và nhiệt độ DHT11 là một trong những lựa chọn phổ biến nhất trên thị trường hiện nay Điều này bởi vì nó không chỉ có chi phí rẻ mà còn dễ dàng lấy dữ liệu thông qua giao tiếp 1-wire (giao tiếp kỹ thuật số chỉ cần một dây truyền dữ liệu duy nhất) Một điểm đáng chú ý là cảm biến này tích hợp bộ điều chỉnh nhiệt độ và độ ẩm, cho phép người dùng truy cập dữ liệu chính xác mà không cần phải tính toán phức tạp
Sự ổn định và độ tin cậy của cảm biến được đảm bảo thông qua tín hiệu kỹ thuật số cao cấp và bộ tiền xử lý tích hợp trong cảm biến Điều này giúp cảm biến DHT11 mang lại chất lượng tốt, phản ứng nhanh, khả năng chống nhiễu và hiệu quả về chi phí Vì vậy mà nhóm chúng em đã lựa chọn cảm biến HDT11 để thực hiện đề tài này
Trang 5Mục tiêu hướng tới :
- Cơ sở lý thuyết của cảm biến DHT11 là nguyên lý hoạt động của cảm biến đo độ ẩm và nhiệt độ
- Thiết kế và chế tạo mạch sử dụng cảm biến DHT11 bao gồm việc kết nối cảm biến với
vi điều khiển nhúng, sau đó lập trình vi điều khiển để đọc dữ liệu từ cảm biến và xử lý nó
- Sử dụng các phần mềm hỗ trợ lập trình
- Kết hợp giữa nghiên cứu lý thuyết và thực nghiệm cho phép người dùng hiểu rõ hơn về nguyên lý hoạt động của cảm biến DHT11 và cách thức tích hợp nó vào các ứng dụng thực tế
3.Nội dung nghiên cứu
3.1 Nội dung chính của tiểu luận:
- Đọ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
3.2 Nghiên cứu tổng quan về mạch cảm biến DHT11:
- DHT11 là một cảm biến kỹ thuật số giá rẻ để cảm nhận nhiệt độ và độ ẩm Cảm biến này có thể dễ dàng giao tiếp với bất kỳ bộ vi điều khiển vi nào như Arduino, Raspberry
Pi, để đo độ ẩm và nhiệt độ ngay lập tức
- DHT11 là một cảm biến độ ẩm tương đối Để đo không khí xung quanh, cảm biến này
sử dụng một điện trở nhiệt và một cảm biến độ ẩm điện dung
3.3 Thông số kĩ thuật :
- Điện áp hoạt động: 3.5V đến 5.5V
- Dòng hoạt động: 0,3mA (đo) 60uA (chế độ chờ)
- Đầu ra: Dữ liệu nối tiếp
- Phạm vi nhiệt độ: 0 ° C đến 50 ° C
- Phạm vi độ ẩm: 20% đến 90%
- Độ phân giải: Nhiệt độ và Độ ẩm đều là 16-bit
- Độ chính xác: ± 1 ° C và ± 1%
3.4 Phần cúng cần thiết:
- Màn hình LCD 16x2.
- Mạch điều khiển màn hình LCD sử dụng giao tiếp I2C.
Trang 6- Cảm biến nhiệt độ độ ẩm.
- Ardunio UNOR3.
3.5 Các bước thực hiện:
Chương 1: Tổng quan về cảm biến đo nhiệt độ và độ
ẩm DHT11 1.1 Giới thiệu về cảm biến DHT11
việc
Thời gian Kết quả cần
đạt
1 Lựa chọn đề
tài
2 Đưa ra kế
hoạch cụ thể các bước thực thi.Tiến hành phân công nhiệm vụ cho các thành viên
3
4
5
Trang 7DHT11 là cảm biến nhiệt độ, độ ẩm 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 giao tiếp 1-wire ( sử dụng 1 dây data để truyền dữ liệu) Cảm biến được tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu nhận về được chính xác mà không cần phải qua bất kỳ tính toán nào Cảm biến nhiệt độ và độ ẩm DHT11 bao gồm 3 thành phần chính Một cảmbiến độ ẩm loại điện trở, một điện trở nhiệt NTC (Negative Temperature Coefficient –hệ số nhiệt âm) để đo nhiệt độ và một vi điều khiển 8 bit có nhiệm vụ chuyển đổi tínhiệu tương tự từ cảm biến và gửi ra tín hiệu số duy nhất Tín hiệu số này có thể được đọc bởi bất kỳ vi điều khiển hoặc bộ vi xử lý nào để phân tích
1.2 Cấu tạo của cảm biến DHT11:
Định dạng sơ đồ chân DHT11 và cấu hình:
No Tên
ghim Mô tả
1 Vcc Nguồn điện 3.5V đến 5.5V
2 Dữ liệu Đầu ra cả Nhiệt độ và Độ ẩm thông qua Dữ liệu nối tiếp
3 NC Không có kết nối và do đó không được sử dụng
4 Ground Kết nối với mặt đất của mạch
Đối với mô-đun cảm biến DHT11
1 Vcc Nguồn điện 3.5V đến 5.5V
2 Data Đầu ra cả Nhiệt độ và Độ ẩm thông qua Dữ liệu nối tiếp
3 Ground Kết nối với mặt đất của mạch
Trang 8Hình 1.2.1 DHT11
1.3 Thông số kỹ thuật DHT11:
- Điện áp hoạt động: 3.5V đến 5.5V
- Dòng hoạt động: 0,3mA (đo) 60uA (chế độ chờ)
- Đầu ra: Dữ liệu nối tiếp
- Phạm vi nhiệt độ: 0 ° C đến 50 ° C
- Phạm vi độ ẩm: 20% đến 90%
- Độ phân giải: Nhiệt độ và Độ ẩm đều là 16-bit
- Độ chính xác: ± 1 ° C và ± 1%
1.4 Nguyên lí hoạt động:
Tổng quan :
- Cảm biến DHT11 được hiệu chuẩn tại nhà máy và xuất dữ liệu nối tiếp, do đó rất dễ thiết lập Sơ đồ kết nối cho cảm biến này được hiển thị bên dưới
Trang 9Hình 1.4.1 sơ đồ kết nối với vi xử lý
- Chân dữ liệu được kết nối với chân I / O của MCU và một điện trở kéo lên 5K được sử dụng Chân dữ liệu này xuất ra giá trị của cả nhiệt độ và độ ẩm dưới dạng dữ liệu nối tiếp Nếu bạn đang cố gắng giao tiếp DHT11 với Arduino thì có các thư viện được tạo sẵn cho
nó sẽ giúp bạn bắt đầu nhanh chóng
- Nếu bạn đang cố gắng giao diện nó với một số MCU khác thì biểu dữ liệu được cung cấp bên dưới sẽ rất hữu ích Đầu ra được đưa ra bởi chân dữ liệu sẽ theo thứ tự là dữ liệu
số nguyên độ ẩm 8 bit + 8 bit dữ liệu thập phân Độ ẩm + dữ liệu số nguyên nhiệt độ 8 bit + dữ liệu nhiệt độ phân đoạn 8 bit + bit chẵn lẻ 8 bit
- Để yêu cầu mô-đun DHT11 gửi những dữ liệu này, chân I / O phải được đặt ở mức thấp trong giây lát và sau đó được giữ ở mức cao như thể hiện trong biểu đồ thời gian bên dưới
Hình 1.4.2 Các bước dữ liệu HDT11
Nguyên lí :
Trang 10- DHT11 chỉ sử dụng 1 dây để giao tiếp Quá trình giao tiếp được chia làm 3 bước: đầu tiên là gửi yêu cầu đến cảm biến, kế đến cảm biến sẽ gửi xung phản hồi và sau đó nó bắt đầu gửi dữ liệu tổng cộng 40bit đến vi điều khiển
Bắt đầu xung:
Hình 1.4.3 Xung bắt đầu DHT11
- Để bắt đầu giao tiếp với DHT11, đầu tiên ta gửi xung bắt đầu đến cảm biến Để cung cấp xung bắt đầu, kéo chân dữ liệu xuống mức thấp trong thời gian tối thiểu 18ms và sau
đó kéo lên mức cao
Phản ứng :
Hình 1.4.4 Gửi xung phản hồi DHT11
Trang 11- Sau khi nhận được xung bắt đầu, cảm biến sẽ gửi xung phản hồi, để cho biết DHT11 đã nhận được xung bắt đầu Xung phản hồi ở mức thấp trong khoảng thời gian 54us, sau đó
ở mức cao 80us
Dữ liệu:
Hình 1.4.5 Gửi dữ liệu chứa bit 0, bit 1
- Sau khi gửi xung phản hội, DHT11 sẽ gửi dữ liệu chứa giá trị nhiệt độ và độ ẩm Khung
dữ liệu dài 40bit, được chia làm 5 phần (byte), mỗi phần 8bit Trong 5 phần này, hai phần đầu tiên sẽ chứa giá trị độ ẩm, 8bit đầu tiên là giá trị phần nguyên, 8bit còn lại chứa giá trị thập phân Hai phần tiếp theo sẽ chứa giá trị nhiệt độ (°C) ở dạng số thập phân Phần cuối cùng là 8bit để kiểm tra cho phần đo nhiệt độ và độ ẩm
Sau khi nhận dữ liệu, chân DHT11 sẽ ở chế độ tiêu thụ điện năng thấp cho đến khi có xung bắt đầu tiếp theo
Kết thúc:
Hình 1.4.6 Kết thúc đọc giá trị
- Sau khi gửi dữ liệu 40bit , DHT11 sẽ ở mức thấp 54us lên mức cao và sau đó nó sẽ chuyển sang chế độ ngủ
Trang 121.5 Ứng dụng của cảm biến DHT11:
- Cảm biến DHT11 có nhiều ứng dụng trong nhiều lĩnh vực khác nhau do khả năng đo độ
ẩm và nhiệt độ của nó Dưới đây là một số ứng dụng phổ biến của cảm biến DHT11:
- Cảm biến DHT11 được sử dụng để giám sát độ ẩm và nhiệt độ trong nhà, giúp người dùng điều chỉnh hệ thống điều hòa không khí hoặc hệ thống làm ẩm để tạo ra một môi trường thoải mái
- Trong các hệ thống nhà thông minh, cảm biến DHT11 được sử dụng để giám sát điều kiện môi trường trong các phòng, giúp điều khiển các thiết bị như quạt, máy sưởi, hoặc
hệ thống điều hòa tự động
- Trong nông nghiệp, cảm biến DHT11 có thể được sử dụng để giám sát điều kiện môi trường trong nhà kính hoặc trang trại, giúp người nông dân điều chỉnh hệ thống tưới nước hoặc hệ thống sưởi để tối ưu hóa điều kiện cho cây trồng hoặc vật nuôi
- Cảm biến DHT11 có thể được sử dụng trong các ứng dụng điều khiển tự động trong nhà như hệ thống tưới cây tự động, hệ thống làm ẩm tự động, hoặc hệ thống quạt thông gió tự động
- Cảm biến DHT11 thích hợp cho các dự án IoT vì nó có kích thước nhỏ gọn, tiêu thụ điện năng thấp, và có khả năng giao tiếp với các vi điều khiển thông qua giao tiếp số đơn giản như 1-wire hoặc I2C
- Trong giáo dục và nghiên cứu, cảm biến DHT11 được sử dụng để dạy học và thực hành
về đo lường và giám sát môi trường, cũng như để thực hiện các dự án và nghiên cứu trong lĩnh vực tự động hóa và IoT
Trang 13Hình 1.5.1 Mô hình 2D của cảm biến DHT11
Uno R3
2.1 Giới thiệu chung về Arduino Uno R3:
- Arduino Uno R3 là một bảng mạch vi điều khiển nguồn mở dựa trên vi điều khiển
Microchip ATmega328 được phát triển bởi Arduino.cc Bảng mạch được trang bị các bộ chân đầu vào/ đầu ra Digital và Analog có thể giao tiếp với các bảng mạch mở rộng khác nhau Mạch Arduino Uno thích hợp cho những bạn mới tiếp cận và đam mê về điện tử, lập trình…Dựa trên nền tảng mở do Arduino.cc cung cấp các bạn dễ dàng xây dựng cho mình một dự án nhanh nhất ( lập trình Robot, xe tự hành, điều khiển bật tắt led…)
- Arduino Uno R3 được sử dụng vi điều khiển ATmega328, tương thích với hầu hết các loại Arduino Shield trên thị trường, có thể gắn thêm các module mở rộng để thực hiện thêm các chức năng như điều khiển motor, kết nối wifi hay các chức năng khác
Trang 14- Sử dụng ngôn ngữ lập trình C,C++ hoặc Arudino, một ngôn ngữ bắt nguồn từ C,C++ trên phần mềm riêng cho lập trình Arduino IDE
Hình 2.1.1 Arduino Uno R3
Các chân nguồn:
- Arduino Uno R3 được cấp nguồn 5V qua cáp usb hoặc cấp nguồn ngoài thông qua Adaptor chuyển đổi , với điện áp khuyên dùng là khoảng 6-9V Có thể cấp nguồn từ máy tính qua cổng usb về
Các chân 5V, 3.3V: là chân dùng để cấp nguồn đầu ra cho các thiết bị chứ không
phải chân cấp nguồn vào
Vin(Voltage Input): Dùng để cấp nguồn ngoài cho Arduino Uno, nối dương cực
vào chân nà và cực âm vào chân GND
GND(Ground): Cực âm của nguồn điện cấp cho Arduino Uno Khi sử dụng các
thiết bị sử dụng những nguồn điện riêng biệt thì phải nối các chân này
IOREF: Điện áp hoạt động của Arduino, có mức điện áp là 5V Không được sử
dụng để lấy nguồn từ chân này
RESET: Việc nhấn nút RESET trên mạch arduino tương tự như khi nối chân
RESET với GND qua điện trở 10KΩ
Các chân vào/ra của Arduino Uno R3:
Trang 15- Arduino Uno R3 có 14 chân digital dùng để đọc ghi dữ liệu Chúng chỉ hoạt động ở 2 mức điện áp 0V và 5V với các dòng vào/ra tối đa trên mỗi chân là 40 mA
Một số chân digital có chức năng đặc biệt như:
- 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 các thiết bị khác thông qua 2 chân này, như gắn thêm màn hình LCD để hiển thị
- Chân PWM: 3, 5,6,9, 10 và 11: Cho phép bạn xuất xung PWM với độ phân giải 8
bit( giá trị từ 0 -> 28-1 tương ứng với 0 - 5V
- Chân giao tiếp SPI: 10(SS), 11(MOSI), 12(MISO), 13(SCK) Ngoài chức năng thông
thường, 4 chân này có thể truyền phát dữ liệu bằng giao thức SPI tới các thiết bị khác
- LED 13: Trên arduino có 1 đèn led, khi bấm nút reset thì đèn led này sẽ nhấp nháy để
báo hiệu Nó được nối với chân số 13 Khi chân này được sử dụng, đèn led sẽ sáng
- Arduino Uno R3 có 6 chân analog(A0 -> A5) cung cấp độ phân giải 10 bit(0 → 210-1)
để đọc giá trị điện áp trong khoảng 0 -> 5V
- Arduino Uno còn 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
Thông số kỹ thuật của Arduino Uno R3
- Thông số kỹ thuật của Arduino Uno R3 là tiêu chuẩn, các biến thể gần như có thông số tương đương
- Arduino Uno được xây dựng với phần nhân là vi điều khiển ATmega328P, sử dụng thạch anh có chu kì dao động là 16 MHz
- Với vi điều khiển này, tổng cộng có 14 pin (ngõ) ra / vào được đánh số từ 0 tới 13 (trong đó có 6 pin PWM, được đánh dấu ~ trước mã số của pin) Song song đó, có thêm 6 pin nhận tín hiệu analog được đánh kí hiệu từ A0 - A5, 6 pin này cũng có thể sử dụng được như các pin ra / vào bình thường (như pin 0 - 13) Ở các pin được đề cập, pin 13 là pin đặc biệt vì nối trực tiếp với LED trạng thái trên board
- Trên board còn có 1 nút reset, 1 ngõ kết nối với máy tính qua cổng USB và 1 ngõ cấp nguồn sử dụng jack 2.1mm lấy năng lượng trực tiếp từ AC-DC adapter hay thông qua ắc-quy nguồn
- Khi làm việc với Arduino board, một số thuật ngữ sau cần lưu ý:
Flash Memory: bộ nhớ có thể ghi được, dữ liệu không bị mất ngay cả khi tắt điện
Về vai trò, có thể hình dung bộ nhớ này như ổ cứng để chứa dữ liệu trên board Chương trình được viết cho Arduino sẽ được lưu ở đây Kích thước của vùng nhớ
Trang 16này dựa vào vi điều khiển được sử dụng, ví dụ như ATmega8 có 8KB flash memory Loại bộ nhớ này có thể chịu được khoảng 10.000 lần ghi / xoá
RAM: tương tự như RAM của máy tính, mất dữ liệu khi ngắt điện, bù lại tốc độ đọc ghi xoá rất nhanh Kích thước nhỏ hơn Flash Memory nhiều lần
EEPROM: một dạng bộ nhớ tương tự như Flash Memory nhưng có chu kì ghi / xoá cao hơn - khoảng 100.000 lần và có kích thước rất nhỏ Để đọc / ghi dữ liệu có thể dùng thư viện EEPROM của Arduino
- Ngoài ra, Arduino board còn cung cấp cho các pin khác nhau như pin cấp nguồn 3.3V, pin cấp nguồn 5V, pin GND,
Thông số kỹ thuật của Arduino board được tóm tắt trong bảng sau:
Vi điều khiển ATmega328P
Điện áp hoạt động 5V
Điện áp vào khuyên dùng 7-12V
Điện áp vào giới hạn 6-20V
Digital I/O pin 14 (trong đó 6 pin có khả năng băm
xung) PWM Digital I/O Pins 6
Analog Input Pins 6
Cường độ dòng điện trên mỗi I/O pin 20 mA
Cường độ dòng điện trên mỗi 3.3V pin 50 mA
Flash Memory 32KB (ATmega328P)
0.5 KB được sử dụng bởi bootloader