0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

將DHT11溫度和濕度傳感器與STM32F103C8連接的方法

科技觀察員 ? 來源:circuitdigest ? 作者:Pramoth Thangavel ? 2022-08-31 15:59 ? 次閱讀

DHT11是一款溫濕度傳感器,顧名思義,用于測量特定環(huán)境或密閉空間內(nèi)的大氣溫濕度。該傳感器通常用于監(jiān)測農(nóng)業(yè)、食品工業(yè)、醫(yī)院、汽車、氣象站等許多應(yīng)用中的環(huán)境參數(shù)。

該傳感器可以測量從 0°C 到 50°C 的溫度,精度為 1°C。它通常用于受控環(huán)境中,例如熱通風(fēng)系統(tǒng)、恒溫室等,以監(jiān)測溫度并采取糾正措施。濕度測量范圍為 20% 至 90%,精度為 1%。濕度表示空氣中存在的水蒸氣量。在許多情況下,例如在制造和儲存茶粉時,濕度值必須保持在受控范圍內(nèi),必須在房間內(nèi)保持正確的濕度,否則茶會失去味道和氣味??蛷d的濕度水平也應(yīng)保持在舒適的范圍內(nèi)。獲得最大舒適度的理想濕度值在 50% 到 65% 之間。

今天在本教程中,我們將學(xué)習(xí)如何將流行的 DHT11 溫度和濕度傳感器與 STM32 微控制器連接。

DHT11溫濕度傳感器

在繼續(xù)界面程序之前,讓我們了解一些有關(guān) DHT11 傳感器的信息。如前所述, DHT11 傳感器用于測量 溫度和濕度。 該傳感器帶有一個專用的內(nèi)置 NTC來測量溫度。它有一個板載 8 位微控制器,可通過單線協(xié)議將溫度和濕度值作為串行數(shù)據(jù)輸出。意思是,傳感器只有一個數(shù)據(jù)引腳,通過它可以讀取溫度和濕度值,從而節(jié)省了微控制器端的引腳。該傳感器還經(jīng)過工廠校準(zhǔn),因此易于與其他微控制器連接。

DHT11 規(guī)格

工作電壓:3.5V 至 5.5V

工作電流:0.3mA(測量)60uA(待機(jī))

輸出:串行數(shù)據(jù)

溫度范圍:0°C 至 50°C

濕度范圍:20% 至 90%

分辨率:溫度和濕度均為 16 位

準(zhǔn)確度:±1°C 和 ±1%

pYYBAGMPFH-ATPzGAAH28yCmA7g721.png

所需組件

STM32F103C8

DHT11溫濕度傳感器

16x2 液晶顯示器

IIC/I2C 串行接口適配器模塊

面包板

連接電線

電路原理

將 DHT11 與 STM32 微控制器連接的完整電路圖如下所示。電路是使用 Fritzing 軟件繪制的。

poYBAGMPFHqAOMCBAAGVMQda9CM327.png

如您所見,我們使用I2C 接口模塊將 LCD 模塊連接到 STM32。這使連接變得簡單,并進(jìn)一步減少了控制器端使用的引腳數(shù)量。但是,如果您沒有此模塊,您也可以通過以下鏈接直接連接 LCD STM32 。

如果您有接口模塊,那么 I2C 串行接口模塊(固定 16X2 LCD 顯示器)和 STM32F103C8 之間的電路連接如下表所示:

pYYBAGMPFHeAdYVfAAALJRrJSx4757.png

同樣,STM32F103C8 和 DHT11 傳感器之間的電路連接如下表所示。

pYYBAGMPFHOAAcbpAAAIjZQPwwA950.png

連接完成后,我的硬件如下所示。

pYYBAGMPFHCAHM7OAAUAObCGTxA865.png

整個設(shè)置由我筆記本電腦的 STM32 的 USB 端口供電?,F(xiàn)在我們的硬件已經(jīng)準(zhǔn)備好了,讓我們進(jìn)入編碼部分。

為 STM32F103C8 準(zhǔn)備 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 的軟件包時,默認(rèn)安裝了線庫。

3. 示例中提供了用于掃描連接的 I2C 設(shè)備的程序(在 Arduino IDE 中:Files-》Examples-》Wire-》I2C 掃描儀線)。在此之前,在 Tools-》Board-》Generic STM32F103C8 Series 中選擇板,如下所示。

poYBAGMPFGuANglCAAHbDdFSbew175.png

4. 然后將代碼上傳到 STM32F103C8 和打開的串行監(jiān)視器。

poYBAGMPFGeAfULyAAAuOQAB9bI871.png

現(xiàn)在注意 I2C 16x2 LCD 顯示器的 I2C 地址為 (0x27)。

為 I2C 16x2 顯示模塊和 DHT11 傳感器安裝庫:

現(xiàn)在我們知道了 I2C 地址,我們需要下載一個庫,以便通過 I2C 與 LCD 顯示器進(jìn)行通信。I2C LCD 顯示庫可從此鏈接下載。下載 zip 文件后,通過 sketch-》import library 在 Arduino IDE 中安裝 I2C LCD 庫。該庫也可以與 Arduino 板一起使用,用于與 I2C LCD 顯示模塊進(jìn)行通信。

同樣,為了從 DHT11 傳感器讀取串行數(shù)據(jù),我們將使用DHT11 庫。使用提供的鏈接將庫下載為 ZIP 文件,下載后,使用草圖-》導(dǎo)入庫在 Arduino IDE 中安裝 DHT庫。同樣的庫也可以與 Arduino 板一起使用。

編碼說明

本文的完整代碼可以在本頁底部找到,相同的解釋如下。最初包括所需的庫。包括用于在 STM32F103C8中使用 I2C 的Wire.h庫、用于使用 I2C 類型 LCD 顯示器的LiquidCrystal_I2C.h和用于使用 DHT 傳感器功能的DHT.h

#include        
#include    
#include                     

現(xiàn)在定義了與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 傳感器連續(xù)接收該值。為了獲得溫度和濕度的單獨值并將其存儲在變量中,使用了以下語句。

僅獲取濕度值

浮動 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的溫度計的工作

一旦您的硬件和代碼準(zhǔn)備就緒,只需將代碼寫入您的硬件,您應(yīng)該會注意到您的 LCD 顯示歡迎屏幕,然后是實時溫度和濕度值,如下所示

pYYBAGMPFGKAIFlEAAXxRGw5laY477.png

如果您的顯示器沒有顯示任何內(nèi)容,您可以檢查調(diào)整I2C 模塊背面的對比度電位器。我嘗試使用空調(diào)改變房間溫度,發(fā)現(xiàn)傳感器值也會相應(yīng)變化。AC 還可以選擇測量室溫,如下圖所示,我的遙控器顯示室溫為 27°C,我們的傳感器還在 LCD 上顯示 27.3°C,這非常接近。

poYBAGMPFF6AFxbDAAUS1pp17vc655.png

#include //使用 I2C 的庫

#include //使用 I2C 類型 LCD 顯示器的

庫 #include //使用 DHT 傳感器的庫


#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();

}


無效循環(huán)()

{

浮動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("%");

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7459

    瀏覽量

    150861
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354313
  • 濕度傳感器
    +關(guān)注

    關(guān)注

    7

    文章

    301

    瀏覽量

    58469
  • DHT11
    +關(guān)注

    關(guān)注

    19

    文章

    276

    瀏覽量

    57517
  • STM32F103C8
    +關(guān)注

    關(guān)注

    1

    文章

    23

    瀏覽量

    8068
收藏 人收藏

    評論

    相關(guān)推薦

    基于arduino的dht11濕度傳感器的使用

    本文介紹了DHT11濕度傳感器電氣特性、DHT11封裝形式及接口說明與典型應(yīng)用電路,其次介紹了DHT11
    發(fā)表于 01-22 15:50 ?4.5w次閱讀
    基于arduino的<b class='flag-5'>dht11</b>溫<b class='flag-5'>濕度</b><b class='flag-5'>傳感器</b>的使用

    STM32F103試用體驗:LCD顯示與DHT11測量實驗

    實驗名稱:LCD顯示與DHT11測量溫濕度 實驗?zāi)康?通過開發(fā)板連接DHT11模塊實時測量環(huán)境溫濕度,并在LCD屏上顯示. 實驗材料: 精
    發(fā)表于 11-09 10:41 ?1.1w次閱讀

    通過STM32C8t6獲取DHT11的溫濕度數(shù)據(jù)

    本項目通過STM32C8t6獲取DHT11的溫濕度數(shù)據(jù),以及空氣質(zhì)量傳感器MQ135,通過一塊ESP8266模塊
    的頭像 發(fā)表于 08-12 14:04 ?1.3w次閱讀
    通過<b class='flag-5'>STM32</b>的<b class='flag-5'>C8</b>t6獲取<b class='flag-5'>DHT11</b>的溫<b class='flag-5'>濕度</b>數(shù)據(jù)

    【眾拳】基于STM8DHT11濕度傳感器實驗 附代碼

    。DHT11濕度傳感器簡介傳感器數(shù)據(jù)輸出的是未編碼的二進(jìn)制數(shù)據(jù)。數(shù)據(jù)(濕度、溫度、整數(shù)、小數(shù)
    發(fā)表于 12-07 09:14

    「正點原子NANO STM32F103開發(fā)板資料連載」第二十七章 DHT11 數(shù)字溫濕度傳感器實驗

    DHT11 有 4 條腿,需要把 U2 的 4 個接口都用上, DHT11 傳感器插入到這個上面就可以通過 STM32F1 來讀取溫
    發(fā)表于 05-06 15:25

    Arduino開發(fā)板使用DHT11濕度傳感器方法 精選資料分享

    在本篇文章中,我們DHT11濕度傳感器與Arduino開發(fā)板和LCD顯示屏連接,設(shè)計一種能夠測量室溫和環(huán)境
    發(fā)表于 07-13 09:35

    Arduino開發(fā)板使用DHT11濕度傳感器方法 精選資料分享

    在本篇文章中,我們DHT11濕度傳感器與Arduino開發(fā)板和LCD顯示屏連接,設(shè)計一種能夠測量室溫和環(huán)境
    發(fā)表于 07-13 06:58

    使用STM32來讀取DHT11數(shù)字溫濕度傳感器

    原理DHT11 是一款濕溫度一體化的數(shù)字傳感器。該傳感器包括一個電阻式測濕元件和一個 NTC測溫元件,并與一個高性能 8 位單片機(jī)相
    發(fā)表于 11-10 08:58

    如何對基于STM32F103 HAL庫的DHT11溫度傳感器進(jìn)行試驗

    如何對基于STM32F103 HAL庫的DHT11溫度傳感器進(jìn)行試驗?如何對DHT11溫度
    發(fā)表于 12-08 07:45

    如何使用STM32F4來讀取DHT11數(shù)字溫濕度傳感器

    數(shù)字溫濕度傳感器實驗上一章,我們介紹了數(shù)字溫度傳感器 DS18B20 的使用,本章我們介紹數(shù)字溫濕度
    發(fā)表于 02-09 07:50

    使用DHT11STM32單片機(jī)進(jìn)行濕度溫度監(jiān)控

    測量0°C至50°C溫度,精度為1°C。 它可以測量20%至90%的濕度,精度為1%。我們將把DHT1
    發(fā)表于 03-01 06:24

    怎樣DHT11濕度傳感器與ESP8266和ThingSpeak連接并監(jiān)控數(shù)據(jù)

    DHT11是一款低成本的濕度溫度傳感器。由于它同時具有溫度濕度
    的頭像 發(fā)表于 07-29 14:20 ?1.4w次閱讀

    如何DHT11濕度溫度傳感器與基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口

    ,并將其顯示在16×2 LCD顯示上。我在這里也會做同樣的事情,但是這次我將把DHT11濕度溫度傳感器
    的頭像 發(fā)表于 05-14 10:47 ?1.2w次閱讀

    使用STM32F103ZET6采集DHT11濕度串口顯示

    STM32采集DHT11濕度關(guān)于DHT11相關(guān)參數(shù)代碼篇接線和實驗結(jié)果總結(jié)關(guān)于DHT11DHT11是一款數(shù)字溫
    發(fā)表于 12-24 19:10 ?45次下載
    使用<b class='flag-5'>STM32F103</b>ZET6采集<b class='flag-5'>DHT11</b>溫<b class='flag-5'>濕度</b>串口顯示

    dht11溫度傳感器的原理及應(yīng)用

    DHT11是一種廣泛使用的數(shù)字溫濕度傳感器,它能夠測量溫度和相對濕度。這種傳感器因其低成本、易于
    的頭像 發(fā)表于 09-03 17:28 ?1041次閱讀