精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

如何將溫度傳感器DS18B20與樹莓派連接

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

樹莓派以其計算能力及其在物聯網、家庭自動化等領域的廣泛應用而聞名。然而,對于任何電子系統與現實世界進行交互并獲取有關它的信息,系統必須使用傳感器。該過程使用多種類型的傳感器,并根據要測量的參數及其應用選擇所需的傳感器。在本教程中,我們將學習將溫度傳感器DS18B20與樹莓派連接。

DS18B20是廣泛使用的溫度傳感器,主要用于化工、礦山等惡劣工作環境的場所。本文將介紹該傳感器以及它如何超越其他溫度傳感器,最后將其與Raspberry Pi連接并查看16x2 LCD上的溫度值。

所需材料

DS18B20 溫度傳感器

樹莓派

16*2液晶顯示屏

10k修剪鍋

10k 上拉電阻

面包板

連接線

DS18B20溫度傳感器簡介

DS18B20是一款三端子溫度傳感器,采用TO-92(晶體管型)封裝。它非常易于使用,只需要一個外部組件即可開始工作。此外,它只需要MCU / MPU的一個GPIO引腳即可與之通信。典型的DS18B20溫度傳感器及其引腳名稱如下所示。

poYBAGNqFvKAf8GVAABfI7UAdpo227.png

該傳感器也可作為防水版本提供,其中傳感器由圓柱形金屬管覆蓋。在本教程中,我們將使用上面顯示的普通晶體管型傳感器。DS18B20為1線可編程溫度傳感器,只需數據引腳即可將信息發送到微控制器微處理器板(如Raspberry Pi)。每個傳感器都有一個唯一的 64 位地址,因此也可以將多個傳感器連接到同一個 MCU/MPU,因為每個傳感器可以在同一數據總線上單獨尋址。傳感器的規格如下所示。

工作電壓:3-5V

測量范圍:-55°C 至 +125°C

精度:±0.5°C

分辨率:9 位至 12 位

現在我們對傳感器有了足夠的了解,讓我們統計它與樹莓派的接口

先決條件

假設您的樹莓派已經使用操作系統刷新并能夠連接到互聯網。如果沒有,請先按照樹莓派入門教程進行操作,然后再繼續。這里我們使用Rasbian Jessie安裝的Raspberry Pi 3。

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

電路圖

正如我們在本教程前面所說,我們將DS18B20傳感器與Pi連接,并在16*2 LCD屏幕上顯示溫度值。因此,傳感器和LCD應與樹莓派連接,如下所示。

pYYBAGNqFvWAObK3AADmW2C4_iM007.png

按照電路圖進行相應的連接。LCD和DS18B20傳感器均在+5V的幫助下工作,+5V由樹莓派上的5V引腳提供。LCD使用Raspberry Pi在4位模式下工作,GPIO引腳18,23,24和25用于數據線,GPIO引腳7和8用于控制線。電位計也用于控制LCD的對比度水平。DS18B20的數據線連接到GPIO引腳4。另請注意,必須使用10K電阻器拉動電路圖中所示的高電平數據。

您可以按照上面的電路圖進行連接,也可以使用引腳表跟進 GPIO 引腳編號。

poYBAGNqFviAFzXmAACdZFT2UWU031.png

我使用單股線和公對母線在面包板上構建電路以進行連接。如您所見,傳感器只需要一根電線即可連接,因此占用的空間和引腳更少。建立所有連接后,我的硬件如下所示。現在是時候啟動 pi 并開始編程了。

pYYBAGNqFvqACjiuAACrk0YQhHc554.jpg

在樹莓P上安裝Adafruit LCD庫

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

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

apt-get install git

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

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

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

cd Adafruit_Python_CharLCD

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

sudo python setup.py install

也就是說,庫應該已成功安裝。現在同樣,讓我們繼續安裝同樣來自Adafruit的DHT庫。

在 Pi 中啟用單線接口

由于DS18B20傳感器通過單線方式通信,因此必須按照以下步驟在Pi上啟用單線通信。

第 1 步:-打開命令提示符并使用以下命令打開配置文件

sudo nano /boot/config.txt

第 2 步:-在配置文件中添加行“dtoverlay=w1-gpio”(在下圖中包圍)并保存文件,如下所示

pYYBAGNqFvyAaEAdAABwlZmAr8Q413.png

第 3 步:-使用 Ctrl+X 退出文件并通過按“Y”保存它,然后按 Enter 鍵。最后使用命令重新啟動 Pi

sudo reboot

第 4 步:-重新啟動后,再次打開終端并輸入以下命令。

sudo modprobe w1–gpio sudo modprobe w1-therm. cd /sys/bus/w1/devices ls

您的終端窗口將顯示如下內容

poYBAGNqFv2ANivQAAAxrncnN8s872.png

第 5 步:-在步驟 4 結束時,當您輸入 ls 時,您的 pi 將顯示一個唯一的數字,該數字對于每個用戶來說都是不同的,具體取決于傳感器,但始終以 28- 開頭。就我而言,號碼是28-03172337caff。

第 6 步:-現在我們可以通過輸入以下命令來檢查傳感器是否正常工作

cd 28-XXXXXXXXXXXX [use the name of your directory or use Tab key for auto complete)

cat w1_slave

這兩個命令將從傳感器讀取數據并將其顯示在終端上,如下所示。下圖中的溫度值用紅色包圍。在我的情況下,溫度值為37 * C。

poYBAGNqFv-Afz1AAAA_IO27ybM322.png

為 DS18B20 傳感器編程樹莓派

現在,我們的Pi已準備好針對LCD進行編程并使用單線協議。因此,我們可以編寫最終程序,從DS18B20傳感器讀取溫度值并將其顯示在LCD屏幕上。本頁末尾給出了執行相同操作的完整 python 程序。但是,下面我將代碼分成有意義的小片段來解釋它們。

與往常一樣,我們通過導入程序所需的頭文件來開始程序。這里我們導入時間處理延時功能,LCD接頭使用LCD與Pi。操作系統標頭用于處理操作系統中的文件。

import time #import time for creating delay

import Adafruit_CharLCD as LCD #Import LCD library

import os #Import for file handling

import glob #Import for global

接下來我們必須提到連接到樹莓派引腳的LCD引腳。使用上面提供的 GPIO 引腳圖了解各個 GPIO 引腳的引腳號。一旦我們聲明了LCD連接到哪些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后,我們在LCD上打印示例文本消息。字符“n”用于提及換行符。顯示介紹后,我們引入了 2 秒的延遲,供用戶閱讀介紹消息。

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

time.sleep(2) #wait for 2 secs

現在,如果您能回憶起使用 Pi 啟用單線接口的步驟 4。我們必須重復相同的代碼行,因此我們使用 os.system 函數來執行相同的行。然后我們指定必須從中讀取溫度值的文件位置。device_folder變量指向以“28-”開頭的文件夾,因為我們不知道文件夾的確切名稱,我們使用 * 符號打開以 28 開頭的任何內容。最后,在該文件夾中,我們使用另一個名為device_file的變量,該變量實際上指向內部具有溫度值的文件。

然后我們使用名為 get_temp 的函數,在其中我們定義從我們在上述步驟中剛剛鏈接的文件中讀取溫度的過程。正如我們之前與終端檢查的那樣,該文件內部將包含溫度值,但它將采用以下格式

pYYBAGNqFwCAM372AAAmXGMvzqE517.png

由此我們只需要 37000 的值,即溫度值。這里的實際溫度值是37.00*C。因此,從這種文本格式中,我們必須修剪所有無用的數據并得到整數值 37000,最后將其除以 1000以獲得實際數據。下面顯示的函數完全相同

def get_temp(): #Fundtion to read the value of Temperature

file = open(device_file, 'r') #opent the file

lines = file.readlines() #read the lines in the file

file.close() #close the file

trimmed_data = lines[1].find('t=') #find the "t=" in the line

if trimmed_data != -1:

temp_string = lines[1][trimmed_data+2:] #trim the strig only to the temoerature value

temp_c = float(temp_string) / 1000.0 #divide the value of 1000 to get actual value

return temp_c #return the value to print on LCD

變量行用于讀取文件內的行。然后比較這些行,搜索字母“t=”,并將該字母后面的值保存在變量temp_string中。最后,為了獲得溫度值,我們使用變量temp_c將字符串值除以 1000。最后返回函數的結果temp_c變量。

在無限 while 循環中,我們只需要調用上面定義的函數即可獲取溫度值并將其顯示在 LCD 屏幕上。我們還每 1 秒清除一次 LCD 以顯示更新的值。

while 1: #Infinite Loop

lcd.clear() #Clear the LCD screen

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

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

輸出/工作

與往常一樣,完整的python代碼在頁面末尾給出,請使用代碼并在Raspberry Pi上編譯它。按照電路圖中所示進行連接,在執行程序之前,請確保已按照上述步驟安裝LCD頭文件并在pi上啟用單線通信。完成后,只需執行程序,如果一切按預期工作,您應該能夠注意到介紹文本。如果沒有,請調整對比度電位器,直到看到一些東西。最終結果如下所示。

poYBAGNqFwKAdP5rAACoK93UO3E476.jpg

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


import time #import time for creating delay

import Adafruit_CharLCD as LCD #Import LCD library

import os #Import for file handling

import glob #Import for global





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('DS18B20 with Pi n -CircuitDigest') #Give a intro message



time.sleep(2) #wait for 2 secs





os.system('modprobe w1-gpio')

os.system('modprobe w1-therm')



base_dir = '/sys/bus/w1/devices/'

device_folder = glob.glob(base_dir + '28*')[0]

device_file = device_folder + '/w1_slave'





def get_temp(): #Fundtion to read the value of Temperature

file = open(device_file, 'r') #opent the file

lines = file.readlines() #read the lines in the file

file.close() #close the file



trimmed_data = lines[1].find('t=') #find the "t=" in the line



if trimmed_data != -1:

temp_string = lines[1][trimmed_data+2:] #trim the strig only to the temoerature value

temp_c = float(temp_string) / 1000.0 #divide the value of 1000 to get actual value

return temp_c #return the value to prnt on LCD







while 1: #Infinite Loop



lcd.clear() #Clear the LCD screen

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



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


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

    關注

    48

    文章

    2918

    瀏覽量

    155899
  • DS18B20
    +關注

    關注

    10

    文章

    778

    瀏覽量

    80716
  • 樹莓派
    +關注

    關注

    116

    文章

    1699

    瀏覽量

    105536
收藏 人收藏

    評論

    相關推薦

    基于STM32的DS18B20溫度傳感器設計

    DS18B20內置了64位產品序列號,方便識別身份,在一根線上可以掛接多個DS18B20傳感器,通過64位身份驗證,可以分別讀取來至不同傳感器采集的
    的頭像 發表于 03-07 11:44 ?1.3w次閱讀
    基于STM32的<b class='flag-5'>DS18B20</b><b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>設計

    樹莓Pico上使用DS18B20溫度傳感器

    DS18B20 溫度傳感采用單總線的接口方式,與微處理連接時僅需要一條口線即可實現微處理
    的頭像 發表于 11-21 14:21 ?1327次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>Pico上使用<b class='flag-5'>DS18B20</b><b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>

    DS18B20溫度傳感器實驗

    STM32學習記錄:DS18B20溫度傳感器實驗(HAL庫)實驗摘要DS18B20簡述STMCubeMX引腳配置芯片選型引腳和時鐘配置生成ARM-MDK工程編寫
    發表于 08-18 07:44

    DS18B20溫度傳感器與MCU是如何連接

    DS18B20是什么?DS18B20溫度傳感器的技術特性有哪些?DS18B20溫度
    發表于 09-27 09:10

    數字溫度傳感器DS18B20的設計及應用

    數字溫度傳感器DS18B20的設計及應用 1引言 DS18B20是DALLAS公司生產的一線式數字溫度
    發表于 04-02 18:00 ?2789次閱讀
    數字<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b><b class='flag-5'>DS18B20</b>的設計及應用

    DS18B20完成溫度檢測的技巧

    介紹了DS18B20 溫度傳感器 的結構和特點以及用DS18B20溫度傳感器進行
    發表于 08-23 10:44 ?190次下載
    <b class='flag-5'>DS18B20</b>完成<b class='flag-5'>溫度</b>檢測的技巧

    DS18B20 測溫模塊_溫度傳感器模塊

    ds18b20溫度傳感器資料 測試程序 連接圖 要的過來
    發表于 12-08 11:06 ?16次下載

    溫度傳感器DS18B20

    溫度傳感器DS18B20 51例程,親測可用
    發表于 06-14 15:36 ?20次下載

    智能溫度傳感器DS18B20的原理與應用

    DS18B20是DALLAS公司生產的單線數字溫度傳感器,他具有獨特的單線總線接口方式。文章詳細的介紹了單線數字溫度傳感器
    發表于 10-11 18:19 ?48次下載

    ds18b20的特性_ds18b20溫度傳感器應用

    本文首先介紹了ds18b20的特性,其次介紹了DS18B20工作原理,最后介紹了ds18b20溫度傳感器應用。
    發表于 04-24 09:10 ?1.1w次閱讀
    <b class='flag-5'>ds18b20</b>的特性_<b class='flag-5'>ds18b20</b><b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>應用

    如何將DS18B20數字溫度傳感器與Arduino結合使用

    電子發燒友網站提供《如何將DS18B20數字溫度傳感器與Arduino結合使用.zip》資料免費下載
    發表于 02-07 15:05 ?1次下載
    <b class='flag-5'>如何將</b><b class='flag-5'>DS18B20</b>數字<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>與Arduino結合使用

    ds18b20溫度傳感器如何使用

    DS18B20是一款廣泛使用的數字溫度傳感器,它具有高精度、低功耗和易于使用的特點。 DS18B20溫度
    的頭像 發表于 09-03 16:51 ?544次閱讀

    ds18b20溫度傳感器怎么接線

    DS18B20是一種廣泛使用的數字溫度傳感器,它基于1-Wire(一線)通信協議工作。這種傳感器因其高精度、易用性和低成本而受到歡迎。 DS18B2
    的頭像 發表于 10-18 14:50 ?788次閱讀

    ds18b20傳感器的使用方法

    Integrated開發的一種數字溫度傳感器,它能夠提供9位到12位的溫度測量精度,測量范圍從-55°C到+125°C。這種傳感器非常適合用于需要精確
    的頭像 發表于 10-18 14:52 ?457次閱讀

    DS18B20溫度傳感器的工作原理和硬件設計

    通過本文可以了解DS18B20溫度傳感器工作原理、硬件設計、DS18B20單總線接口驅動編寫。
    的頭像 發表于 10-24 14:38 ?826次閱讀
    <b class='flag-5'>DS18B20</b><b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>的工作原理和硬件設計