ESP32讀取DS18B20溫度

最近收到DS18B20溫度探頭傳感器,如圖:

 感覺是一件比較簡單的溫度傳感器,三根線:

不帶屏蔽輸出引線:紅色(VCC),黃色(白色)(DATA),黑色(GND)

帶屏蔽的輸出引線:紅色(VCC電源線),黃色(DATA信號線),白色(GND地線)

我的是帶屏蔽線的,所以紅色VCC接ESP32的VIN口(5V供電),白色GND接ESP32的GND,黃色信號線接ESP32的D4。

Arduino引入庫

兩個庫均在GitHub上,可以在release標籤頁中下載最新項目文件。
OneWire庫
項目地址:https://github.com/PaulStoffregen/OneWire

DallasTemperature庫
項目地址:https://github.com/milesburton/Arduino-Temperature-Control-Library

可以將庫文件複製到arduino的libraries目錄下,也可以打開arduino ide,選擇項目 > 加載庫 > 添加一個 .ZIP庫,導入兩個庫。

#include <OneWire.h>
#include <DallasTemperature.h>


// 定義DS18B20數據口連接ESP32的4號IO上
#define ONE_WIRE_BUS 4

// 初始連接在單總線上的單總線設備
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // 設置串口通信波特率
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
  // 初始庫
  sensors.begin();
}

void loop(void)
{
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // 發送命令獲取溫度
  Serial.println("DONE");
  
  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0));
  delay(500);  
}

一切都想的太簡單!!!讀出的溫度一直顯示0度。

必須要上拉一個4.7K的電阻,如圖接線:

也就是說,需要在VCC(5V)和接D4的線之間接一個4.7K上拉電阻纔行,但我家裏沒4.7K的,只能並聯兩個10K電阻來解決問題,接上拉電阻後,成功讀到溫度數據。

參考:

在Arduino中使用DS18B20溫度傳感器(基於OneWire和DallasTemperature庫)

ESP8266--驅動DS18B20

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章