新聞中心
樹(shù)莓派如何控制溫濕度傳感器DHT11,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
成都創(chuàng)新互聯(lián)公司主營(yíng)灌南網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,APP應(yīng)用開(kāi)發(fā),灌南h5微信小程序開(kāi)發(fā)搭建,灌南網(wǎng)站營(yíng)銷(xiāo)推廣歡迎灌南等地區(qū)企業(yè)咨詢(xún)
小π因?yàn)楹脦状螖嚯娭皼](méi)有關(guān)掉系統(tǒng),導(dǎo)致系統(tǒng)老是起不來(lái)。無(wú)奈只好重寫(xiě)了SD卡。裝好后前天晚上把一個(gè)溫濕度傳感器(DHT11)接到了小π上,順利讀出數(shù)據(jù)來(lái)了。廢話(huà)不多說(shuō)了,進(jìn)入正題:
首先,簡(jiǎn)單介紹下DHT11:
DHT11是一個(gè)溫濕度傳感器,分為3個(gè)接口,分別為:
VCC
,DATA
,GND
引腳號(hào) 名稱(chēng) 類(lèi)型 說(shuō)明 1 VCC 電源 +級(jí),輸入3V-5.5V 2 DATA 數(shù)據(jù)輸出 輸出引腳 3 GND 接地 接地引腳 配一個(gè)
DHT11
的圖片:DHT11說(shuō)明書(shū)200808修訂版.pdf
之前看網(wǎng)上說(shuō),需要在DHT11
VCC
和DATA
之間加一個(gè)電阻,經(jīng)試驗(yàn)完全不需要。引腳連接:
關(guān)于樹(shù)莓派二代的引腳可以看下上篇Blog:樹(shù)莓派控制有源蜂鳴器
VCC
接上3V3
,可以選擇1
口或者17
口DATA
接上GPIO
口,我選的是GPIO4
,第7
口GND
接上接地口
,我選的是第14
口Python獲取溫濕度:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #!/usr/bin/python import RPi.GPIO as GPIO import time channel =4 //GPIO4 data = [] j = 0 GPIO.setmode(GPIO.BCM) time.sleep(1) GPIO.setup(channel, GPIO.OUT) GPIO.output(channel, GPIO.LOW) time.sleep(0.02) GPIO.output(channel, GPIO.HIGH) GPIO.setup(channel, GPIO.IN) while GPIO.input(channel) == GPIO.LOW: continue while GPIO.input(channel) == GPIO.HIGH: continue while j < 40: k = 0 while GPIO.input(channel) == GPIO.LOW: continue while GPIO.input(channel) == GPIO.HIGH: k += 1 if k > 100: break if k < 8: data.append(0) else: data.append(1) j += 1 print "sensor is working." print data humidity_bit = data[0:8] humidity_point_bit = data[8:16] temperature_bit = data[16:24] temperature_point_bit = data[24:32] check_bit = data[32:40] humidity = 0 humidity_point = 0 temperature = 0 temperature_point = 0 check = 0 for i in range(8): humidity += humidity_bit[i] * 2 ** (7-i) humidity_point += humidity_point_bit[i] * 2 ** (7-i) temperature += temperature_bit[i] * 2 ** (7-i) temperature_point += temperature_point_bit[i] * 2 ** (7-i) check += check_bit[i] * 2 ** (7-i) tmp = humidity + humidity_point + temperature + temperature_point if check == tmp: print "temperature :", temperature, "*C, humidity :", humidity, "%" else: print "wrong" print "temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp GPIO.cleanup() |
展示結(jié)果:
1 2 3 4 | root@raspberrypi:/data/basedata# python/dht11.py sensor is working. [0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0] temperature : 20 *C, humidity : 38 % |
為了測(cè)試結(jié)果是否準(zhǔn)確,我把手指放到傳感器上,測(cè)試的數(shù)據(jù)為:
1 2 3 4 5 | root@raspberrypi:/data/basedata/python# python dht11.py sensor is working. [0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1] wrong temperature : 36 *C, humidity : 38 % |
確認(rèn)正確~
備注: 如果你用的是DS18B20
,需要做以下動(dòng)作:
1 2 3 4 5 6 7 | root@raspberrypi:/# apt-get update root@raspberrypi:/# apt-get upgrade #更新內(nèi)核 root@raspberrypi:/# reboot root@raspberrypi:/# vi /boot/config.txt #在最后一行手動(dòng)添加:dtoverlay=w1-gpio-pullup,gpiopin=4 來(lái)支持新系統(tǒng)讀取w1總線(xiàn)設(shè)備 root@raspberrypi:/# modprobe w1-gpio #確認(rèn)設(shè)備是否生效 root@raspberrypi:/# modprobe w1-therm root@raspberrypi:/# cd /sys/bus/w1/devices/ |
關(guān)于樹(shù)莓派如何控制溫濕度傳感器DHT11問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
分享文章:樹(shù)莓派如何控制溫濕度傳感器DHT11
本文URL:http://www.ef60e0e.cn/article/jsjdie.html