Mục lục:
Video: Arduino Nano - HTS221 Hướng dẫn cảm biến nhiệt độ và độ ẩm tương đối: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
HTS221 là một cảm biến kỹ thuật số điện dung siêu nhỏ gọn cho độ ẩm và nhiệt độ tương đối. Nó bao gồm một phần tử cảm biến và một mạch tích hợp dành riêng cho ứng dụng tín hiệu hỗn hợp (ASIC) để cung cấp thông tin đo lường thông qua các giao diện nối tiếp kỹ thuật số. Được tích hợp rất nhiều tính năng, đây là một trong những cảm biến thích hợp nhất cho các phép đo nhiệt độ và độ ẩm quan trọng. Đây là phần trình diễn với arduino nano.
Bước 1: Những gì bạn cần.. !
1. Arduino Nano
2. HTS221
3. Cáp I²C
4. Tấm chắn I²C cho Arduino Nano
Bước 2: Kết nối:
Lấy một tấm chắn I2C cho Arduino Nano và nhẹ nhàng đẩy nó qua các chân của Nano.
Sau đó kết nối một đầu của cáp I2C với cảm biến HTS221 và đầu kia với tấm chắn I2C.
Các kết nối được hiển thị trong hình trên.
Bước 3: Mã:
Mã arduino cho HTS221 có thể được tải xuống từ kho lưu trữ github của chúng tôi - Cộng đồng DCUBE.
Đây là liên kết cho cùng một:
github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino
Chúng tôi bao gồm thư viện Wire.h để tạo điều kiện giao tiếp I2c của cảm biến với bảng Arduino.
Bạn cũng có thể sao chép mã từ đây, nó được đưa ra như sau:
// Được phân phối với một giấy phép tự do.
// Sử dụng nó theo bất kỳ cách nào bạn muốn, lợi nhuận hoặc miễn phí, miễn là nó phù hợp với giấy phép của các tác phẩm liên quan.
// HTS221
// Mã này được thiết kế để hoạt động với Mô-đun nhỏ HTS221_I2CS I2C
#bao gồm
// Địa chỉ I2C HTS221 là 0x5F
#define Addr 0x5F
void setup ()
{
// Khởi tạo giao tiếp I2C dưới dạng MASTER
Wire.begin ();
// Khởi tạo giao tiếp nối tiếp, đặt tốc độ truyền = 9600
Serial.begin (9600);
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Chọn thanh ghi cấu hình trung bình
Wire.write (0x10);
// Mẫu trung bình nhiệt độ = 256, mẫu trung bình độ ẩm = 512
Wire.write (0x1B);
// Dừng truyền I2C
Wire.endTransmission ();
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Chọn thanh ghi điều khiển1
Wire.write (0x20);
// BẬT nguồn, Cập nhật liên tục, Tốc độ đầu ra dữ liệu = 1 Hz
Wire.write (0x85);
// Dừng truyền I2C
Wire.endTransmission ();
chậm trễ (300);
}
void loop ()
{
dữ liệu int không dấu [2];
unsigned int val [4];
không dấu int H0, H1, H2, H3, T0, T1, T2, T3, nguyên;
// Giá trị đo độ ẩm
for (int i = 0; i <2; i ++)
{
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Gửi dữ liệu đăng ký
Wire.write ((48 + i));
// Dừng truyền I2C
Wire.endTransmission ();
// Yêu cầu 1 byte dữ liệu
Wire.requestFrom (Addr, 1);
// Đọc 1 byte dữ liệu
if (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Chuyển đổi dữ liệu Độ ẩm
H0 = dữ liệu [0] / 2;
H1 = dữ liệu [1] / 2;
for (int i = 0; i <2; i ++)
{
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Gửi dữ liệu đăng ký
Wire.write ((54 + i));
// Dừng truyền I2C
Wire.endTransmission ();
// Yêu cầu 1 byte dữ liệu
Wire.requestFrom (Addr, 1);
// Đọc 1 byte dữ liệu
if (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Chuyển đổi dữ liệu Độ ẩm
H2 = (dữ liệu [1] * 256.0) + dữ liệu [0];
for (int i = 0; i <2; i ++)
{
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Gửi dữ liệu đăng ký
Wire.write ((58 + i));
// Dừng truyền I2C
Wire.endTransmission ();
// Yêu cầu 1 byte dữ liệu
Wire.requestFrom (Addr, 1);
// Đọc 1 byte dữ liệu
if (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Chuyển đổi dữ liệu Độ ẩm
H3 = (dữ liệu [1] * 256.0) + dữ liệu [0];
// Giá trị đo nhiệt độ
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Gửi dữ liệu đăng ký
Wire.write (0x32);
// Dừng truyền I2C
Wire.endTransmission ();
// Yêu cầu 1 byte dữ liệu
Wire.requestFrom (Addr, 1);
// Đọc 1 byte dữ liệu
if (Wire.available () == 1)
{
T0 = Wire.read ();
}
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Gửi dữ liệu đăng ký
Wire.write (0x33);
// Dừng truyền I2C
Wire.endTransmission ();
// Yêu cầu 1 byte dữ liệu
Wire.requestFrom (Addr, 1);
// Đọc 1 byte dữ liệu
if (Wire.available () == 1)
{
T1 = Wire.read ();
}
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Gửi dữ liệu đăng ký
Wire.write (0x35);
// Dừng truyền I2C
Wire.endTransmission ();
// Yêu cầu 1 byte dữ liệu
Wire.requestFrom (Addr, 1);
// Đọc 1 byte dữ liệu
if (Wire.available () == 1)
{
raw = Wire.read ();
}
raw = raw & 0x0F;
// Chuyển đổi các giá trị đo nhiệt độ thành 10-bit
T0 = ((thô & 0x03) * 256) + T0;
T1 = ((nguyên & 0x0C) * 64) + T1;
for (int i = 0; i <2; i ++)
{
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Gửi dữ liệu đăng ký
Wire.write ((60 + i));
// Dừng truyền I2C
Wire.endTransmission ();
// Yêu cầu 1 byte dữ liệu
Wire.requestFrom (Addr, 1);
// Đọc 1 byte dữ liệu
if (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Chuyển đổi dữ liệu
T2 = (dữ liệu [1] * 256.0) + dữ liệu [0];
for (int i = 0; i <2; i ++)
{
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Gửi dữ liệu đăng ký
Wire.write ((62 + i));
// Dừng truyền I2C
Wire.endTransmission ();
// Yêu cầu 1 byte dữ liệu
Wire.requestFrom (Addr, 1);
// Đọc 1 byte dữ liệu
if (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Chuyển đổi dữ liệu
T3 = (dữ liệu [1] * 256.0) + dữ liệu [0];
// Bắt đầu truyền I2C
Wire.beginTransmission (Addr);
// Gửi dữ liệu đăng ký
Wire.write (0x28 | 0x80);
// Dừng truyền I2C
Wire.endTransmission ();
// Yêu cầu 4 byte dữ liệu
Wire.requestFrom (Addr, 4);
// Đọc 4 byte dữ liệu
// độ ẩm msb, độ ẩm lsb, msb nhiệt độ, nhiệt độ lsb
if (Wire.available () == 4)
{
val [0] = Wire.read ();
val [1] = Wire.read ();
val [2] = Wire.read ();
val [3] = Wire.read ();
}
// Chuyển đổi dữ liệu
độ ẩm phao = (val [1] * 256.0) + val [0];
độ ẩm = ((1.0 * H1) - (1.0 * H0)) * (1.0 * độ ẩm - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);
int temp = (val [3] * 256) + val [2];
float cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);
float fTemp = (cTemp * 1.8) + 32;
// Xuất dữ liệu ra màn hình nối tiếp
Serial.print ("Độ ẩm tương đối:");
Serial.print (độ ẩm);
Serial.println ("% RH");
Serial.print ("Nhiệt độ tính bằng độ C:");
Serial.print (cTemp); Serial.println ("C");
Serial.print ("Nhiệt độ tính bằng Fahrenheit:");
Serial.print (fTemp);
Serial.println ("F");
chậm trễ (500);
}
Bước 4: Ứng dụng:
HTS221 có thể được sử dụng trong các sản phẩm tiêu dùng khác nhau như máy làm ẩm không khí và tủ lạnh, v.v. Cảm biến này cũng được ứng dụng trong một lĩnh vực rộng lớn hơn bao gồm tự động hóa nhà thông minh, tự động hóa công nghiệp, thiết bị hô hấp, theo dõi tài sản và hàng hóa.
Đề xuất:
Lập trình hướng đối tượng: Tạo đối tượng Học / Phương pháp giảng dạy / Kỹ thuật sử dụng Shape Puncher: 5 bước
Lập trình hướng đối tượng: Tạo đối tượng Phương pháp học / dạy / kỹ thuật sử dụng Shape Puncher: Phương pháp học / dạy dành cho sinh viên mới làm quen với lập trình hướng đối tượng. Đây là một cách cho phép họ hình dung và xem quá trình tạo các đối tượng từ các lớp. Cú đấm lớn 2 inch của EkTools; hình dạng rắn là tốt nhất.2. Mảnh giấy hoặc c
Lập trình hướng đối tượng: Tạo đối tượng Học / Phương pháp giảng dạy / Kỹ thuật sử dụng kéo: 5 bước
Lập trình hướng đối tượng: Tạo đối tượng Phương pháp học / dạy / kỹ thuật dùng kéo: Phương pháp học / dạy dành cho sinh viên mới làm quen với lập trình hướng đối tượng. Đây là một cách cho phép họ hình dung và nhìn thấy quá trình tạo ra các đối tượng từ các lớp. Phần: 1. Kéo (bất kỳ loại nào cũng được). 2. Mảnh giấy hoặc bìa cứng. 3. Điểm đánh dấu.
Cách sử dụng cảm biến nhiệt độ DHT11 với Arduino và nhiệt độ in Nhiệt độ và độ ẩm: 5 bước
Cách sử dụng cảm biến nhiệt độ DHT11 với Arduino và nhiệt độ in Nhiệt độ và độ ẩm: Cảm biến DHT11 được sử dụng để đo nhiệt độ và độ ẩm. Họ là những người rất ưa thích đồ điện tử. Cảm biến nhiệt độ và độ ẩm DHT11 giúp bạn thực sự dễ dàng thêm dữ liệu độ ẩm và nhiệt độ vào các dự án điện tử tự làm của mình. Đó là mỗi
Nhiệt kế có màu tương đối nhiệt độ trên màn hình TFT 2 "và nhiều cảm biến: 5 bước
Nhiệt kế Có Màu Tương đối Nhiệt độ trên Màn hình TFT 2 "và Nhiều Cảm biến: Tôi đã tạo một màn hình hiển thị các phép đo của một số cảm biến nhiệt độ. Điều thú vị là màu sắc của các giá trị thay đổi theo nhiệt độ: > 75 độ Celcius = RED > 60 > 75 = ORANGE > 40 < 60 = VÀNG > 30 < 40
Mạch GPIO Raspberry Pi: Sử dụng cảm biến tương tự LDR mà không cần ADC (Bộ chuyển đổi tương tự sang kỹ thuật số): 4 bước
Mạch GPIO của Raspberry Pi: Sử dụng cảm biến tương tự LDR mà không cần ADC (Bộ chuyển đổi tương tự sang kỹ thuật số): Trong phần Hướng dẫn trước đây của chúng tôi, chúng tôi đã chỉ cho bạn cách bạn có thể liên kết các chân GPIO của Raspberry Pi với đèn LED và công tắc và cách chân GPIO có thể cao hoặc Thấp. Nhưng điều gì sẽ xảy ra nếu bạn muốn sử dụng Raspberry Pi của mình với cảm biến tương tự? Nếu chúng tôi muốn sử dụng