Raspberry Pi 使用DS18B20溫度傳感器

DS18B20 溫度傳感器

最近心血來潮的想要折騰raspberry,因此就買了一堆的傳感器,如今主要講解溫度傳感器的使用。python

![屏幕快照 2017-05-29 下午10.31.39](http://7xrkms.com1.z0.glb.clouddn.com/屏幕快照 2017-05-29 下午10.31.39.png)vim

Pin1(GND)接到 P1-06(GND) Pin2(DQ)接到 P1-07(GPIO4) Pin3(VCC)接到P1-01(3.3v)命令行

爲了可以讓系統正確的識別傳感器,咱們須要對**/boot/config.txt**文件進行編輯code

sudo vim /boot/config.txtorm

在文件的未必添加下面的語句ip

dtoverlay=w1-gpio,gpiopin=4get

添加完成以後咱們重啓raspberryit

sudo rebootio

重啓完成以後咱們須要進行/sys/bus/w1/devices目錄form

cd /sys/bus/w1/devices

經過調用ls命令,咱們發現這個目錄會有相似28-0416b3b833ff這樣的一個目錄,這個目錄名稱並是你傳感器的ID,.在目錄下面會有一個w1_slave文件,咱們經過調用 cat命令能夠讀取到傳感器的實時數據。

cd 28-0416b3b833ff ls cat w1_slave

完整的命令以下圖所示 ![屏幕快照 2017-05-29 下午10.42.01](http://7xrkms.com1.z0.glb.clouddn.com/屏幕快照 2017-05-29 下午10.42.01.png) 其中t=30312是我實際測量到溫度值,在上面的圖中的溫度爲30.312度

同時咱們能夠利用python腳原本讀取數據

#!/usr/bin/python
def gettemp(id):
  try:
    mytemp = ''
    filename = 'w1_slave'
    f = open('/sys/bus/w1/devices/' + id + '/' + filename, 'r')
    line = f.readline() # read 1st line
    crc = line.rsplit(' ',1)
    crc = crc[1].replace('\n', '')
    if crc=='YES':
      line = f.readline() # read 2nd line
      mytemp = line.rsplit('t=',1)
    else:
      mytemp = 99999
    f.close()
 
    return int(mytemp[1])
 
  except:
    return 99999
 
if __name__ == '__main__':
 
  # Script has been called directly
  id = '28-0416b3b833ff'
  print "Temp : " + '{:.3f}'.format(gettemp(id)/float(1000))

咱們經過命令行調用,獲得如相似下面的結果

![屏幕快照 2017-05-29 下午10.48.50](http://7xrkms.com1.z0.glb.clouddn.com/屏幕快照 2017-05-29 下午10.48.50.png)

相關文章
相關標籤/搜索