库
import pyb
from pyb import UART
from pyb import Pin
import time
class DHT11:
def __init__(self,pin_name):
time.sleep(1)
self.N1 = Pin(pin_name, Pin.OUT_PP)
self.PinName=pin_name
pyb.delay(10)
def read_data(self):
self.__init__(self.PinName)
data=[]
j=0
N1=self.N1
N1.low()
time.sleep(0.03)
N1.high()
N1 = Pin(self.PinName, Pin.IN)
while N1.value()==1:
continue
while N1.value()==0:
continue
while N1.value()==1:
continue
while j<40:
k=0
while N1.value()==0:
continue
while N1.value()==1:
k+=1
if k>100:break
if k<3:
data.append(0)
else:
data.append(1)
j=j+1
print('Sensor is working')
j=0
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 is',temperature,'-wet is',humidity,'%')
else:
print('Error:',humidity,humidity_point,temperature,temperature_point,check)
return [str(temperature),str(humidity)]
主程序
import pyb
from pyb import UART
from pyb import Pin
from ubinascii import hexlify
from ubinascii import *
from dht11 import DHT11#定义温湿度传感器的库
ulan = UART(6, 115200 , timeout = 100)#定义串口,我的网口设置了115200的波特率
K=1
#*******************************主程序**********************************
print('while')
while (K>0):
#init DHT11
dht=DHT11('Y11')
data_=dht.read_data()#读取温湿度的值
temp=str(data_[0])#温度
hum=str(data_[1])#湿度
print('temp:'+temp)
print('hum:'+hum)
ulan.write('temperature is:'+temp+'\r\n')#上传温度
pyb.delay(2000)#做延时是为了让给模拟服务器一个反应时间
ulan.write('wet is:'+hum+'%'+'\r\n')#上传湿度
pyb.delay(10000)