DHT11是一款溫濕度傳感器,顧名思義,用于測量特定環境或密閉空間內的大氣溫濕度。該傳感器通常用于監測農業、食品工業、醫院、汽車、氣象站等許多應用中的環境參數。
該傳感器可以測量從 0°C 到 50°C 的溫度,精度為 1°C。它通常用于受控環境中,例如熱通風系統、恒溫室等,以監測溫度并采取糾正措施。濕度測量范圍為 20% 至 90%,精度為 1%。濕度表示空氣中存在的水蒸氣量。在許多情況下,例如在制造和儲存茶粉時,濕度值必須保持在受控范圍內,必須在房間內保持正確的濕度,否則茶會失去味道和氣味。客廳的濕度水平也應保持在舒適的范圍內。獲得最大舒適度的理想濕度值在 50% 到 65% 之間。
今天在本教程中,我們將學習如何將流行的 DHT11 溫度和濕度傳感器與 STM32 微控制器連接。
DHT11溫濕度傳感器
在繼續界面程序之前,讓我們了解一些有關 DHT11 傳感器的信息。如前所述, DHT11 傳感器用于測量 溫度和濕度。 該傳感器帶有一個專用的內置 NTC來測量溫度。它有一個板載 8 位微控制器,可通過單線協議將溫度和濕度值作為串行數據輸出。意思是,傳感器只有一個數據引腳,通過它可以讀取溫度和濕度值,從而節省了微控制器端的引腳。該傳感器還經過工廠校準,因此易于與其他微控制器連接。
DHT11 規格:
工作電壓:3.5V 至 5.5V
工作電流:0.3mA(測量)60uA(待機)
輸出:串行數據
溫度范圍:0°C 至 50°C
濕度范圍:20% 至 90%
分辨率:溫度和濕度均為 16 位
準確度:±1°C 和 ±1%
所需組件
STM32F103C8
DHT11溫濕度傳感器
16x2 液晶顯示器
面包板
連接電線
電路原理圖
將 DHT11 與 STM32 微控制器連接的完整電路圖如下所示。電路是使用 Fritzing 軟件繪制的。
如您所見,我們使用I2C 接口模塊將 LCD 模塊連接到 STM32。這使連接變得簡單,并進一步減少了控制器端使用的引腳數量。但是,如果您沒有此模塊,您也可以通過以下鏈接直接連接 LCD STM32 。
如果您有接口模塊,那么 I2C 串行接口模塊(固定 16X2 LCD 顯示器)和 STM32F103C8 之間的電路連接如下表所示:
同樣,STM32F103C8 和 DHT11 傳感器之間的電路連接如下表所示。
連接完成后,我的硬件如下所示。
整個設置由我筆記本電腦的 STM32 的 USB 端口供電。現在我們的硬件已經準備好了,讓我們進入編碼部分。
為 STM32F103C8 準備 Arduino IDE
我們必須編寫一個程序來從 DHT11 傳感器中讀取溫度和濕度值并將其顯示在 LCD 模塊上。這里液晶顯示器是通過I2C適配器連接的,因此我們首先要找到這個適配器的I2C地址來與LCD通信。
將 I2C 串行 LCD 接口適配器模塊與 STM32F103C8 連接:
從電路圖中我們可以注意到 STM32F103C8 I2C 引腳 PB6 和 PB7 與 I2C 串行接口模塊的 SCL 和 SDA 引腳相連。要查找 I2C 串行接口模塊的地址,我們必須掃描可用地址。
掃描 I2C 串行接口模塊的地址:
按照以下步驟查找 LCD I2C 接口模塊的 I2C 地址。
1.首先檢查Arduino IDE的STM32包是否安裝。
2. 通過上述鏈接使用 Arduino IDE 安裝用于編程 STM32 的軟件包時,默認安裝了線庫。
3. 示例中提供了用于掃描連接的 I2C 設備的程序(在 Arduino IDE 中:Files-》Examples-》Wire-》I2C 掃描儀線)。在此之前,在 Tools-》Board-》Generic STM32F103C8 Series 中選擇板,如下所示。
4. 然后將代碼上傳到 STM32F103C8 和打開的串行監視器。
現在注意 I2C 16x2 LCD 顯示器的 I2C 地址為 (0x27)。
為 I2C 16x2 顯示模塊和 DHT11 傳感器安裝庫:
現在我們知道了 I2C 地址,我們需要下載一個庫,以便通過 I2C 與 LCD 顯示器進行通信。I2C LCD 顯示庫可從此鏈接下載。下載 zip 文件后,通過 sketch-》import library 在 Arduino IDE 中安裝 I2C LCD 庫。該庫也可以與 Arduino 板一起使用,用于與 I2C LCD 顯示模塊進行通信。
同樣,為了從 DHT11 傳感器讀取串行數據,我們將使用DHT11 庫。使用提供的鏈接將庫下載為 ZIP 文件,下載后,使用草圖-》導入庫在 Arduino IDE 中安裝 DHT庫。同樣的庫也可以與 Arduino 板一起使用。
編碼說明
本文的完整代碼可以在本頁底部找到,相同的解釋如下。最初包括所需的庫。包括用于在 STM32F103C8中使用 I2C 的Wire.h庫、用于使用 I2C 類型 LCD 顯示器的LiquidCrystal_I2C.h和用于使用 DHT 傳感器功能的DHT.h
#include#include #include
現在定義了與STM32F103C8的PA1相連的DHT11(OUT引腳)的引腳名稱
#define DHTPIN PA1
而且,DHTTYPE 被定義為 DHT11。
#define DHTTYPE DHT11
接下來初始化 I2C 地址為 0x27 和 16x2 類型 LCD 顯示器的LiquidCrystal_I2C類的對象 lcd 。
LiquidCrystal_I2C lcd(0x27, 16, 2);
此外, DHT 類的對象 dht與 STM32 和 DHT 類型為 DHT11 的 DHT 引腳被初始化
DHT dht(DHTPIN, DHTTYPE);
接下來在void setup() 中:
首先使用以下方法初始化 LCD
液晶顯示器開始();
然后使用以下語句開始接收來自 DHT11 傳感器的溫度和濕度值。
dht.begin();
打開黑光燈并打印歡迎信息并在三秒鐘后清除它們。
液晶背光(); lcd.setCursor(0,0); lcd.print("電路文摘"); lcd.setCursor(0,1); lcd.print("DHT11 與 STM32"); 延遲(3000); lcd.clear();
接下來在void loop() 中:
從 DHT11 傳感器連續接收該值。為了獲得溫度和濕度的單獨值并將其存儲在變量中,使用了以下語句。
僅獲取濕度值
浮動 h = dht.readHumidity();
僅獲取溫度值
浮動 t = dht.readTemperature();
最后在 16X2 LCD 顯示屏上打印
lcd.setCursor(0,0); lcd.print("溫度:"); lcd.print(t); lcd.print("C"); lcd.setCursor(0,1); lcd.print("濕度:"); lcd.print(h); lcd.print("%");
基于STM32的溫度計的工作
一旦您的硬件和代碼準備就緒,只需將代碼寫入您的硬件,您應該會注意到您的 LCD 顯示歡迎屏幕,然后是實時溫度和濕度值,如下所示
如果您的顯示器沒有顯示任何內容,您可以檢查調整I2C 模塊背面的對比度電位器。我嘗試使用空調改變房間溫度,發現傳感器值也會相應變化。AC 還可以選擇測量室溫,如下圖所示,我的遙控器顯示室溫為 27°C,我們的傳感器還在 LCD 上顯示 27.3°C,這非常接近。
#include
#include
庫 #include
#define DHTPIN PA1
#define DHTTYPE DHT11
LiquidCrystal_I2C lcd(0x27, 16, 2); //為LiquidCrystal_I2C類初始化對象lcd,I2C地址為0x27和16x2類型的LCD顯示
DHT dht(DHTPIN, DHTTYPE); //使用STM32的DHT引腳和DHT類型為DHT11的DHT類初始化對象dht
void setup()
{
// 初始化 LCD
lcd.begin();
dht.begin(); //開始接收溫度和濕度值。
液晶背光();// 打開黑燈并打印歡迎信息。
lcd.setCursor(0,0);
lcd.print("電路文摘");
lcd.setCursor(0,1);
lcd.print("DHT11 與 STM32");
延遲(3000);
lcd.clear();
}
無效循環()
{
浮動h = dht.readHumidity();//獲取濕度值
float t = dht.readTemperature(); //獲取溫度值
lcd.setCursor(0,0);
lcd.print("溫度:");
lcd.print(t);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("濕度:");
lcd.print(h);
lcd.print("%");
}
-
微控制器
+關注
關注
48文章
7776瀏覽量
153051 -
STM32
+關注
關注
2281文章
10971瀏覽量
360397 -
濕度傳感器
+關注
關注
7文章
310瀏覽量
58845 -
DHT11
+關注
關注
19文章
277瀏覽量
58022 -
STM32F103C8
+關注
關注
1文章
23瀏覽量
8202
發布評論請先 登錄
相關推薦
基于arduino的dht11溫濕度傳感器的使用

STM32F103試用體驗:LCD顯示與DHT11測量實驗
「正點原子NANO STM32F103開發板資料連載」第二十七章 DHT11 數字溫濕度傳感器實驗
Arduino開發板使用DHT11溫濕度傳感器的方法 精選資料分享
Arduino開發板使用DHT11溫濕度傳感器的方法 精選資料分享
使用STM32來讀取DHT11數字溫濕度傳感器
如何將DHT11濕度和溫度傳感器與基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口
使用STM32F103ZET6采集DHT11溫濕度串口顯示

評論