一、树莓派是什么
树莓派是一款基于ARM的微型电脑主板,系统基于Linux,以MicroSD卡为磁盘,树莓派主板有4个USB接口,一个以太网接口,一个3.5mm音频口,一个HDMI视频接口,40-pin的GPIO连接端口
https://www.raspberrypi.org/products/
二、树莓派可以干什么
- 可以当做一个微型服务器,作为FTP文件服务器、网站服务器、代码托管等
- 游戏机(刷入游戏模拟器系统,可玩大部分复古游戏)https://www.jianshu.com/p/feffa629084a
- 遥控车(手机通过socket连接控制小车,且小车装有红外线传感器,可以自动避障),
- 可以结合其他传感器搭建智能家居
三、DHT11温湿度传感器
价格便宜,体积小,功耗低,缺点是精度不高
有四个针脚:正极、负极、串行数据总线、空脚
DHT11温湿度传感器数据读取原理
代码:
__author__ = 'DuShu'
import time
import RPi.GPIO as GPIO
def getIntVal(binayList):
idx = 0
binaryStr = ''
while idx < len(binayList):
binaryStr += str(binayList[idx])
idx += 1
return int(binaryStr ,2)
def getHumidity():
GPIO_DATA = 18
GPIO_HIGH = GPIO.HIGH
GPIO_LOW = GPIO.LOW
GPIO.setmode(GPIO.BCM)
#一秒后开始工作
time.sleep(1)
#设置GPIO接口为输出数据模式
GPIO.setup(GPIO_DATA,GPIO.OUT)
#输出一个低电平信号
GPIO.output(GPIO_DATA, GPIO.LOW)
time.sleep(0.02) #0.018
#0.02秒后输出一个高电平信号,启动模块测量
GPIO.output(GPIO_DATA, GPIO.HIGH)
#设置GPIO接口为读取读取数据模式
GPIO.setup(GPIO_DATA,GPIO.IN)
#等待,获取到高电平信号
while GPIO.input(GPIO_DATA) == GPIO_HIGH:
pass
#等待,获取到低电平信号
while GPIO.input(GPIO_DATA) == GPIO_LOW:
pass
#获取到高底电平信号后,开始读取模块获取数据
data = []
cnt = 40
dataArr = []
while cnt > 0:
cnt = cnt - 1
while GPIO.input(GPIO_DATA) == GPIO_LOW:
pass
k = 0
while GPIO.input(GPIO_DATA) == GPIO_HIGH:
k += 1
if k > 100:
break
dataArr.append(k)
if k < 10:
data.append(0)
else:
data.append(1)
print(dataArr)
#根据公式定义,解析温湿度数据
val1 = getIntVal(data[0:8])
val2 = getIntVal(data[8:16])
val3 = getIntVal(data[16:24])
val4 = getIntVal(data[24:32])
val5 = getIntVal(data[32:40])
if (val5 == val1 + val2 + val3 + val4):
return [val1, val3]
else:
return [-1, -1]
GPIO.cleanup()
if __name__ == '__main__':
hum = getHumidity()
print("hum:", hum[0], " temp:", hum[1])
四、参考
https://blog.csdn.net/guyang1995/article/details/54692810 https://zhuanlan.zhihu.com/p/74440206