Hướng dẫn esp8266 #6: cảm biến nhiệt độ ds18b20

Đào Hùng 09/04/2021
huong-dan-esp8266-6-cam-bien-nhiet-do-ds18b20

Mở đầu

  • Hôm nay, mình sẽ hướng dẫn các bạn cách sử dụng con cảm biến nhiệt độ DS18B20 siêu quen thuộc nhé. Lí do tại sao mình lại sử dụng con cảm biến này, vì giá thành khá rẻ (Khoảng 30-40k ngoài thị trường), sai số nhiệt độ nhỏ ( +±0.5°C ), dễ sử dụng và lắp mạch. Trước đó mình đã có sử dụng một con cảm biến nhiệt độ là LM35 và một con cảm biến tích hợp là DHT11, nhưng sai số còn khá lớn, nên mình quyết định chọn em DS18B20 này để phục vụ cho các bài nghiên cứu của mình.

Chuẩn bị

Phần cứng
ESP8266 NodeMCU v1.0 x1
Phần mềm
Arduino IDE  
Thư viện
OneWire  
Dallas Temperute  

Cảm biến nhiệt độ DS18B20

Cảm biến nhiệt độ DS18B20 có 2 loại chính

[caption id="attachment_101957" align="aligncenter" width="400"]Hướng dẫn Esp8266 #6 Cảm biến nhiệt độ DS18B20

  • Cảm biến nhiệt độ DS18B20 dây

Hướng dẫn Esp8266 #6 Cảm biến nhiệt độ DS18B20

  • Module cảm biến nhiệt độ DS18B20

Thông số kĩ thuật

Chuẩn giao tiếp : 1 wire
Điện áp hoạt động : 3.0-5.5V
Dải đo : -55 °C đến +125 °C
Độ chính xác : ± 0.5 ° C trong khoảng -10 ° C đến +85 ° C
Độ phân giải : 9 đến 12 bit

 Sơ đồ chân

  • Module DS18B20

Hướng dẫn Esp8266 #6 Cảm biến nhiệt độ DS18B20

Cảm biến nhiệt độ DS18B20 dây

Hướng dẫn Esp8266 #6 Cảm biến nhiệt độ DS18B20

  • Ok, vậy là chúng ta đã có những khái niệm đầu tiên về con cảm biến nhiệt độ DS18B20 này rồi đúng không. Còn chờ gì nữa mà không qua ngay quán linh kiện điện tử mua một em về test ngay thôi các bạn ơi.

Sơ đồ đấu nối với ESP8266

Hướng dẫn Esp8266 #6 Cảm biến nhiệt độ DS18B20

Lưu ý: Các bạn nên có một con trở 4.7k ở giữa 2 chân data màu xanh và chân VDD vào màu vàng nhé.

Code

#include <OneWire.h>
#include <DallasTemperature.h>
unsigned int t;
 
#define ONE_WIRE_BUS 4          // Cài đặt chân GPIO sử dụng
/*
 * Thiết đặt thư viện onewire
 * Tạo thuộc tính sử dụng giao tiếp onewire ở chân GPIO số 4
 */
OneWire oneWire(ONE_WIRE_BUS);
/*
 * Mình dùng thư viện DallasTemperature để đọc cho nhanh
 */Liên kết thuộc tính với thư viện DallasTemperature để sử dụng đọc cảm biến
DallasTemperature sensors(&oneWire);
 
void setup(void) {
  Serial.begin(9600);
  sensors.begin(); // Bắt đầu đọc cảm biến
}
 
void loop(void) {
  /*
   * Mình không dùng delay mà sẽ dùng hàm millis
   * Sau khoảng thời gian là 1s thì nó sẽ request như bên dưới ;)
   */
  if(millis()-t >1000) {
    // Yêu cầu thông tin từ cảm biến
    sensors.requestTemperatures(); 
    Serial.print("Nhiet do:");
    // Lấy giá trị nhiệt độ của cảm biến. 
    // Vì có thể có nhiều cảm biến nên số thứ tự đầu tiên sẽ là đọc cảm biến đầu tiên sử dụng
    // Nếu dùng 2 con thì có thể dùng getTempCByIndex(1)
    Serial.println(sensors.getTempCByIndex(0)); 
    t=millis();
  }
}

Video

https://www.youtube.com/watch?v=MIizR-JZZn8

 

Bình luận
Nội dung này chưa có bình luận, hãy gửi cho chúng tôi bình luận đầu tiên của bạn.
VIẾT BÌNH LUẬN