Giao tiếp cảm biến nhiệt độ và độ ẩm SHT31 với Arduino

Cảm biến nhiệt độ và độ ẩm SHT31 là một trong những cảm biến chất lượng cao, được thiết kế để đo độ chính xác cao về nhiệt độ và độ ẩm trong môi trường. Trong bài viết này, chúng ta sẽ hướng dẫn cách sử dụng cảm biến này với Arduino để đo và hiển thị dữ liệu nhiệt độ và độ ẩm.

Thông Số Kỹ Thuật

  • Điện áp: 2.15 ~ 5.5VDC.
  • Dải đo độ ẩm: 0 - 100% RH.
  • Sai số độ ẩm: ± 2% RH.
  • Dải đo nhiệt độ: -40 ~ 125℃.
  • Sai số nhiệt độ: ± 0.2℃ (tại 0 ~ 90℃)
  • Tín hiệu ngõ ra: I2C
  • Kích thước: 11 x 13mm

Mô đun này được trang bị cảm biến nhiệt độ & độ ẩm kỹ thuật số, chính xác cao, dễ sử dụng và giá thành thấp từ Sensirion – SHT31.

Nhờ kích thước nhỏ gọn, độ chính xác cao và giá thành phải chăng, cảm biến SHT31 là một lựa chọn tuyệt vời cho nhiều ứng dụng khác nhau. Nó giúp chúng ta theo dõi và kiểm soát nhiệt độ, độ ẩm một cách dễ dàng và hiệu quả, góp phần tạo ra môi trường sống và làm việc thoải mái, an toàn và lành mạnh.

Cảnh báo: Cảm biến SHT31 có một cửa sổ nhỏ tiếp xúc với màng cảm biến polyme dùng để đo nhiệt độ và độ ẩm. Tránh để chất lỏng, bụi hoặc các chất bẩn khác tiếp xúc với cửa sổ này vì có thể ảnh hưởng đến độ chính xác của cảm biến.

Giao tiếp I2C

Cảm biến SHT31 giao tiếp với các vi điều khiển thông qua giao thức I2C, chỉ cần hai dây dữ liệu và dây clock có sẵn trên hầu hết các vi điều khiển. Điều này cho phép SHT31 chia sẻ các chân với các cảm biến I2C khác, miễn là chúng không có cùng địa chỉ, tránh xảy ra xung đột địa chỉ.

Nó hỗ trợ hai địa chỉ I2C riêng biệt là 0x44Hex và 0x45Hex. Điều này cho phép sử dụng hai mô-đun SHT31 trên cùng một bus hoặc tránh xung đột địa chỉ với một thiết bị khác trên bus.

Chân AD xác định địa chỉ I2C của mô-đun. Chân này có sẵn một điện trở kéo xuống. Do đó, khi bạn không kết nối chân AD, địa chỉ I2C mặc định là 0x44Hex và khi bạn kết nối nó với tín hiệu điện áp cao, địa chỉ I2C sẽ trở thành 0x45Hex.

Chế độ cảnh báo (Alert Mode)

SHT31 có chân đầu ra cảnh báo (AL) có thể kích hoạt khi điều kiện môi trường (độ ẩm và/hoặc nhiệt độ) vượt quá giới hạn do người dùng xác định. Điều này cho phép điều khiển gián đoạn các phép đo thay vì sử dụng phương pháp thăm dò, cho phép bộ vi điều khiển chủ thực hiện các tác vụ khác trong khi cảm biến thu thập dữ liệu.

Khi độ ẩm và/hoặc nhiệt độ vượt qua giới hạn trên, chân cảnh báo (Alert) sẽ chuyển sang trạng thái CAO và giữ nguyên ở trạng thái CAO cho đến khi nhiệt độ giảm dưới giới hạn xác định. Tương tự, khi độ ẩm và/hoặc nhiệt độ vượt quá giới hạn dưới, chân cảnh báo sẽ chuyển sang trạng thái CAO và giữ nguyên ở trạng thái CAO cho đến khi nhiệt độ tăng lên trên giới hạn xác định.

Hình ảnh bên dưới hiển thị các giới hạn khác nhau cho Chế độ cảnh báo.

Các giới hạn khác nhau cho Chế độ cảnh báo

Bạn có thể đọc thêm về điều này trong một chú thích ứng dụng riêng biệt.

Sơ đồ chân SHT31

SHT31 Pinout

VCC VCC là chân cung cấp nguồn. Vì cảm biến sử dụng điện áp từ 2.4 đến 5.5VDC, hãy cung cấp nó với nguồn điện giống như mức logic của vi điều khiển của bạn - ví dụ, đối với một vi điều khiển 5V như Arduino, hãy sử dụng nguồn 5V.

GND là GND chung cho nguồn và mức logic.

SCL là chân Clock I2C, kết nối với đường clock I2C của vi điều khiển.

SDA là chân dữ liệu I2C, kết nối với đường dữ liệu I2C của vi điều khiển

AD Chân AD quyết định địa chỉ I2C của mô-đun. Khi bạn để chân AD không kết nối, địa chỉ I2C mặc định là 0x44Hex, và khi bạn kết nối nó với một tín hiệu điện áp cao, địa chỉ I2C trở thành 0x45Hex.

AL Chân AL (Alert pin) kích hoạt khi điều kiện môi trường (độ ẩm và/hoặc nhiệt độ) vượt quá giới hạn được định nghĩa bởi người sử dụng.

Kết nối SHT31 với Arduino

  • VCC: Kết nối với nguồn cung cấp 3.3V hoặc 5V trên Arduino.
  • GND: Kết nối với chân GND trên Arduino.
  • SDA: Kết nối với chân A4 trên Arduino (chân dữ liệu I2C).
  • SCL: Kết nối với chân A5 trên Arduino (chân đồng hồ I2C).
Sơ đồ kết nối SHT31, LCD 16x2 I2C với Arduino

Cài đặt thư viện

Để khởi chạy cảm biến của bạn, bạn sẽ cần cài đặt thư viện Adafruit SHT31. Thư viện này có sẵn từ trình quản lý thư viện Arduino.

Để cài đặt thư viện, hãy di chuyển đến Sketch > Include Library > Manage Libraries... Chờ Thư viện quản lý tải xuống chỉ mục thư viện và cập nhật danh sách thư viện đã cài đặt.

Lọc kết quả tìm kiếm bằng cách nhập 'SHT31' và sau đó cài đặt thư viện.

Thư viện Adafruit_SHT31 sử dụng thư viện trợ giúp Adafruit Bus IO để ẩn đi giao dịch và thanh ghi I2C & SPI bên trong. Do đó, hãy tìm kiếm trình quản lý thư viện cho Adafruit Bus và cài đặt nó

Arduino Code

Dây là một đoạn mã mẫu sử dụng thư viện Wire để đọc dữ liệu từ cảm biến SHT31 và hiển thị trên một màn hình LCD:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_SHT31.h>

Adafruit_SHT31 sht31 = Adafruit_SHT31();

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Địa chỉ I2C của màn hình LCD

void setup() {
  Serial.begin(9600);
  if (!sht31.begin(0x44)) {  // Địa chỉ I2C của cảm biến (0x44 hoặc 0x45)
    Serial.println("Không tìm thấy SHT31");
    while (1) delay(1);
  }
  lcd.init();
  lcd.backlight();
  lcd.begin(16, 2);
}

void loop() {
  float temp = sht31.readTemperature();
  float hum = sht31.readHumidity();

  lcd.setCursor(2, 0);
  lcd.print("T: ");
  lcd.print(temp);
  lcd.print(" C");
  Serial.print("Temp: ");
  Serial.print(temp);
  Serial.println(" C");

  lcd.setCursor(2, 1);
  lcd.print("H: ");
  lcd.print(hum);
  lcd.print(" %");
  Serial.print("Humidity: ");
  Serial.print(hum);
  Serial.println(" %");

  delay(1000);  // Đợi 1 giây trước khi đọc dữ liệu mới
}

Video>

Nhận xét

Mới hơn Cũ hơn