[玩轉(zhuǎn)樹莓派] 0x06 DS18B20溫度傳感器

[TOC]

[玩轉(zhuǎn)樹莓派] DS18B20溫度傳感器

Raspberry connect to DS18B20

0x00 DS18B20

需要一個能測量水溫的溫度計(jì)粉私,淘寶買了高逼格的紅外溫槍柴信,到手后發(fā)現(xiàn)這鬼東西不能測金屬杯里的水溫(好的太貴)忧额。然后又淘寶了下毅臊,一個電子溫度計(jì)都賣三位數(shù),好吧轧邪,我窮…… 忽然想起手上有一個 DS18B20最易,嗯嗯,拿出來自己做一個溫度計(jì)吧~~

DS18B20 這個傳感器很常見粒没,某寶上一搜一購物車筛婉,價格5到10元不等,當(dāng)然也有更好的癞松,按需購買爽撒,大概參數(shù)如下

  • 獨(dú)特的1-Wire總線接口僅需要一個管腳來通信。
  • 每個設(shè)備的內(nèi)部ROM上都燒寫了一個獨(dú)一無二的64位序列號响蓉。
  • 多路采集能力使得分布式溫度采集應(yīng)用更加簡單硕勿。
  • 無需外圍元件。
  • 能夠采用數(shù)據(jù)線供電厕妖;供電范圍為3.0V至5.5V首尼。
  • 溫度可測量范圍為:-55℃至+125℃(-67℉至+257℉)。
  • 溫度范圍超過-10℃至85℃之外時具有+-0.5℃的精度言秸。(懷疑有誤)
  • 內(nèi)部溫度采集精度可以由用戶自定義為9-Bits至12-Bits软能。
  • DS18B20 分辨率可編程 1-Wire數(shù)字溫度傳感器
  • 溫度轉(zhuǎn)換時間在轉(zhuǎn)換精度為12-Bits時達(dá)到最大值750ms。
  • 用戶自定義非易失性的的溫度報警設(shè)置举畸。 · 定義了溫度報警搜索命令和當(dāng)溫度超過用戶自定義的設(shè)定值時查排。
  • 可選擇的8-Pin SO (150 mils), 8-PinμSOP,及3-Pin TO-92封裝抄沮。 · 與DS1822程序兼容跋核。
  • 應(yīng)用于溫度控制系統(tǒng),工業(yè)系統(tǒng)叛买,民用產(chǎn)品砂代。

嗯嗯,很多技術(shù)參數(shù)率挣,作為外行人看著就暈刻伊。這里關(guān)注幾個細(xì)節(jié)就好:

  • 電壓:3.0V~5.5V
  • 溫度范圍:-55℃至+125℃
  • 測量精度:可調(diào),0.5℃對我來說可接受椒功,所以暫時沒去細(xì)究

接下來結(jié)合我的樹莓派的板子捶箱,給大家演示如何使用。

0x01 使用

首先按照網(wǎng)上的方法动漾,比如vvbbbbb丁屎,一步步操作,難免遇到一些坑旱眯,我的問題是怎么都不能識別這個傳感器晨川,后來找了很久,無意中解決了删豺,結(jié)合我的實(shí)際础爬,做簡單記錄,具體操作如下:

  • 連接傳感器和Raspberry Pi

    DS18B20 有三個針腳吼鳞,分別是

    • VCC 紅色看蚜,連 Raspberry Pi 的 VCC,測試連接 3V3 或 5V5 都可以
    • DATA 黃色赔桌,連 Raspberry Pi 的 GPIO4
    • GND 黑色供炎,連 Raspberry Pi 的 GND

    另外和需要在用一個 4.7K 的電阻連接 VCC 和 DATA (別問我為什么,我也不知道疾党,大學(xué)模電學(xué)的那叫一個渣)音诫,如果你沒有 4.7K 的電阻,聽說大一點(diǎn)或者小一點(diǎn)都可以雪位,我沒試竭钝,反正我有。如果你連電阻都沒有,告訴你某寶上有打包一袋出售的香罐,常用阻值的都有卧波,很便宜,值得你入手庇茫。好了港粱,最終電路如圖:

ds18b20
  • 操作

    1. 更新系統(tǒng)

      如果你的系統(tǒng)版本比較舊,建議你更新旦签,否則跳過這一步:

      sudo apt-get update
      sudo apt-get upgrade
      

      更新速度視你的網(wǎng)速和源的速度查坪,怎么切換源,可以參考我之前的文章宁炫。

    2. 啟用 1-Wire

      • 終端執(zhí)行 sudo raspi-config偿曙,打開配置界面,找到 1-Wire(我的位于Interfacing Option 下羔巢,不同版本不一樣遥昧,有的可能在 Advanced Options 下)啟用它。

      • 你也可以直接配置:編輯 /boot/config.txt 朵纷,在最后一行添加 dtoverlay=w1-gpio 保存即可炭臭。

        1. 終端輸入:sudo nano /boot/config.txt
        2. Ctrl+V 滾到最下面,輸入 dtoverlay=w1-gpio
        3. Ctrl+O 保存袍辞,Ctrl+X 退出

      兩個方法結(jié)果一樣鞋仍,操作完成之后需要重啟機(jī)器,命令:sudo reboot

    3. 查看你的傳感器

pi@raspberrypi:~ $ cd /sys/bus/w1/devices
pi@raspberrypi:/sys/bus/w1/devices $ ls
28-031561d43aff w1_bus_master1
pi@raspberrypi:/sys/bus/w1/devices $ cat 28-031561d43aff/w1_slave
48 01 01 01 1f ff 0c 10 04 : crc=04 YES
48 01 01 01 1f ff 0c 10 04 t=20500
pi@raspberrypi:/sys/bus/w1/devices $
```

    先查看 `w1` 設(shè)備列表搅吁,然后查看里面的 `w1_slave` 文件內(nèi)容威创,即可顯示出溫度信息(這個溫度信息并不是我們最終的溫度,需要經(jīng)過一定的換算)谎懦。
    
    `前方高能`
    `前方填坑`
    
    嗯嗯肚豺,坑出現(xiàn)了,我的在查看傳感器的時候顯示如下:
    
    ``` shell

pi@raspberrypi:~$ cd /sys/bus/w1/devices/
pi@raspberrypi:/sys/bus/w1/devices $ ls
00-600000000000 00-a00000000000 00-e00000000000 w1_bus_master1
pi@raspberrypi:/sys/bus/w1/devices $
```

    網(wǎng)上看到的都是 `28-xxxxxxxxxxxxxx` 這樣的信息界拦,而我的卻不是吸申;這些目錄下也沒有 `w1_slave`文件;而且每次進(jìn)這個目錄 `/sys/bus/w1/devices` 這些文件夾的名字和數(shù)量都有可能會變享甸。好吧截碴,懵逼了。所以去找答案蛉威,果然也有一些人反應(yīng)過這個問題日丹,但大部分對我都沒用,比如 VCC 從 3V3 換到 5V5 蚯嫌,看看時間哲虾,又快12點(diǎn)了丙躏,想放棄了都。此時[佛光乍現(xiàn)](https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=106041):可能是 `GPIO` 口的問題束凑,可以換一個試試晒旅,一試果然很爽,操作如下:
    
    編輯 `/boot/config.txt`湘今,將剛才添加的那行修改如下 `dtoverlay=w1-gpio,gpiopin=5,pullup=on` 這里的 `5` 是對應(yīng)的GPIO口敢朱,你也可以用其他的剪菱,高興就好摩瞎。保存重啟即可。
    
3. 查看溫度數(shù)據(jù)

    ``` shell

pi@raspberrypi:/sys/bus/w1/devices $ cat 28-031561d43aff/w1_slave
48 01 01 01 1f ff 0c 10 04 : crc=04 YES
48 01 01 01 1f ff 0c 10 04 t=20500
pi@raspberrypi:/sys/bus/w1/devices $
```

    這里的 `t=20500` 應(yīng)該就是溫度數(shù)據(jù)孝常,不知道 `crc=40` 是不是校驗(yàn)數(shù)據(jù)旗们,不管了,我也沒時間去計(jì)算构灸。網(wǎng)上肯定有現(xiàn)成的輪子來展示上渴,這里推薦 [w1thermsensor](https://github.com/timofurrer/w1thermsensor)。
    
    - 安裝

        `pip install w1thermsensor`
    
    - 使用(ds18b20.py)
        
        ``` python

from w1thermsensor import W1ThermSensor
sensor = W1ThermSensor(W1ThermSensor.THERM_SENSOR_DS18B20, "031561d43aff")
while True:
temperature_in_celsius = sensor.get_temperature()
print temperature_in_celsius
```

        這里的一個常量 `031561d43aff` 就是 `28-031561d43aff` 這里的后半部分喜颁,你的可能跟我不一樣稠氮,請改成你自己看到的。
        
        執(zhí)行:
        
        ``` python

pi@raspberrypi:~/python $ cat ds18b20.py
from w1thermsensor import W1ThermSensor
sensor = W1ThermSensor(W1ThermSensor.THERM_SENSOR_DS18B20, "031561d43aff")
while True:
temperature_in_celsius = sensor.get_temperature()
print temperature_in_celsius
pi@raspberrypi:~/python $ python ds18b20.py
21.0
21.0
```

完美~

Create by ttdevs
Create by ttdevs

參考:

1半开、https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
2隔披、http://www.wendangku.net/doc/529cf93fc281e53a5802fff5.html
3、http://blog.csdn.net/vvbbbbb/article/details/52053293
4寂拆、https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=106041

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奢米,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子纠永,更是在濱河造成了極大的恐慌鬓长,老刑警劉巖搬瑰,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件选酗,死亡現(xiàn)場離奇詭異,居然都是意外死亡祟峦,警方通過查閱死者的電腦和手機(jī)炭序,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門怠蹂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人少态,你說我怎么就攤上這事城侧。” “怎么了彼妻?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵嫌佑,是天一觀的道長豆茫。 經(jīng)常有香客問我,道長屋摇,這世上最難降的妖魔是什么揩魂? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮炮温,結(jié)果婚禮上火脉,老公的妹妹穿的比我還像新娘。我一直安慰自己柒啤,他們只是感情好倦挂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著担巩,像睡著了一般方援。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涛癌,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天犯戏,我揣著相機(jī)與錄音,去河邊找鬼拳话。 笑死先匪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弃衍。 我是一名探鬼主播呀非,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笨鸡!你這毒婦竟也來了姜钳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤形耗,失蹤者是張志新(化名)和其女友劉穎哥桥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體激涤,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拟糕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了倦踢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片送滞。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辱挥,靈堂內(nèi)的尸體忽然破棺而出犁嗅,到底是詐尸還是另有隱情,我是刑警寧澤晤碘,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布褂微,位于F島的核電站功蜓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宠蚂。R本人自食惡果不足惜式撼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望求厕。 院中可真熱鬧著隆,春花似錦、人聲如沸呀癣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽十艾。三九已至抵代,卻和暖如春腾节,著一層夾襖步出監(jiān)牢的瞬間忘嫉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工案腺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庆冕,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓劈榨,卻偏偏與公主長得像访递,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子同辣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容