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 16×2 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
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
}