ESP8266/ESP32 - đọc cảm biến nhiệt độ (Read temperature DS18B20 with ESP8266 nodeMCU and arduino IDE)

Xin chào tất cả các bạn, hôm nay mình sẽ chia sẻ cho các bạn về đọc giá trị nhiệt độ của cảm biến DS18b20 bằng Arduino IDE (dùng cho cả arduino và esp8266).
Trước tiên, đối với các bạn sử dụng board arduino để làm project, các bạn hãy tải 2 thư viện sau về nhé :
one wire (library)
Dallas Temperature

Còn đối với board esp8266 (mình đang dùng loại esp8266 cp2102 nodeMCU), các bạn hãy download thư viện này về nhé :
https://github.com/PaulStoffregen/OneWire.git

Sơ đồ kết nối : Các bạn chọn một trong 2 cách dưới đây để kết nối giữa board và cảm biến (mình đang dùng cách 2).

Sau khi kết nối xong, chúng ta tiến hành nạp code cho board. Tùy theo từng board và chân các bạn muốn sử dụng, thì hãy khai báo lại chân cho đúng ý muốn của mình.
//Include libraries
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 2 on the Arduino
//#define ONE_WIRE_BUS 2
#define ONE_WIRE_BUS D1
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup(void)
{
  Serial.begin(9600); //Begin serial communication
  Serial.println("Arduino Digital Temperature // Serial Monitor Version"); //Print a message
  sensors.begin();
}
void loop(void)
{
  // Send the command to get temperatures
  sensors.requestTemperatures(); 
  Serial.print("Temperature is: ");
  Serial.println(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
  //Update value every 1 sec.
  delay(1000);
}
copy :

Lỗi phát sinh trong quá trình làm :
Lỗi 1
Lỗi trên là lỗi mà board chỉ đọc được 2 giá trị từ cảm biến, mình khắc phục bằng cách thay điện trở 4k7 thành 1k. (đối với dùng nguồn 3.3v trên esp8266, còn dùng nguồn trên arduino đọc được nhiệt độ bình thường).

Lỗi 2 : #error "Please define I/O register types here"
lỗi này xảy ra khi các bạn nạp code cho board esp8266 mình có tìm hiểu trên một số diễn đàn có chia sẻ, lỗi này là do cấu hình bên trong thư viện one wire, các bạn chỉ cần download thư viện mình upload trên và add vào arduino ide thì sẽ nạp được cho board.
Nếu trong quá trình hoàn thiện, có phát sinh lỗi thì mình sẽ bổ sung cho các bạn. Cảm ơn các bạn đã quan tâm theo dõi. Hẹn gặp lại tại các bài viết lần sau.

Nhận xét

Đăng nhận xét

Bài đăng phổ biến từ blog này

Dòng điện, điện áp 1 chiều và các định luật cơ bản

Dòng điện 1 chiều (DC) là gì ?

Các cách mắc điện trở

Dòng điện xoay chiều

Biến áp, Triết áp, Phân loại điện trở