raspberry (四)溫濕度感測器DHT11

2021-08-03 04:59:30 字數 2111 閱讀 8825

這個感測器的埠也比較簡單:vcc、gnd和data,這個資料訊號其實就是gpio模式的輸入埠,vcc:3.3v

軟體**實現,python

#!/usr/bin/env python

import rpi.gpio as gpio

import time

pin_data = 2

data =

j = 0

gpio.setmode(gpio.bcm)

time.sleep(1)

gpio.setup(pin_data,gpio.out)

gpio.output(pin_data, gpio.low)

time.sleep(0.02)

gpio.output(pin_data, gpio.high)

gpio.setup(pin_data,gpio.in)

while gpio.input(pin_data) == gpio.low:

continue

while gpio.input(pin_data) == gpio.high:

continue

while j < 40:

k = 0

while gpio.input(pin_data) == gpio.low:

continue

while gpio.input(pin_data) == gpio.high:

k += 1

if k > 100:

break

j += 1

print "sensor is work"

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,",humidity: ", humidity

else:

print "wrong"

print "temperature :",temperature,",humidity: ", humidity,",check: ", check,",tmp:",tmp

gpio.cleanup()

實現情況,輸出結果如下

oksensor is work

[0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1]

temperature : 25 ,humidity:  62

連線電路圖

溫濕度感測器採集

軟體 keil firetool助手 硬體 stm32核心板,溫濕度感測器,st link燒錄器,ttl轉usb模組 首先保證程式編譯通過,電腦連線stm32核心板 核心板連線溫濕度感測器 st link燒錄器 ttl轉usb模組 預設電腦已安裝st link驅動 設定keil相關引數,參考 最後燒...

溫濕度感測器採集

硬體i2c 對應晶元上的i2c外設,有相應的i2c驅動電路,其所使用的i2c管腳也是專用的,因而效率要遠高於軟體模擬的i2c 一般也較為穩定,但是程式較為繁瑣。硬體i2c是直接呼叫內部暫存器進行配置 而軟體i2c是沒有暫存器這個概念的。軟體i2c 一般是使用gpio管腳,用軟體控制scl,sda線輸...

溫濕度感測器採集

1 什麼是i2c協議 i2c 通訊協議 inter integrated circuit 是由 phiilps 公司開發的,由於它引腳少,硬體實現簡單,可擴充套件性強,不需要 usart can 等通訊協議的外部收發裝置,現在被廣泛地使用在系統內多個積體電路 ic 間的通訊。2 i2c 協議的物理層...