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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將DHT11與樹莓派連接在16x2 LCD屏幕上顯示溫度和濕度的值

科技觀察員 ? 來源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2022-11-14 16:53 ? 次閱讀

溫度和濕度是在任何環(huán)境中被監(jiān)控的最常見參數(shù)。有大量的傳感器可供選擇來測量溫度和濕度,但最常用的是DHT11,因為它具有不錯的測量范圍和精度。它還可以與單引腳通信配合使用,因此非常容易與微控制器微處理器連接。在本教程中,我們將學習如何將流行的DHT11傳感器與Raspberry Pi連接,并在16x2 LCD屏幕上顯示溫度和濕度的值。

DHT11傳感器概述:

DHT11傳感器可以測量具有以下規(guī)格的相對濕度和溫度

Temperature Range: 0-50°C

Temperature Accuracy: ±2 °C

Humidity Range: 20-90% RH

Humidity Accuracy: ±5 %

pYYBAGNyAg-AfdPQAACCHoW3vQ8682.jpg

DHT11傳感器有模塊形式或傳感器形式。在本教程中,我們使用傳感器的模塊形式,兩者之間的唯一區(qū)別是,在模塊形式中,傳感器有一個濾波電容器和一個連接到傳感器輸出引腳的上拉電阻。因此,如果您單獨使用傳感器,請確保添加這兩個組件。

DHT11傳感器的工作原理

DHT11傳感器配有藍色或白色外殼。在這個外殼內,我們有兩個重要的組件,可以幫助我們感知相對濕度和溫度。第一個組件是一對電極;這兩個電極之間的電阻由保濕基板決定。因此,測得的電阻與環(huán)境的相對濕度成反比。相對濕度越高,電阻值越低,反之亦然。另請注意,相對濕度與實際濕度不同。相對濕度測量空氣中的含水量相對于空氣中的溫度。

另一個元件是表面貼裝的NTC熱敏電阻。術語NTC代表負溫度系數(shù),溫度升高時電阻值將減小

先決條件:

假設您的樹莓派已經使用操作系統(tǒng)刷新并能夠連接到互聯(lián)網(wǎng)。如果沒有,請先按照樹莓派入門教程進行操作,然后再繼續(xù)。

還假設您可以通過終端窗口或其他應用程序訪問您的 pi,通過這些應用程序您可以編寫和執(zhí)行 python 程序并使用終端窗口。

在Raspberry Pi上安裝Adafruit LCD庫:

溫度和濕度值將顯示在16 * 2 LCD顯示屏上。Adafruit 為我們提供了一個庫,可以在 4 位模式下輕松操作此 LCD,因此讓我們通過打開終端窗口 Pi 并按照以下步驟將其添加到我們的樹莓派中。

第 1 步:使用以下行在樹莓派上安裝 git。Git允許您克隆 Github 上的任何項目文件,并在 Raspberry pi 上使用它。我們的庫在 Github 上,所以我們必須安裝 git 才能將該庫下載到 pi 中。

apt-get install git

第 2 步:以下行鏈接到存在庫的 GitHub 頁面,只需執(zhí)行該行即可克隆 Pi 主目錄上的項目文件

git clone git://github.com/adafruit/Adafruit_Python_CharLCD

第 3 步:使用以下命令更改目錄行,進入我們剛剛下載的項目文件。命令行如下

cd Adafruit_Python_CharLCD

第 4 步:目錄中會有一個名為 setup.py 的文件,我們必須安裝它,以安裝庫。使用以下代碼安裝庫

sudo python setup.py install

也就是說,庫應該已成功安裝?,F(xiàn)在同樣,讓我們繼續(xù)安裝同樣來自Adafruit的DHT庫。

在Raspberry Pi上安裝Adafruit DHT11庫:

DHT11傳感器采用單線制原理。溫度和濕度值由傳感器檢測,然后作為串行數(shù)據(jù)傳輸通過輸出引腳傳輸。然后,我們可以通過使用MCU/MPU上的I/O引腳來讀取這些數(shù)據(jù)。要了解如何讀取這些值,您必須通讀DHT11傳感器的數(shù)據(jù)表,但現(xiàn)在為了簡單起見,我們將使用一個庫與DHT11傳感器進行通信。

Adafruit 提供的 DHT11 庫也可用于DHT11、DHT22和其他單線溫度傳感器。安裝 DHT11 庫的過程也類似于安裝 LCD 庫的步驟。

cd Adafruit_Python_DHTsudo apt-get install build-essential python-devsudo python setup.py install

完成后,您將在我們的樹莓派上成功安裝這兩個庫。現(xiàn)在我們可以繼續(xù)進行硬件連接。

電路圖:

下面給出了將DH11與Raspberry Pi連接的完整電路圖,它是使用Fritzing構建的。遵循連接并建立電路

poYBAGNyAhKAPqKMAADtar2ET4s918.png

LCD和DHT11傳感器均采用+5V電源供電,因此我們使用Raspberry Pi上的5V引腳為兩者供電。DHT11傳感器的輸出引腳上使用值為1k的上拉電阻,如果您使用的是模塊,則可以避免使用此電阻。

在LCD的Vee引腳上增加了一個10k的微調器電位器,以控制LCD的對比度水平。除此之外,所有連接都非常簡單。但是記下您使用哪些 GPIO 引腳來連接引腳,因為我們的程序將需要。下面的圖表應該允許您計算出 GPIO 引腳編號。

pYYBAGNyAhSAZJYoAACdZFT2UWU965.png

使用圖表并根據(jù)電路圖進行連接。我使用面包板和跳線進行連接。由于我使用了DHT11模塊,因此我將其直接連接到Raspberry Pi。我的硬件如下所示

poYBAGNyAhWAQAOzAAD4-DhPH5M444.jpg

DHT11傳感器的Python編程

我們必須編寫一個程序來從DHT11傳感器讀取溫度和濕度值,然后在LCD上顯示相同的值。由于我們已經下載了LCD和DHT11傳感器的庫,因此代碼應該非常簡單。python 完整程序可以在本頁末尾找到,但您可以進一步閱讀以了解該程序的工作原理。

我們必須將LCD庫和DHT11庫導入我們的程序才能使用與之相關的功能。由于我們已經將它們下載并安裝在我們的 Pi 上,因此我們可以簡單地使用以下行來導入它們。我們還導入時間庫以使用延遲功能。

import time #import time for creating delay

import Adafruit_CharLCD as LCD #Import LCD library

import Adafruit_DHT #Import DHT Library for sensor

接下來,我們必須指定傳感器連接到哪些引腳以及使用哪種類型的溫度傳感器。變量sensor_name分配給Adafruit_DHT。DHT11,因為我們在這里使用 DHT11 傳感器。傳感器的輸出引腳連接到樹莓派的 GPIO 17,因此我們將 17 分配給sensor_pin變量,如下所示。

sensor_name = Adafruit_DHT.DHT11 #we are using the DHT11 sensor

sensor_pin = 17 #The sensor is connected to GPIO17 on Pi

同樣,我們還必須定義LCD連接到哪些GPIO引腳。在這里,我們在4 位模式下使用 LCD,因此我們將有四個數(shù)據(jù)引腳和兩個控制引腳連接到 pi 的 GPIO 引腳。此外,如果我們也希望控制背光,您可以將背光引腳連接到 GPIO 引腳。但是現(xiàn)在我不使用它,所以我為它分配了 0。

lcd_rs = 7 #RS of LCD is connected to GPIO 7 on PI

lcd_en = 8 #EN of LCD is connected to GPIO 8 on PI

lcd_d4 = 25 #D4 of LCD is connected to GPIO 25 on PI

lcd_d5 = 24 #D5 of LCD is connected to GPIO 24 on PI

lcd_d6 = 23 #D6 of LCD is connected to GPIO 23 on PI

lcd_d7 = 18 #D7 of LCD is connected to GPIO 18 on PI

lcd_backlight = 0 #LED is not connected so we assign to 0

我們從 Adafruit 下載的 LCD 庫可用于所有類型的特色 LCD 顯示器。在我們的項目中,我們使用 16*2 LCD 顯示屏,因此我們在變量中提到了行數(shù)和列數(shù),如下所示。

lcd_columns = 16 #for 16*2 LCD

lcd_rows = 2 #for 16*2 LCD

現(xiàn)在,我們已經聲明了LCD引腳以及LCD的行數(shù)和列數(shù),我們可以使用以下行初始化LCD顯示,該行將所有必需的信息發(fā)送到庫。

lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,

lcd_columns, lcd_rows, lcd_backlight) #Send all the pin details to library

為了啟動程序,我們使用 lcd.message() 函數(shù)顯示一條小的介紹消息,然后延遲 2 秒以使消息可讀。用于在 2 上打印德·行命令 n 可以使用如下所示

lcd.message('DHT11 with Pi n -CircuitDigest') #Give a intro message

time.sleep(2) #wait for 2 secs

最后,在我們的while循環(huán)中,我們應該從傳感器讀取溫度和濕度的值,并每2秒在LCD屏幕上顯示一次。while循環(huán)中的完整程序如下所示

while 1: #Infinite Loop

濕度, 溫度 = Adafruit_DHT.read_retry(sensor_name, sensor_pin) 從傳感器#read并將各自的值保存在溫度和濕度變量中

lcd.clear() #Clear the LCD screen

lcd.message ('Temp = %.1f C' % temperature) # Display the value of temperature

lcd.message ('nHum = %.1f %%' % humidity) #Display the value of Humidity

time.sleep(2) #Wait for 2 sec then update the values

我們可以使用下面的這一行輕松地從傳感器獲取溫度和濕度值。如您所見,它返回兩個存儲在可變濕度和溫度中的值。sensor_name和sensor_pin詳細信息作為參數(shù)傳遞;這些值在程序開始時更新

濕度,溫度 = Adafruit_DHT.read_retry(sensor_name, sensor_pin)

要在LCD屏幕上顯示變量名稱,我們可以使用&d,%c等標識符。在這里,由于我們顯示的浮點數(shù)在小數(shù)點后只有一個數(shù)字,我們使用標識符 %.1f 來顯示可變溫度和濕度中的值

lcd.message ('Temp = %.1f C' % temperature)

lcd.message ('nHum = %.1f %%' % humidity)

使用樹莓派測量濕度和溫度:

按照電路圖進行連接并安裝所需的庫。然后啟動本頁末尾給出的 python 程序。您的LCD應顯示介紹消息,然后顯示當前溫度和濕度值,如下圖所示。

poYBAGNyAhiAZyjwAAEskrSOEiA898.jpg

如果您發(fā)現(xiàn)LCD沒有顯示任何內容,請檢查python shell窗口是否顯示任何錯誤,如果沒有顯示錯誤,請再次檢查您的連接并調整電位計以改變LCD的對比度水平,并檢查屏幕上是否有任何內容。

#Program to read the values of Temp and Hum from the DHT11 sensor and display them on the LCD

import time #import time for creating delay

import Adafruit_CharLCD as LCD #Import LCD library

import Adafruit_DHT #Import DHT Library for sensor


sensor_name = Adafruit_DHT.DHT11 #we are using the DHT11 sensor

sensor_pin = 17 #The sensor is connected to GPIO17 on Pi



lcd_rs = 7 #RS of LCD is connected to GPIO 7 on PI

lcd_en = 8 #EN of LCD is connected to GPIO 8 on PI

lcd_d4 = 25 #D4 of LCD is connected to GPIO 25 on PI

lcd_d5 = 24 #D5 of LCD is connected to GPIO 24 on PI

lcd_d6 = 23 #D6 of LCD is connected to GPIO 23 on PI

lcd_d7 = 18 #D7 of LCD is connected to GPIO 18 on PI

lcd_backlight = 0 #LED is not connected so we assign to 0


lcd_columns = 16 #for 16*2 LCD

lcd_rows = 2 #for 16*2 LCD


lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,

lcd_columns, lcd_rows, lcd_backlight) #Send all the pin details to library


lcd.message('DHT11 with Pi n -CircuitDigest') #Give a intro message


time.sleep(2) #wait for 2 secs


while 1: #Infinite Loop



humidity, temperature = Adafruit_DHT.read_retry(sensor_name, sensor_pin) #read from sensor and save respective values in temperature and humidity varibale

lcd.clear() #Clear the LCD screen

lcd.message ('Temp = %.1f C' % temperature) # Display the value of temperature

lcd.message ('nHum = %.1f %%' % humidity) #Display the value of Humidity


time.sleep(2) #Wait for 2 sec then update the values


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

    關注

    2541

    文章

    49963

    瀏覽量

    747543
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4363

    瀏覽量

    166210
  • DHT11
    +關注

    關注

    19

    文章

    274

    瀏覽量

    57412
收藏 人收藏

    評論

    相關推薦

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

    實驗名稱:LCD顯示DHT11測量溫濕度 實驗目的:通過開發(fā)板連接DHT11模塊實時測量環(huán)境
    發(fā)表于 11-09 10:41 ?1.1w次閱讀

    如何將16x2 LCD與Atmega16 AVR連接顯示簡單的歡迎消息

    在本教程中,我們將了解如何將 16x2 LCD 與 Atmega16 AVR 微控制器連接顯示
    的頭像 發(fā)表于 11-11 17:29 ?2954次閱讀
    <b class='flag-5'>如何將</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>與Atmega<b class='flag-5'>16</b> AVR<b class='flag-5'>連接</b>并<b class='flag-5'>顯示</b>簡單的歡迎消息

    MPU6050與Raspberry Pi連接顯示16x2 LCD的步驟

    今天在本文中,我們將將此MPU6050與Raspberry Pi連接,并顯示16x2 LCD
    的頭像 發(fā)表于 11-17 16:42 ?3189次閱讀
    <b class='flag-5'>將</b>MPU6050與Raspberry Pi<b class='flag-5'>連接</b>并<b class='flag-5'>顯示</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b><b class='flag-5'>值</b>的步驟

    如何將柔性傳感器與樹莓連接并在LCD屏幕顯示

    在這個項目中,我們學習如何將柔性傳感器與樹莓連接并在LCD
    的頭像 發(fā)表于 12-31 09:33 ?3728次閱讀
    <b class='flag-5'>如何將</b>柔性傳感器與<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>連接</b>并在<b class='flag-5'>LCD</b><b class='flag-5'>屏幕</b><b class='flag-5'>上</b><b class='flag-5'>顯示</b>其<b class='flag-5'>值</b>

    樹莓派上裝LCD 16x2顯示

    16x2 液晶顯示屏,它有16個數(shù)據(jù)引腳,但是我們只用6個就可以了。市面上的LCD 16x2 液晶顯示
    發(fā)表于 01-15 10:53

    【STM32F103試用體驗】LCD顯示DHT11測量實驗

    `近期家人生病, 忙于求醫(yī)照料, 只能斷斷續(xù)續(xù)抽時間做實驗.實驗名稱: LCD顯示DHT11測量溫濕度實驗目的: 通過開發(fā)板連接
    發(fā)表于 10-22 08:40

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

    計,并將其顯示LCD。所需的組件● Arduino UNO開發(fā)板● 1602液晶屏● DHT11 /
    發(fā)表于 07-13 06:58

    使用DHT11和STM32單片機進行濕度溫度監(jiān)控

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

    DHT11濕度傳感器在12864LCD顯示

    DHT11濕度傳感器在12864LCD顯示
    發(fā)表于 06-22 15:56 ?92次下載

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

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

    DHT11與PIC16F877A連接進行溫度濕度的測量

    在本文中,我們學習如何將DHT11 與 PIC16F87A連接,這是一個 8 位 PIC 微控制器。我們將使用這個微控制器通過
    的頭像 發(fā)表于 08-22 16:07 ?2167次閱讀
    <b class='flag-5'>將</b><b class='flag-5'>DHT11</b>與PIC<b class='flag-5'>16</b>F877A<b class='flag-5'>連接</b>進行<b class='flag-5'>溫度</b>和<b class='flag-5'>濕度</b>的測量

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

    今天在本教程中,我們學習如何將流行的 DHT11 溫度濕度傳感器與 STM32 微控制器連接
    的頭像 發(fā)表于 08-31 15:59 ?1.9w次閱讀
    <b class='flag-5'>將</b><b class='flag-5'>DHT11</b><b class='flag-5'>溫度</b>和<b class='flag-5'>濕度</b>傳感器與STM32F103C8<b class='flag-5'>連接</b>的方法

    FPGA在OLED顯示DHT11數(shù)據(jù)

    這是FPGA之旅設計的第十三例啦,本例是一個綜合性的例程,基于OLED屏幕顯示,和DHT11濕度采集,
    的頭像 發(fā)表于 09-09 10:33 ?1616次閱讀

    DHT11溫度濕度傳感器打印到I2C 16x02 LCD

    電子發(fā)燒友網(wǎng)站提供《DHT11溫度濕度傳感器打印到I2C 16x02 LCD.zip》資料免費
    發(fā)表于 11-23 11:50 ?0次下載
    <b class='flag-5'>DHT11</b><b class='flag-5'>溫度</b>和<b class='flag-5'>濕度</b>傳感器打印到I<b class='flag-5'>2</b>C <b class='flag-5'>16x</b>02 <b class='flag-5'>LCD</b>

    如何將16x2 LCD與Raspberry pi4連接

    電子發(fā)燒友網(wǎng)站提供《如何將16x2 LCD與Raspberry pi4連接.zip》資料免費下載
    發(fā)表于 06-19 11:45 ?0次下載
    <b class='flag-5'>如何將</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>與Raspberry pi4<b class='flag-5'>連接</b>