Báo cáo đồ án: Thiết kế mạch giám sát nhiệt độ, độ ẩm dùng Arduino và DHT11

Đồ án thiết kế mạch giám sát nhiệt độ, độ ẩm bằng Arduino Uno R3 và cảm biến DHT11. Báo cáo gồm sơ đồ nguyên lý, code và kết quả mô phỏng.

Trường đại học

Học viện Kỹ Thuật Mật Mã

Chuyên ngành

Điện Tử - Vi Mạch

Người đăng

Ẩn danh

Thể loại

Đồ Án

2025

56
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu về Đồ án Mạch Giám sát Nhiệt độ Độ ẩm bằng Arduino

Trong era công nghệ số hiện nay, hệ thống giám sát nhiệt độ và độ ẩm đã trở thành một phần không thể thiếu trong nhiều ứng dụng thực tiễn từ nông nghiệp, công nghiệp đến những ứng dụng gia dụng. Đồ án mạch giám sát nhiệt độ, độ ẩm bằng Arduino là một giải pháp tối ưu kết hợp giữa vi điều khiển Arduino Uno R3 và cảm biến DHT11, giúp đo lường và hiển thị các thông số môi trường một cách chính xác. Dự án này không chỉ giúp sinh viên áp dụng kiến thức lý thuyết vào thực hành mà còn mở ra những hướng tiếp cận dễ dàng, trực quan cho ngành điện tử – vi mạch. Thông qua việc thiết kế, lắp ráp và lập trình hệ thống, người học có thể nắm vững các kiến thức cơ bản về vi điều khiển, giao tiếp dữ liệu và xử lý tín hiệu cảm biến.

1.1. Ý nghĩa của hệ thống giám sát tự động

Hệ thống giám sát tự động đóng vai trò quan trọng trong việc theo dõi các thông số môi trường theo thời gian thực. Với mạch giám sát nhiệt độ, độ ẩm Arduino, người dùng có thể thu thập dữ liệu liên tục mà không cần can thiệp thủ công. Điều này đặc biệt hữu ích trong các ứng dụng nông nghiệp thông minh, kho lạnh, phòng thí nghiệm và các hệ thống điều hòa không khí tự động, giúp tối ưu hóa điều kiện bảo quản và nâng cao hiệu suất hoạt động.

1.2. Lợi thế của Arduino trong các ứng dụng IoT

Arduino Uno R3 nổi bật với chi phí thấp, lập trình dễ dàng và cộng đồng hỗ trợ mạnh mẽ. Platform Arduino IDE cung cấp môi trường lập trình thân thiện, cho phép người dùng nhanh chóng phát triển ứng dụng giám sát nhiệt độ độ ẩm. Khả năng kết nối các cảm biến, hiển thị thông tin qua LCD và giao tiếp với máy tính làm cho Arduino trở thành lựa chọn tối ưu cho các dự án IoT và tự động hóa nhà thông minh.

II. Các thành phần chính của Hệ thống

Đồ án mạch giám sát nhiệt độ, độ ẩm bằng Arduino bao gồm ba thành phần chính: vi điều khiển Arduino Uno R3, cảm biến DHT11màn hình LCD 16x2. Vi điều khiển Arduino Uno R3 đóng vai trò là bộ xử lý trung tâm, quản lý toàn bộ hệ thống và xử lý dữ liệu từ cảm biến. Cảm biến DHT11 có khả năng đo lường nhiệt độ từ 0°C đến 50°C và độ ẩm từ 20% đến 80% với độ chính xác ±2°C và ±5%. Màn hình LCD 16x2 hiển thị các giá trị đo lường theo thời gian thực, giúp người sử dụng dễ dàng theo dõi các thông số môi trường. Sự kết hợp hài hòa của ba thành phần này tạo nên một hệ thống giám sát hoàn chỉnh, ổn định và đáng tin cậy.

2.1. Vi điều khiển Arduino Uno R3

Arduino Uno R3 là một vi điều khiển dựa trên chip ATmega328P, sở hữu 14 chân I/O kỹ thuật số, 6 chân analog và tốc độ xung nhịp 16MHz. Nó được trang bị bộ nhớ Flash 32KB, bộ nhớ SRAM 2KB và bộ nhớ EEPROM 1KB. Vi điều khiển Arduino hỗ trợ các giao tiếp quan trọng như UART, SPI và I2C, cho phép kết nối dễ dàng với các cảm biến và thiết bị ngoại vi khác, là nền tảng lý tưởng cho mạch giám sát nhiệt độ, độ ẩm.

2.2. Cảm biến DHT11 và Màn hình LCD

Cảm biến DHT11 là một cảm biến kỹ thuật số tích hợp cho phép đo nhiệt độđộ ẩm độc lập. Nó sử dụng giao tiếp một dây (single wire) với Arduino, giảm số chân kết nối cần thiết. Màn hình LCD 16x2 có khả năng hiển thị 16 ký tự trên 2 hàng, được kết nối thông qua module I2C để đơn giản hóa việc nối dây. Sự kết hợp này tạo nên một hệ thống đo lường hiệu quả và dễ sử dụng.

III. Quy trình Thiết kế và Lập trình Hệ thống

Quy trình thực hiện đồ án mạch giám sát nhiệt độ, độ ẩm bằng Arduino bao gồm nhiều giai đoạn: thiết kế sơ đồ khối hệ thống, vẽ sơ đồ mạch điện, mô phỏng trên phần mềm Proteus, thiết kế PCB, lắp ráp phần cứng và lập trình trên Arduino IDE. Đầu tiên, sơ đồ khối được xây dựng với ba khối chính: khối cảm biến (DHT11), khối xử lý (Arduino), và khối hiển thị (LCD). Tiếp theo, sơ đồ mạch điện được vẽ chi tiết với tất cả các kết nối. Phần mềm Proteus được sử dụng để mô phỏng hoạt động trước khi lắp ráp thực tế. Quá trình lập trình Arduino sử dụng Arduino IDE để viết code điều khiển việc đọc dữ liệu từ cảm biến DHT11 và hiển thị trên LCD.

3.1. Thiết kế sơ đồ khối và sơ đồ mạch

Sơ đồ khối hệ thống bao gồm khối cảm biến, khối xử lý trung tâm và khối hiển thị. Cảm biến DHT11 thu thập dữ liệu nhiệt độ, độ ẩm từ môi trường. Arduino Uno R3 xử lý tín hiệu từ cảm biến và gửi đến LCD 16x2. Thiết kế này đảm bảo dòng dữ liệu rõ ràng, từ thu thập, xử lý đến hiển thị, tạo một hệ thống giám sát hoàn chỉnh và hiệu quả.

3.2. Lập trình và mô phỏng trên Arduino IDE

Arduino IDE cung cấp môi trường lập trình C/C++ đơn giản, phù hợp cho việc phát triển ứng dụng giám sát nhiệt độ độ ẩm. Code chính bao gồm: khởi tạo thư viện DHT11 và LCD, đọc dữ liệu cảm biến trong hàm loop(), và hiển thị kết quả trên màn hình. Phần mềm Proteus cho phép mô phỏng hoạt động của toàn bộ hệ thống trước khi lắp ráp, giúp phát hiện và sửa lỗi sớm.

IV. Kết quả Thực nghiệm và Đánh giá Sản phẩm

Sau khi hoàn thành đồ án mạch giám sát nhiệt độ, độ ẩm bằng Arduino, nhóm đã tiến hành thử nghiệm hệ thống trong các điều kiện môi trường khác nhau. Kết quả cho thấy hệ thống giám sát hoạt động ổn định, với độ chính xác cao trong việc đo lường nhiệt độđộ ẩm. Màn hình LCD hiển thị dữ liệu rõ ràng, dễ quan sát. So sánh kết quả đo của mạch với các thiết bị đo chuẩn trong vòng một tuần cho thấy độ lệch rất nhỏ, chứng minh tính chính xác của mạch giám sát. Tuy nhiên, vẫn còn một số khuyến nghị để cải thiện sản phẩm như thêm tính năng ghi nhận dữ liệu, cảnh báo vượt ngưỡng và kết nối Internet để giám sát từ xa.

4.1. Kết quả và độ chính xác của hệ thống

Hệ thống giám sát nhiệt độ, độ ẩm bằng Arduino đạt được độ chính xác tương đương cảm biến DHT11 quy định, với sai số ≤2% đối với nhiệt độ và ≤5% đối với độ ẩm. Trong quá trình thử nghiệm kéo dài một tuần, mạch giám sát ghi nhận dữ liệu liên tục mà không gặp sự cố. Màn hình LCD luôn hiển thị các thông số cập nhật, cho phép theo dõi những biến động của môi trường một cách chính xác và kịp thời.

4.2. Nhận xét và hướng phát triển tương lai

Đồ án mạch giám sát nhiệt độ, độ ẩm bằng Arduino đã chứng minh tính khả thi và hiệu quả của thiết kế. Tuy nhiên, để nâng cao giá trị ứng dụng, có thể phát triển thêm các tính năng như: ghi dữ liệu vào thẻ SD, thiết lập ngưỡng cảnh báo âm thanh/ánh sáng, kết nối WiFi để giám sát từ xa qua điện thoại di động. Những cải tiến này sẽ biến hệ thống giám sát thành một giải pháp IoT hoàn chỉnh, phục vụ các ứng dụng thực tế đa dạng.

28/12/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1. Mạch Arduino Uno R3 1. Khái niệm Arduino Uno R3 là gì? Arduino Uno R3 là dòng Arduino thế hệ thứ 3 cũng giống như các phiên bản trước đây giúp người dùng dễ dàng tiếp cận với lập trình để tạo ra phần cứng có những tính năng mong muốn một cách nhanh chóng với chi phí hợp lý. 1 Arduino Uno R3 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 có thể kết nối với những gì? Một hệ thống Arduino có thể cung cấp cho bạn rất nhiều sự tương tác với môi trường xung quanh với:  Hệ thống cảm biến đa dạng về chủng loại (đo đạc nhiệt độ, độ ẩm, gia tốc, vận tốc, cường độ ánh sáng, màu sắc vật thể, lưu lượng nước, phát hiện chuyển động, phát hiện kim loại, khí độc, …)  Các thiết bị hiển thị (màn hình LCD, đèn LED, …). 1  Các module chức năng (shield) hỗ trợ kêt nối có dây với các thiết bị khác hoặc các kết nối không dây thông dụng (3G, GPRS, Wifi, Bluetooth, 315/433Mhz, 2.4Ghz,…),  Định vị GPS, nhắn tin SMS, … 1.

Thông số kỹ thuật của Arduino Uno R3 Vi điều khiển ATmega328P họ 8 bit Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB) Tần số hoạt động 16MHz Dòng tiêu thụ Khoảng 30mA Điện áp 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 10 bit) 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 booloader SRAM 2 KB (Atmega328) EEPROM 1 KB (Atmega328) Bảng 1. 1 Thông số kỹ thuật của Arduino Uno R3 1. 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, … hay những ứng dụng khác.

2 Vi điều khiển ARDUINO UNO R3 Thiết kế tiêu chuẩn của Arduino UNO sử dụng vi điều khiển Atmega328 với giá khoảng 90. Tuy nhiên nếu yêu cầu phần cứng của bạn không cao hoặc túi tiền không cho phép, bạn có thể sử dụng các loại vi điều khiển khác có chức năng tương đương nhưng rẻ hơn như Atmega8 (bộ nhớ flash 8KB) với giá khoảng 45.000đ hoặc Atmega168 (bộ nhớ flash 16KB) với giá khoảng 65. Các cổng kết nối của ARDUINO UNO R3 Arduino UNO có 14 chân digital 7lue để đọ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). 3 Các cổng kết nối của Arduino Uno R3 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): 7lue để 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 7luetooth thường thấy nói nôm na chính là 3 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 → 28-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 8lue để 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 8lue 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ể 8lue 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.5 Năng lượng và bộ nhớ 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 8lue 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. 4  GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO.

Khi bạn 8lue 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. 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 9lue nguồn từ cổng USB nếu có thể.3V và 5V trên Arduino là các chân 9lue để 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. 5  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 9lue để truyền nhận dữ liệu, bạn phải mắc một điện trở hạn dòng. Khi mình nói rằng bạn “có thể làm hỏng”, điều đó có nghĩa là chưa chắc sẽ hỏng ngay bởi các thông số kĩ thuật của linh kiện điện tử luôn có một sự tương đối nhất định. Do đó hãy cứ tuân thủ theo những thông số kĩ thuật của nhà sản xuất nếu bạn không muốn phải mua một board Arduino UNO thứ 2.Khi mình nói rằng bạn “có thể làm hỏng”, điều đó có nghĩa là chưa chắc sẽ hỏng ngay bởi các thông số kĩ thuật của linh kiện điện tử luôn có một sự tương đối nhất định. Do đó hãy cứ tuân thủ theo những thông số kĩ thuật của nhà sản xuất nếu bạn không muốn phải mua một board Arduino UNO thứ 2.

Bộ Nhớ Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người 9lue:  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 9lue 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. Thiết kế của Arduino Uno R3 1.

Thiết kế nguồn Hình 1. 4 Thiết kế nguồn Phần nguồn của Board mạch Arduino được thiết kế để thực hiện các nhiệm vụ sau:  Lựa chọn nguồn cung cấp cho board mạch (khối màu cam trong hình dưới). Board mạch Arduino có thể được cung cấp nguồn bởi Adapter thông qua Jack DC hoặc từ cổng USB (2 mũi tên màu đỏ). Trong trường hợp chỉ có 1 trong 2 nguồn cung cấp thì Board Arduino sẽ sử dụng nguồn cung cấp đó.

Trong 7 trường hợp có cả 2 nguồn cung cấp thì Arduino sẽ ưu tiên lựa chọn nguồn cung cấp từ Jack DC thay vì từ cổng USB. Việc ưu tiên này được thực hiện bởi OpAmp trong IC LMV358 và MOSFET FDN340P. Điện áp từ Jack DC sau khi qua Diode bảo vệ D1 thì được gọi là điện áp VIN. Điện áp VIN qua cầu phân áp để tạo thành VIN/2 để so sánh với điện áp 3.3V nên điện áp đầu ra của OpAmp là 5V, điều này làm cho MOSFET không được kích, nguồn cung cấp cho Board Arduino là từ Jack DC sau khi qua ổn áp.

 Tạo ra các điện áp 5v và 3.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ