這個感測器的埠也比較簡單: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 協議的物理層...