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

Hướng dẫn này cho bạn biết cách sử dụng cảm biến nhiệt độ DS18B20 1-Wire có vỏ chống nước với ESP8266. Cảm biến này có chi phí hợp lý, dễ sử dụng và có vẻ ngoài hấp dẫn.

Phần cứng cần chuẩn bị

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×DS18B20 Temperature Sensor (WITH Adapter)
1×DS18B20 Temperature Sensor (WITHOUT Adapter)
1×4.7 kΩ Resistor
1×breadboard
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về cảm biến nhiệt độ One-Wire - DS18B20

Sơ đồ chân cảm biến nhiệt độ

Cảm biến nhiệt độ DS18B20 có ba chân cần được kết nối theo một cách cụ thể:

  • Chân GND: nên được kết nối với đất (0V)
  • Chân VCC: nên được kết nối với nguồn điện (5V hoặc 3.3V)
  • Chân DATA: là bus dữ liệu 1-Wire và nên được kết nối với một chân số trên bo mạch ESP8266.

Cảm biến thường có hai loại: bao gói TO-92 (giống transistor) và một đầu dò chống nước. Trong bài hướng dẫn này, chúng ta sẽ sử dụng dạng đầu dò chống nước.

sơ đồ chân của cảm biến nhiệt độ ds18b20

Kết nối cảm biến nhiệt DS18B20 với Arduino đòi hỏi một điện trở kéo lên, điều này có thể gây phiền toái. May mắn thay, một số nhà sản xuất đã làm cho việc này dễ dàng hơn bằng cách cung cấp một bộ adapter nối dây có điện trở kéo lên tích hợp sẵn và khối đầu nối có vít, giúp đơn giản hóa quá trình nối dây.

Sơ đồ đấu dây

  • Sơ đồ đấu dây bằng breadboard.
sơ đồ nối dây cảm biến nhiệt độ ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

  • Sơ đồ nối dây sử dụng bộ adapter nối dây (được khuyến nghị).
sơ đồ nối dây ESP8266 NodeMCU ds18b20

This image is created using Fritzing. Click to enlarge image

Chúng tôi khuyến nghị mua cảm biến DS18B20 cùng với adapter dây đi kèm để có một thiết lập liền mạch. Adapter này có một điện trở tích hợp, loại bỏ nhu cầu dùng một điện trở bổ sung trong dây. Chúng tôi cũng đã thử nghiệm nó và hoạt động tốt.

Cách lập trình cho cảm biến nhiệt độ DS18B20

  • Bao gồm thư viện vào dự án của bạn.
#include <OneWire.h> #include <DallasTemperature.h>
  • Khai báo một đối tượng có kiểu OneWire, tương ứng với chân được kết nối với chân DATA của cảm biến. Ngoài ra, khai báo một đối tượng có kiểu DallasTemperature.
OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature DS18B20(&oneWire); // pass oneWire to DallasTemperature library
  • Bắt đầu quá trình thiết lập cảm biến:
DS18B20.begin(); // initialize the sensor
  • Gửi lệnh để lấy nhiệt độ.
DS18B20.requestTemperatures();
  • Đọc nhiệt độ ở độ C.
temperature_C = DS18B20.getTempCByIndex(0);
  • Tính Fahrenheit từ Celsius:
temperature_F = temperature_C * 9 / 5 + 32;

Mã nguồn ESP8266

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-temperature-sensor */ #include <OneWire.h> #include <DallasTemperature.h> #define SENSOR_PIN D7 // The ESP8266 pin connected to DS18B20 sensor's DQ pin OneWire oneWire(SENSOR_PIN); DallasTemperature DS18B20(&oneWire); float temperature_C; // temperature in Celsius float temperature_F; // temperature in Fahrenheit void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. DS18B20.begin(); // initialize the DS18B20 sensor } void loop() { DS18B20.requestTemperatures(); // send the command to get temperatures temperature_C = DS18B20.getTempCByIndex(0); // read temperature in °C temperature_F = temperature_C * 9 / 5 + 32; // convert °C to °F Serial.print("Temperature: "); Serial.print(temperature_C); // print the temperature in °C Serial.print("°C"); Serial.print(" ~ "); // separator between °C and °F Serial.print(temperature_F); // print the temperature in °F Serial.println("°F"); delay(500); }

Hướng dẫn từng bước

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Hãy xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Nối các thành phần như được thể hiện trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, chẳng hạn (ví dụ NodeMCU 1.0 (ESP-12E Module)), và cổng COM tương ứng.
  • Kết nối ESP8266 với máy tính bằng cáp USB.
  • Mở Arduino IDE, chọn bo mạch và cổng phù hợp.
  • Nhấp vào biểu tượng Libraries ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “Dallas”, sau đó tìm thư viện DallasTemperature được tạo bởi Miles Burton.
  • Nhấn nút Install để cài đặt thư viện DallasTemperature.
thư viện dallas temperature cho ESP8266 NodeMCU
  • Bạn sẽ được yêu cầu cài đặt phụ thuộc. Nhấn nút Cài đặt Tất cả để cài đặt thư viện OneWire.
thư viện onewire cho ESP8266 NodeMCU
  • Sao chép mã và mở nó bằng Arduino IDE.
  • Nhấn nút Tải lên trong IDE để chuyển mã tới ESP8266.
  • Đặt cảm biến vào nước nóng và nước lạnh hoặc cầm nó trong tay.
  • Kiểm tra kết quả trên Trình theo dõi nối tiếp.
COM6
Send
Temperature: 26.31°C ~ 79.36°F Temperature: 26.44°C ~ 79.59°F Temperature: 26.50°C ~ 79.70°F Temperature: 26.56°C ~ 79.81°F Temperature: 27.06°C ~ 80.71°F Temperature: 27.75°C ~ 81.95°F Temperature: 28.37°C ~ 83.07°F Temperature: 29.00°C ~ 84.20°F Temperature: 29.56°C ~ 85.21°F Temperature: 30.00°C ~ 86.00°F Temperature: 30.31°C ~ 86.56°F Temperature: 30.62°C ~ 87.12°F Temperature: 30.87°C ~ 87.57°F
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.