10《项目十 冰箱温湿度将测器》题库答案_第1页
10《项目十 冰箱温湿度将测器》题库答案_第2页
10《项目十 冰箱温湿度将测器》题库答案_第3页
10《项目十 冰箱温湿度将测器》题库答案_第4页
10《项目十 冰箱温湿度将测器》题库答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

------《项目五》参考答案------一、单项选择题(每小题3分,共45分)题号12345678910答案BCABDACDCD二、判断题(每空1分,共10分)题号12345678910判断√√×√×√×××√三、填空题(每空1分共20分)1.湿敏电阻 2.越高 越低3.电阻 NTC4.低电平 拉高5.高电平6.0 17.list()8.append() extend()9.close()10.40四、操作题

1.请使用Python开发文件读取器,用户可以输入文件路径读取文件内容,如果没找到该文件返回错误提醒。whileTrue:

try:

path=input("请输入路径:")

f=open(path,mode="r")#以追加写入的方式打开文件

print(str(f.read()))

except:

print("文件路径输入错误")请使用Python开发文件写入器,用户可以命令台输出数据追加保存至程序根目录下的data.txt文件内。

whileTrue:

data=input("请输入内容")

f=open("./data.txt",mode="a")#以追加写入的方式打开文件

f.write(data)

f.close()

将DHT11温湿度传感器按照表4.1的对应接口连接至开发板,并且编写程序,实现效果如下:使用DHT11模块专用的Adafruit_DHT库文件,采集温湿度数据并且实时在程序消息栏中进行输出。importRPi.GPIOasGPIO

importtime

importdatetime#加载datetime模块用于获取系统日期时间

importAdafruit_DHT

globalsensor

th_sensor=11

sensor=Adafruit_DHT.DHT11

whileTrue:

humidity,temperature=Adafruit_DHT.read_retry(sensor,th_sensor)

print("湿度:"+humidity+",温度"+temperature)

time.sleep(0.5)

将DHT11温湿度传感器按照表4.1的对应接口连接至开发板,并且编写程序,实现效果如下:不实用外部库文件的请款下,独立开发DHT11温湿度传感器模块的数据采集模块,并且实时在程序消息栏中实时输出当前室内温湿度数据。importRPi.GPIOasGPIO

importtime

importdatetime#加载datetime模块用于获取系统日期时间

importsys#加载sys模块用于文件操作

th_data=[]#定义一个链表数组用来存放接收的传感器数据

th_sensor=11#DHT11模块DATA控制管脚对应T型板17口

i=0

GPIO.setmode(GPIO.BOARD)

whileTrue:#循环读取数据

#线路准备模块

time.sleep(1)#每一秒钟检测一次,可更改

GPIO.setup(th_sensor,GPIO.OUT)

GPIO.output(th_sensor,GPIO.LOW)

time.sleep(0.02)

GPIO.output(th_sensor,GPIO.HIGH)

#DHT11响应模块

GPIO.setup(th_sensor,GPIO.IN)

whileGPIO.input(th_sensor)==GPIO.HIGH:

continue

whileGPIO.input(th_sensor)==GPIO.LOW:

continue

whileGPIO.input(th_sensor)==GPIO.HIGH:

continue

#数据接收模块

#开始接收传感器40bit数据

whilei<40:

whileGPIO.input(th_sensor)==GPIO.LOW:

continue

time1=time.time_ns()

whileGPIO.input(th_sensor)==GPIO.HIGH:

continue

time2=time.time_ns()

iftime2-time1>=40000:

th_data.append(1)

else:

th_data.append(0)

i=i+1

#按40bit传感器的数据结构进行分组,前16位为湿度高位和湿度低位,后16位为温度高位和温度低位

humi_bit=th_data[0:8]#将列表中前8位存入代表湿度高位的变量

humipoint_bit=th_data[8:16]#将列表中9到16位存入代表湿度低位的变量

temp_bit=th_data[16:24]#将列表中17到24位存入代表温度高位的变量

temppoint_bit=th_data[24:32]#将列表中25到32位存入代表温度低位的变量

check_bit=th_data[32:40]#将列表中33到40位存入代表校验值的变量

humidity=0

humidity_point=0

temperature=0

temperature_point=0

Humidity_data=0

Temperature_data=0

check=0

result=0

#利用循环将二进制数转化为十进制数

foriinrange(8):

humidity+=humi_bit[i]*2**(7-i)

humidity_point+=humipoint_bit[i]*2**(7-i)

temperature+=temp_bit[i]*2**(7-i)

temperature_point+=temppoint_bit[i]*2**(7-i)

check+=check_bit[i]*2**(7-i)

result=humidity+humidity_point+temperature+temperature_point

#最后8bit校验位校验传输的数据是否正确,并进行输出

#将准备写入的数据进行格式化

ifcheck==result:

humidity_data=humidity+humidity_point/100

temperature_data=temperature+temperature_point/100

str_data="humidity:"+str(humidity_data)+"%"+"temperature:"\

+str(temperature_data)+"*c"

print(str_data)

else:

str_data="wrong"

GPIO.cleanup()将DHT11温湿度传感器按照表4.1的对应接口连接至开发板,并且编写程序,实现效果如下:实时在程序消息栏中实时输出当前室内温湿度数据,将温室度数据按照分钟保存至程序根目录下的data.txt文件内。importRPi.GPIOasGPIO

importtime

importdatetime#加载datetime模块用于获取系统日期时间

importsys#加载sys模块用于文件操作

th_data=[]#定义一个链表数组用来存放接收的传感器数据

th_sensor=11#DHT11模块DATA控制管脚对应T型板17口

i=0

GPIO.setmode(GPIO.BOARD)

whileTrue:#循环读取数据

#线路准备模块

time.sleep(1)#每一秒钟检测一次,可更改

GPIO.setup(th_sensor,GPIO.OUT)

GPIO.output(th_sensor,GPIO.LOW)

time.sleep(0.02)

GPIO.output(th_sensor,GPIO.HIGH)

#DHT11响应模块

GPIO.setup(th_sensor,GPIO.IN)

whileGPIO.input(th_sensor)==GPIO.HIGH:

continue

whileGPIO.input(th_sensor)==GPIO.LOW:

continue

whileGPIO.input(th_sensor)==GPIO.HIGH:

continue

#数据接收模块

#开始接收传感器40bit数据

whilei<40:

whileGPIO.input(th_sensor)==GPIO.LOW:

continue

time1=time.time_ns()

whileGPIO.input(th_sensor)==GPIO.HIGH:

continue

time2=time.time_ns()

iftime2-time1>=40000:

th_data.append(1)

else:

th_data.append(0)

i=i+1

#按40bit传感器的数据结构进行分组,前16位为湿度高位和湿度低位,后16位为温度高位和温度低位

humi_bit=th_data[0:8]#将列表中前8位存入代表湿度高位的变量

humipoint_bit=th_data[8:16]#将列表中9到16位存入代表湿度低位的变量

temp_bit=th_data[16:24]#将列表中17到24位存入代表温度高位的变量

temppoint_bit=th_data[24:32]#将列表中25到32位存入代表温度低位的变量

check_bit=th_data[32:40]#将列表中33到40位存入代表校验值的变量

humidity=0

humidity_point=0

temperature=0

temperature_point=0

Humidity_data=0

Temperature_data=0

check=0

result=0

#利用循环将二进制数转化为十进制数

foriinrange(8):

humidity+=humi_bit[i]*2**(7-i)

humidity_point+=humipoint_bit[i]*2**(7-i)

temperature+=temp_bit[i]*2**(7-i)

temperature_point+=temppoint_bit[i]*2**(7-i)

check+=check_bit[i]*2**(7-i)

result=humidity+humidity_point+temperature+temperature_point

#最后8bit校验位校验传输的数据是否正确,并进行输出

f=open("./data",mode="a")#以追加写入的方式打开文件

#将准备写入的数据进行格式化

ifcheck==result:

humidity_data=humidity+humidity_point/100

temperature_data=temperature+temperature_point/100

str_data="humidity:"+str(humidity_data)+"%"+"temperature:"\

+str(temperature_data)+"*c"

else:

str_data="wrong"

f.write(str_data+"time:"+str(datetime.datetime.now())+"\n")#写入文件

f.close()#关闭文件

loop

GPIO.cleanup()

将DHT11温湿度传感器按照表4.1的对应接口连接至开发板,并且编写程序,实现效果如下:实时在程序消息栏中实时输出当前室内温湿度数据。当室内温度或湿度大于阀值时,在程序消息栏中进行提醒打印。importRPi.GPIOasGPIO

importtime

importdatetime#加载datetime模块用于获取系统日期时间

importAdafruit_DHT

globalsensor

th_sensor=11

sensor=Adafruit_DHT.DHT11

whileTrue:

humidity,temperature=Adafruit_DHT.read_retry(sensor,th_sensor)

print("湿度:"+humidity+",温度"+temperature)

iftemperature>30:

print("室内温度过大")

ifhumidity<50:

print("室内过于干燥")

time.sleep(0.5)将DHT11温湿度传感器按照表4.1的对应接口连接至开发板,并且编写程序,实现效果如下:实时在程序消息栏中实时输出当前室内温湿度数据。可以在命令行中对温湿度的阀值进行设置,当室内温度或湿度大于阀值时,将异常数据保存至程序根目录log.txt文件夹中。importRPi.GPIOasGPIO

importtime

importdatetime#加载datetime模块用于获取系统日期时间

importAdafruit_DHT

globalsensor

th_sensor=11

sensor=Adafruit_DHT.DHT11

temp_red=input("请输入温度阀值")

hum_red=input("请输入湿度阀值")

whileTrue:

humidity,temperature=Adafruit_DHT.read_retry(sensor,th_sensor)

print("湿度:"+humidity+",温度"+temperature)

iftemperature>temp_red:

f=open("./log.txt",mode="a")#以追加写入的方式打开文件

f.write(str(datetime.datetime.now())+":室内温度过大\n")

f.close()

print("室内温度过大")

ifhumidity<hum_red:

print("室内过于干燥")

f=open("./log.txt",mode="a")#以追加写入的方式打开文件

f.write(str(datetime.datetime.now())+":室内过于干燥\n")

f.close()

time.sleep(0.5)将DHT11温湿度传感器按照表4.1的对应接口连接至开发板,并且编写程序,实现效果如下:实时在程序消息栏中实时输出当前室内温湿度数据。将温湿度时间实时保存至程序根目录下data.txt文件加中,当温湿度数据大于阀值时,将异常数据保存至程序根目录下log.txt文件中。importRPi.GPIOasGPIO

importtime

importdatetime#加载datetime模块用于获取系统日期时间

importAdafruit_DHT

globalsensor

th_sensor=11

sensor=Adafruit_DHT.DHT11

temp_red=input("请输入温度阀值")

hum_red=input("请输入湿度阀值")

whileTrue:

humidity,temperature=Adafruit_DHT.read_retry(sensor,th_sensor)

print("湿度:"+humidity+",温度"+temperature)

f_write=open("./data.txt",mode="a")

f_write.write(str(datetime.datetime.now())+"湿度:"+humidity+",温度"+temperature)

iftemperature>temp_red:

f=open("./log.txt",mode="a")#以追加写入的方式打开文件

f.write(str(datetime.datetime.now())+":室内温度过大\n")

f.close()

print("室内温度过大")

ifhumidity<hum_red:

print("室内过于干燥")

f=open("./log.txt",mode="a")#以追加写入的方式打开文件

f.write(str(datetime.datetime.now())+":室内过于干燥\n")

f.close()

time.sleep(1)

将DHT11温湿度传感器按照表4.1的对应接口连接至开发板,并且编写程序,实现效果如下:使用命令台模拟室内智能温室度系统,当用户在命令台输入Start命令开始运行系统,实时监控检测室内温室度并在程序消息栏中实时播报室内温湿度数据,当温湿度数据都正常时在消息栏中打印“室内温度正常”,当温度大于阀值时,在消息栏中打印“室内温度过高,已为您开启空调”,当湿度小于阀值时,在消息栏中打印“室内过于干燥,已为您开启加湿器”。importRPi.GPIOasGPIO

importtime

importdatetime#加载datetime模块用于获取系统日期时间

importAdafruit_DHT

globalsensor

th_sensor=11

sensor=Adafruit_DHT.DHT11

temp_red=0

hum_red=0

whileTrue:

cmd=input("请输入命令:")

ifcmd=="Start":

temp_red=input("请输入温度阀值")

hum_red=input("请输入湿度阀值")

break

whileTrue:

humidity,temperature=Adafruit_DHT.read_retry(sensor,th_sensor)

print("湿度:"+humidity+",温度"+temperature)

f_write=open("./data.txt",mode="a")

f_write.write(str(datetime.datetime.now())+"湿度:"+humidity+",温度"+temperature)

iftemperature>temp_red:

print("室内温度过大")

ifhumidity<hum_red:

print("室内过于干燥")

time.sleep(1)

将DHT11温湿度传感器按照表4.1的对应接口连接至开发板,并且编写程序,实现效果如下:使用命令台模拟室内智能温室度系统,当用户在命令台输入Start命令开始运行系统,实时监控检测室内温室度并在程序消息栏中实时播报室内温湿度数据,当温湿度数据都正常时在消息栏中打印“室内温度正常”,当温度大于阀值时,在消息栏中打印“室内温度过高,已为您开启空调”,当湿度小于阀值时,在消息栏中打印“室内过于干燥,已为您开启加湿器”。并且正在程序更目录下创建三个文件:Data.txt:存放室内温湿度数据;Log.txt:存放室内温湿度异常数据或对执行器的操作记录;Threshold.tx:存放温度值与湿度值的阀值。importRPi.GPIOasGPIO

importtime

importdatetime#加载datetime模块用于获取系统日期时间

importAdafruit_DHT

globalsensor

th_sensor=11

sensor=Adafruit_DHT.DHT11

temp_red=0

hum_red=0

whileTrue:

cmd=input("请输入命令:")

ifcmd=="Start":

temp_red=input("请输入温度阀值")

hum_red=input("请输入湿度阀值")

f=open("./Threshold.txt",mode="w")#以追加写入的方式打开文件

f.write("温度阀值:"+temp_red+",湿度阀值"+hum_red)

f.close()

break

whileTrue:

humidity,temperature=Adafruit_DHT.read_retry(sensor,th_sensor)

print("湿度:"+humidity+",温度"+temperature)

f_write=open("./data.txt",mode="a")

f_write.write(str(datetime.datetime.now())+"湿度:"+humidity+",温度"+temperature)

iftemperature>temp_red:

f=open("./log.txt",mode="a")#以追加写入的方式打开文件

f.write(str(datetime.datetime.now())+":内温度过高,已为您开启空调\n")

f.close()

print("室内温度过大")

ifhumidity<hum_red:

print("室内过于干燥")

f=open("./log.txt",mode="a")#以追加写入的方式打开文件

f.write(str(datetime.datetime.now())+"室内过于干燥,已为您开启加湿器\n")

f.close()

time.sleep(1)简答题1.当DHT11传输的数据为0101101000000000000110110000000001110101,校验是否通过?所对应的湿度和温度分别是多少?校验位通过,温度:27,湿度:90。

根据DHT11发送数据准备图描述如何判断DHT11温湿度传感是否初始化完毕。给传感器引脚一个低电平(至少18us),随后拉高电平信号并延时20-40us,如何接收DHT11模块的电平针脚信号,当检测到总线持续一段时间的约为80us的高电平(20-100us),表示初始化工作完毕,如果是一个低电平则初始化失败。

描述DHT11模块时如何发送数据的

DHT11发送每1bit的数据都由50us的低电平开始做为识别间隔,随后的高电平时间长短代表了数据信号是0还是1,当高电平持续26~28us时,表示数据“0”,持续70us时表示数据“1”。数据传输完毕后,再以50us低电平表示数据结束。总共会有40bit的数据。

下面时一段关于DHT11模块传输数据的进制转换的代码,请分析代码写出存放温湿度数据和校验位的变量是哪些。

湿度整数:humidity湿度小数:humidity_point

温度整数:temperature温度小数:temperature_point校验位:result#按40bit传感器的数据结构进行分组,前16位为湿度高位和湿度低位,后16位为温度高位和温度低位

humi_bit=th_data[0:8]#将列表中前8位存入代表湿度高位的变量

humipoint_bit=th_data[8:16]#将列表中9到16位存入代表湿度低位的变量

temp_bit=th_data[16:24]#将列表中17到24位存入代表温度高位的变量

temppoint_bit=th_data[24:32]#将列表中25到32位存入代表温度低位的变量

check_bit=th_data[32:40]#将列表中33到40位存入代表校验值的变量

humidity=0

humidity_point=0

temperature=0

temperature_point=0

Humidity_data=0

Temperature_data=0

check=0

result=0

#利用循环将二进制数转化为十进制数

foriinrange(8):

humidity+=humi_bit[i]*2**(7-i)

humidity_point+=humipoint_bit[i]*2**(7-i)

temperat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论