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 (389.3 KB, 17 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<i><b>Giảng viên hướng dẫn : ThS. Trương Năng Toàn Sinh viên MSSV</b></i>
Mơi trường khơng khí xung quanh chúng ta thực sự là ́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à
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">nhữ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 số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.
Ngồ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 số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.
<b>2.Mục tiêu của đề tài</b>
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 tố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.
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>Mục tiêu hướng tới :</b>
- 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ế..
<b>3.Nội dung nghiên cứu</b>
<b>3.1 Nội dung chính của tiểu luận:</b>
- Đọ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.
<b>3.2 Nghiên cứu tổng quan về mạch cảm biến DHT11:</b>
- 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.
<b>3.3 Thông số kĩ thuật :</b>
- Đ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.
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b>1.1 Giới thiệu về cảm biến DHT11</b>
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">DHT11 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 tố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
<b>1.2 Cấu tạo của cảm biến DHT11:</b>
Định dạng sơ đồ chân DHT11 và cấu hình:
No <sup>Tên</sup>
ghim <sup>Mơ tả</sup>
1 Vcc Ng̀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
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Hình 1.2.1 DHT11
<b>1.3 Thơng số kỹ thuật DHT11:</b>
- Đ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
- 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.
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Hì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
<b>Ngun lí :</b>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="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>Bắt đầu xung:</b>
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.
<b>Phản ứng :</b>
Hình 1.4.4 Gửi xung phản hồi DHT11
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="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.
<b>Dữ liệu:</b>
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.
<b>Kết thúc:</b>
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ủ.
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><b>1.5 Ứng dụng của cảm biến DHT11:</b>
- 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 ni.
- 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.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Hình 1.5.1 Mơ hình 2D của cảm biến DHT11
<b>2.1 Giới thiệu chung về Arduino Uno R3:</b>
<b>- 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</b>
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.
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="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
<b>Các chân nguồn:</b>
- Arduino Uno R3 được cấp ng̀n 5V qua cáp usb hoặc cấp ng̀n ngồ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 ng̀n từ máy tính qua cổng usb về.
<b>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</b>
phải chân cấp nguồn vào.
<b>Vin(Voltage Input): Dùng để cấp ng̀n ngồi cho Arduino Uno, nối dương cực</b>
vào chân nà và cực âm vào chân GND.
<b>GND(Ground): Cực âm của nguồn điện cấp cho Arduino Uno. Khi sử dụng các</b>
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.
<b>IOREF: Điện áp hoạt động của Arduino, có mức điện áp là 5V. Khơng được sử</b>
dụng để lấy nguồn từ chân này.
<b>RESET: Việc nhấn nút RESET trên mạch arduino tương tự như khi nối chân</b>
RESET với GND qua điện trở 10KΩ.
<b>Các chân vào/ra của Arduino Uno R3:</b>
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="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.
<b>Một số chân digital có chức năng đặc biệt như:</b>
<b>- 2 chân Serial: 0(RX) và 1(TX): dùng để gửi (transmit - TX) và nhận (Receive - RX) dữ</b>
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ị.
<i><b>- 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</b></i>
bit( giá trị từ 0 -> 2<small>8</small>-1 tương ứng với 0 - 5V.
<b>- Chân giao tiếp SPI: 10(SS), 11(MOSI), 12(MISO), 13(SCK). Ngoài chức năng thơng</b>
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.
<b>- 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>
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 → 2<small>10</small>-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.
<b>Thông số kỹ thuật của Arduino Uno R3</b>
- 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ớ
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">nà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 / xố.
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 xố 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 / xố 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, ...
<b>Thông số kỹ thuật của Arduino board được tóm tắt trong bảng sau:</b>
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 <sup>14 (trong đó 6 pin có khả năng băm </sup> 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 <sup>32KB (ATmega328P)</sup>
0.5 KB được sử dụng bởi bootloader
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">Vi điều khiển ATmega328P
Vi điều khiển ATmega328:
<b>- 32 KB bộ nhớ Plash: trong đó bootloader chiếm 0.5KB.</b>
<b>- 2 KB cho SRAM: (Static Random Access Menory): giá trị các biến khai báo sẽ được </b>
lưu ở đây. Khai báo càng nhiều biến thì càng tốn nhiều bộ nhớ RAM. Khi mất nguồn dữ liệu trên SRAM sẽ bị mất.
<b>- 1 KB cho EEPROM: (Electrically Eraseble Programmable Read Only Memory): Là </b>
nơi có thể đọc và ghi dữ liệu vào đây và không bị mất dữ liệu khi mất nguồn.
<b>2.2 Kết nối cảm biến với arduinoChuẩn bị thiết bị</b>
<b>- Để có thể kết nối cảm biến với arduino và tiến hành đo đạc chúng ta cần chuẩn bị các </b>
thiết bị sau:
</div>