Cảm Biến AM2315C
Đo Nhiệt Độ & Độ Ẩm Qua I2C Với Arduino
truongcongly.com
Cảm biến AM2315C là một cảm biến nhiệt độ và độ ẩm kỹ thuật số với giao tiếp I2C hoặc UART, phổ biến trong các ứng dụng đo môi trường. Dưới đây là hướng dẫn chi tiết cách sử dụng AM2315C với Arduino sử dụng giao tiếp I2C (phổ biến nhất).
1. Phần cứng cần thiết
Linh kiện | Số lượng |
---|---|
Arduino Uno/Nano | 1 |
Cảm biến AM2315C | 1 |
Dây nối jumper | Vài dây |
Điện trở pull-up 10kΩ (nếu cần) | 2 |
2. Cài thư viện AM2315C
của Rob Tillaart
Cách cài:
-
Mở Arduino IDE
-
Vào menu Sketch > Include Library > Manage Libraries
-
Tìm từ khóa AM2315C
-
Cài đặt thư viện của Rob Tillaart
Hoặc có thể tải tại đây: https://github.com/RobTillaart/AM2315C
3. Kết nối phần cứng (giao tiếp I2C)
AM2315C | Arduino Uno/Nano |
---|---|
VCC | 5V hoặc 3.3V |
GND | GND |
SDA | A4 |
SCL | A5 |
Nếu không có trở pull-up tích hợp, bạn cần 2 điện trở 10kΩ từ SDA và SCL lên VCC.
4. Kiểm tra I2C bằng I2C Scanner
Nếu cảm biến không phản hồi, hãy chạy đoạn code quét I2C sau để kiểm tra địa chỉ:
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("\nQuét I2C...");
for (byte address = 1; address < 127; address++) {
Wire.beginTransmission(address);
if (Wire.endTransmission() == 0) {
Serial.print("Tìm thấy thiết bị I2C tại địa chỉ: 0x");
Serial.println(address, HEX);
delay(10);
}
}
Serial.println("Hoàn tất quét.");
}
void loop() {}
5. Code mẫu sử dụng thư viện AM2315C (Rob Tillaart)
Code mẫu AM2315C:
-
Vào menu File > Excamples > AM2315C
-
Chạy code AM2315C
//
// FILE: AM2315C.ino
// AUTHOR: Rob Tillaart
// PURPOSE: Demo for AM2315C I2C humidity & temperature sensor
// URL: https://github.com/RobTillaart/AM2315C
//
// Always check datasheet
//
// +-----------------+
// RED -------- | VDD |
// YELLOW -------- | SDA AM2315C |
// BLACK -------- | GND |
// WHITE -------- | SCL |
// +-----------------+
#include "AM2315C.h"
AM2315C DHT;
uint8_t count = 0;
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println(__FILE__);
Serial.print("AM2315C LIBRARY VERSION: ");
Serial.println(AM2315C_LIB_VERSION);
Serial.println();
Wire.begin();
DHT.begin();
delay(1000);
}
void loop()
{
if (millis() - DHT.lastRead() >= 1000)
{
// READ DATA
uint32_t start = micros();
int status = DHT.read();
uint32_t stop = micros();
if ((count % 10) == 0)
{
count = 0;
Serial.println();
Serial.println("Type\tHumidity (%)\tTemp (°C)\tTime (µs)\tStatus");
}
count++;
Serial.print("AM2315C \t");
// DISPLAY DATA, sensor has only one decimal.
Serial.print(DHT.getHumidity(), 1);
Serial.print("\t\t");
Serial.print(DHT.getTemperature(), 1);
Serial.print("\t\t");
Serial.print(stop - start);
Serial.print("\t\t");
switch (status)
{
case AM2315C_OK:
Serial.print("OK");
break;
case AM2315C_ERROR_CHECKSUM:
Serial.print("Checksum error");
break;
case AM2315C_ERROR_CONNECT:
Serial.print("Connect error");
break;
case AM2315C_MISSING_BYTES:
Serial.print("Missing bytes");
break;
case AM2315C_ERROR_BYTES_ALL_ZERO:
Serial.print("All bytes read zero");
break;
case AM2315C_ERROR_READ_TIMEOUT:
Serial.print("Read time out");
break;
case AM2315C_ERROR_LASTREAD:
Serial.print("Error read too fast");
break;
default:
Serial.print("Unknown error");
break;
}
Serial.print("\n");
}
}
// -- END OF FILE --
Mở Serial monitor lên và xem ngõ ra
AM2315C.ino
AM2315C LIBRARY VERSION: 0.2.5
🔍 Giải thích các cột:
Cột | Ý nghĩa |
---|---|
Type |
Loại cảm biến: luôn là AM2315C |
Humidity (%) |
Độ ẩm tương đối, có 1 chữ số thập phân |
Temp (°C) |
Nhiệt độ môi trường, cũng có 1 chữ số thập phân |
Time (µs) |
Thời gian đo, tính bằng micro giây (µs ) |
Status |
Trạng thái đọc dữ liệu, ví dụ: OK , Checksum error ,... |
Nhận xét