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.
Lỗi phát sinh trong quá trình làm :
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.
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).
![]() |
//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 :#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);
}
Lỗi phát sinh trong quá trình làm :
Lỗi 1 |
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 này đã bị quản trị viên blog xóa.
Trả lờiXóa