基于树莓派、温度传感器dh11简单的风扇控制
时间:2022-11-30 08:00:00
在开始写文章之前,简单地说,作为一个小白人文明来学习覆盆子派。一开始,我对覆盆子派一无所知,更不用说使用传感器了。但尽管如此,你仍然必须下学,你必须继续百度,看别人的东西,慢慢积累更多,你会对覆盆子派有一定的了解。
在开始这个实验之前,我建议你掌握以下软件的使用方法。winscp、putty会了这两个软件,你不懂linux没关系。
接下来,让我们开始我们的实验
准备准备实验材料
温度传感器 DH11 一个
树莓派3B 一个
继电器 一个
小风扇 一个
2.你应该对树莓派引脚有所了解
输入树莓派pinout你可以看到树莓派的引脚(如果树莓派本身的引脚不够,你可以在后期添加面包板来扩展树莓派的引脚)如下图所示:
3.了解继电器
4.所有物理器件的物理连接
这里使用的继电器5v因此,输入电压不应大于5v。我在这里用树莓派供电(是的,但最好不要这样做)。最好用变压器使用220v转换为5v供电。由于连接相对简单,所以慢慢研究其他连接方法。
5、用winscp将代码烧入树莓派
将写好的代码直接从左拖到右,然后成功地将写好的代码烧进去。
运行您的代码
pyhton wss.py
# -*- coding: utf-8 -*- #!/usr/bin/python import RPi.GPIO as GPIO import time while True: print("shuchu") channel = 21 #引脚号16 channel1 = 19 data = [] #温湿度值 j = 0 #计数器 GPIO.setmode(GPIO.BCM) #以BCM编码格式 time.sleep(1) #时延一秒 GPIO.setup(channel, GPIO.OUT) GPIO.setup(channel1,GPIO.OUT) GPIO.output(channel, GPIO.LOW) time.sleep(0.02) 信号提示传感器开始工作 GPIO.output(channel, GPIO.HIGH) GPIO.setup(channel, GPIO.IN) print("11112222") 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, ", humidity : " , humidity if temperature>=24: print("打开风扇") GPIO.output(channel1,GPIO.HIGH) else: print("关闭风扇") GPIO.output(channel1,GPIO.LOW) else: #错误输出错误信息,和校验数据 print "wrong" print "temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp time.sleep(1) #GPIO.cleanup()
7运行结果如下