中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

樹莓派如何控制溫濕度傳感器DHT11

發布時間:2021-11-19 19:16:08 來源:億速云 閱讀:374 作者:柒染 欄目:互聯網科技

樹莓派如何控制溫濕度傳感器DHT11,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

小π因為好幾次斷電之前沒有關掉系統,導致系統老是起不來。無奈只好重寫了SD卡。裝好后前天晚上把一個溫濕度傳感器(DHT11)接到了小π上,順利讀出數據來了。廢話不多說了,進入正題:

  • 首先,簡單介紹下DHT11:

    DHT11是一個溫濕度傳感器,分為3個接口,分別為:VCCDATAGND

    引腳號名稱類型說明
    1VCC電源+級,輸入3V-5.5V
    2DATA數據輸出輸出引腳
    3GND接地接地引腳

    配一個DHT11的圖片:

    樹莓派如何控制溫濕度傳感器DHT11

    DHT11說明書200808修訂版.pdf

    之前看網上說,需要在DHT11VCCDATA之間加一個電阻,經試驗完全不需要。

  • 引腳連接:

    關于樹莓派二代的引腳可以看下上篇Blog:樹莓派控制有源蜂鳴器

    1. VCC接上3V3,可以選擇1口或者17

    2. DATA接上GPIO口,我選的是GPIO4,第7

    3. 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()
  • 展示結果:

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 %

為了測試結果是否準確,我把手指放到傳感器上,測試的數據為:

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 %

確認正確~

備注: 如果你用的是DS18B20,需要做以下動作:

1
2
3
4
5
6
7
root@raspberrypi:/# apt-get update
root@raspberrypi:/# apt-get upgrade #更新內核
root@raspberrypi:/# reboot
root@raspberrypi:/# vi /boot/config.txt #在最后一行手動添加:dtoverlay=w1-gpio-pullup,gpiopin=4 來支持新系統讀取w1總線設備
root@raspberrypi:/# modprobe w1-gpio #確認設備是否生效
root@raspberrypi:/# modprobe w1-therm
root@raspberrypi:/# cd /sys/bus/w1/devices/

關于樹莓派如何控制溫濕度傳感器DHT11問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滨海县| 高州市| 兰坪| 莎车县| 鲁甸县| 孟州市| 高青县| 大邑县| 宜春市| 永清县| 民乐县| 和龙市| 平定县| 海丰县| 白银市| 塔河县| 广东省| 子长县| 平潭县| 洛隆县| 中超| 七台河市| 湖北省| 麦盖提县| 东至县| 渑池县| 乌兰县| 汤原县| 交口县| 镇平县| 平果县| 聊城市| 调兵山市| 锡林郭勒盟| 钦州市| 浦县| 甘肃省| 镇远县| 衡南县| 松溪县| 霍州市|