版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
------《项目五》参考答案------一、单项选择题(每小题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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB31/T 1667-2025休闲农业和乡村旅游点标识牌设置要求
- 2026年秋季学期听评课与课堂教学管理制度
- 安徽事业单位招聘考试职测判断推理全真模拟及解析
- 6.3文化自信日益增强 教学设计 2026-2027学年道德与法治 九年级上册统编版
- 普外科常见疾病诊疗课件
- ERCP在胆道疾病诊治中的应用课件
- 中国残联试题答案
- 泌尿系统常用诊疗技术及护理课件
- 脊柱脊髓损伤课件
- 甘肃肃兰州五十一中2027届物理高一上期中学业水平测试试题含解析
- 《制冷技术基础(第三版)》课件(上)
- 水下混凝土灌注记录(自动计算)
- 航空器全生命周期管理-洞察及研究
- CNC夹具知识培训课件
- 工程质量通病防治手册(2025修订)
- 铁路劳动安全培训课程课件
- 服务心理学(第四版)课件 项目一 任务一 认 识 服 务 行 业
- 2022机电工程安装工艺细部节点做法
- 人格障碍课件
- DB44T 1242-2013 水产饲料添加剂β-1,3-D-葡聚糖
- 企业安全生产风险辨识评估管控指导手册-件杂货码头
评论
0/150
提交评论