版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《传感器应用》主讲教师:XXX
项目九煤气泄漏检测器PART09※气敏传感器选型与检测※实现煤气泄漏检测器09项目概述在厨房中几乎家家都在用煤气做饭,但如果发生煤气泄漏,这是很危险的。某公司发现该商机需要设计一个煤气泄漏检测器,使用气敏传感器作为检测煤气的主要传感器当发现有煤气泄漏时及时开启通风扇将气体排出在外。小林作为公司的产品研发工程师,需要将其实现。使用树莓派开发套件编写程序调试实现上述功能,便于后续产品的研发。认识气敏传感器的工作原理和检测方法01掌握Python语言中数据可视化的实现02学习目标objective掌握集成气敏传感器、继电器和风扇实现煤气泄漏检测器01技能目标objectiveTASKTWO任务二实现煤气泄漏检测器4任务概述储备知识任务实施任务目标231本次任务:在了解气敏传感器的结构和工作原理,实现根据声音气敏传感器得到的模拟量值,调用Python的2D图形库绘制折线图进行数据呈现,同时采集数据与预先设定的临界值进行比较,利用树莓派的GPIO库提供的功能,通过继电器模块对风扇进行控制,模拟实现对煤气泄漏情况的处理。任务概述4任务概述储备知识任务实施任务目标231TASKTWO任务二实现煤气泄漏检测器01.掌握Python语言的Matplotlib功能包实现数据可视化02.掌握Python程序调用PCF8591和GPIO库函数任务目标4任务概述储备知识任务实施任务目标231TASKTWO任务二实现煤气泄漏检测器01.Python数据可视化介绍储备知识01.Python数据可视化介绍Python提供了丰富的数据分析、数据展示库来支持数据的可视化分析。Python为数据展示提供了大量优秀的功能包。本项目主要使用极具代表性的功能包Matplotlib数据可视化数据分析Python的主要应用场景在树莓派系统中,自带的Python开发环境已经安装了Matplotlib功能包,因此只需要通过import关键字导入后便可以使用。功能包Matplotlib(一个2D绘图库)只要给出符合格式的数据,可以方便地制作折线图、柱状图、散点图等各种高质量的数据图。4任务概述储备知识任务实施任务目标231TASKTWO任务二实现煤气泄漏检测器02.使用Matplotlib生成数据图任务实施03.Python程序实现煤气泄漏检测器2.1.Matplot数据图基础案例102.使用Matplotlib生成数据图Matplot的用法非常简单,对于最简单的折线图,程序只需要根据需要给出对应的X轴、Y轴数据,调用pyplot子模块下的plot函数即可生成简单的折线图。例如案例代码所示:importmatplotlib.pyplotasplt#plot指定x坐标和y坐标上的刻度值plt.plot([1,2,3,4])#指定y轴标签plt.ylabel('somenumbers')#展示图片plt.show()运行结果代码详解可以看到,该案例只要几行代码,就显示了一个图形。我们观察一下这个图会发现,Y轴是1到4,而X轴是1到3,这是由于我们在plot方法中传入的参数,即列表[1,2,3,4],这里我们只传了一个列表,matplotlib会默认当做Y轴的值,X轴是默认分配的,Python中ranges默认是从0开始的,所以X轴是从0-3。例如,plt.plot([1,2,3,4])修改成plt.plot([1,2,3,4],[1,4,9,16]),运行结果如下:我们也可以指定X轴的值如左图所示,红色箭头所指坐标就是X、Y轴坐标,可以看到,折线图的轨迹是按照(1,1)(2,4)、(3,9)和(4,16)四个关键点连接而成,和plot方法中的两个列表相对应。案例2Matplotlib模块中的pyplot子模块下的plot函数除了可以设置X轴、Y轴,还可以接收其他参数来控制绘制图形的颜色和类型,这里默认是'',可以是1个或多个字符的组合。例如'b_'字符组合中——'b'表示颜色是blue'-'表示solidline线条或标记的常用样式可以采用如下表所示的设置标记含义标记含义-代表实线,是默认值o坐标中标记位为圆圈-.代表短线、点相间的虚线v坐标中标记位为下三角形:代表点线^坐标中标记位为上三角形.坐标中标记位为点<坐标中标记位为左三角形,坐标中标记位为像素>坐标中标记位为右三角形线条或标记可以使用的颜色可以采用如下表所示的设置标记表示颜色b或blue蓝色g或green绿色r或red红色c或cyan蓝绿色标记表示颜色m或magenta品红色y或yellow黄色k或black黑色w或white白色我们在案例1的基础上增加对于线条标记样式的设置,即——plt.plot([1,2,3,4],[1,4,9,16],'ro')其中'ro'表示红色、圆圈标记。数据图的运行结果如右图就颜色来说,上面只介绍了几种颜色的缩写,那我们想用其他颜色咋办呢?我们可以直接用参数指定,即——plt.plot([1,2,3,4],[1,4,9,16],color='green',marker='^',markersize=15,markerfacecolor='red')运行结果案例3在前面的案例中,我们说过,参数中只设置1个列表list,会初始化Y轴,若传入2个,会初始化X轴和Y轴;这里观察案例2的最后一张数据图可以发现,X轴和Y轴的起始点不一样,而我们是可以修改这个轴的,代码如右。plt.plot([1,2,3,4],[1,4,9,16],color='green',marker='^',markersize=15,markerfacecolor='red')#设置轴坐标[xmin,xmax,ymin,ymax]#xmin和xmax表示X轴的最小值和最大值#ymin和ymax表示Y轴的最小值和最大值plt.axis([1,8,1,32])运行结果2.2.Matplot数据图进阶案例4matplotlib是可以组合许多的小图,放在1张大图里面显示的,即实现图中图,使用到的方法叫做subplot。请看案例代码。importmatplotlib.pyplotaspltplt.figure()plt.subplot(2,2,1)plt.plot([0,1],[0,1])plt.subplot(2,2,2)plt.plot([0,1],[0,2])plt.subplot(2,2,3)plt.plot([0,1],[0,3])plt.subplot(224)plt.plot([0,1],[0,4])plt.show()运行结果代码详解(1)使用import导入matplotlib.pyplot模块,并简写成plt。使用创建一个图像窗口。plt.figure(2)使用plt.subplot来创建小图。表示将整个图像窗口分为2行2列,当前位置为1.使用在第1个位置创建一个小图。plt.subplot(2,2,1)plt.plot([0,1],[0,1])(3)表示将整个图像窗口分为2行2列,当前位置为2。使用在第2个位置创建一个小图。plt.subplot(2,2,2)plt.plot([0,1],[0,2])(4)表示将整个图像窗口分为2行2列,当前位置为3。plt.subplot(2,2,3)可以简写成plt.subplot(223),matplotlib同样可以识别。使用在第3个位置创建一个小图。plt.plot([0,1],[0,3])plt.subplot(2,2,3)(5)表示将整个图像窗口分为2行2列,当前位置为4。使用plt.plot([0,1],[0,4])在第4个位置创建一个小图。plt.subplot(224)案例5以案例4中的4个小图为例,如果把第1个小图放到第一行,而剩下的3个小图都放到第二行,可以采用以下代码实现。importmatplotlib.pyplotaspltplt.figure()plt.subplot(2,1,1)plt.plot([0,1],[0,1])plt.subplot(2,3,4)plt.plot([0,1],[0,2])plt.subplot(235)plt.plot([0,1],[0,3])plt.subplot(236)plt.plot([0,1],[0,4])plt.show()如果希望展示的小图的大小不相同,应该怎么做呢?运行结果代码详解(1)使用plt.subplot来创建小图。表示将整个图像窗口分为2行1列,当前位置为1.使用在第1个位置创建一个小图。plt.subplot(2,1,1)plt.plot([0,1],[0,1])(2)使用将整个图像窗口分为2行3列,当前位置为5。使用在第5个位置创建一个小图。同上,再通过在第6个位置创建小图。plt.subplot(235)plt.plot([0,1],[0,3])plt.subplot(236)(3)使用plt.subplot(2,3,4)将整个图像窗口分为2行3列,当前位置为4。使用plt.plot([0,1],[0,2])在第4个位置创建一个小图。这里需要解释一下为什么第4个位置放第2个小图.上一步中使用将整个图像窗口分为2行1列,第1个小图占用了第1个位置,也就是整个第1行.本步骤中使用将整个图像窗口分为2行3列,于是整个图像窗口的第1行就变成了3列,也就是成了3个位置,于是第2行的第1个位置是整个图像窗口的第4个位置。plt.subplot(2,1,1)plt.subplot(2,3,4)思考练习(1)Python环境下利用matplotlib库实现一个数据图,该图X轴标签为年份,刻度为2011~2017,Y轴标签为效益(万元),刻度为一个列表[58,62,65,71,84,91,107],所画数据线样式为红色点线,标记位为蓝色边框的上三角形。思考练习(2)利用matplotlib库实现一个图中图,该图分为2行,第1行有2张子图,第2行有3张子图,每个图的X、Y坐标系自定。03.Python程序实现煤气泄漏检测器任务所需软件如下所示:环境准备任务所需硬件如下所示:VNC-Viewer继电器模块PCF8591模块树莓派4B气敏传感器风扇打火机3.1.根据引脚说明和连线图连接设备(1)各设备对应接口如以下表说明:树莓派T型转接板PCF8591模块SDASDASDASCLSCLSCL5V5VVCCGNDGNDGNDPCF8591模块T型转接板气敏传感器AINO0-AOVCC5VVCC(+)GNDGNDGND(G)树莓派T型转接板继电器模块GPIO28GPIO20INGNDGNDDC-5V5V0DC+5V5VCOM风扇T型转接板继电器模块DC+*NODC-GND*3.2.Python程序实现检测传感器步骤1:打开mu开发环境,新建Python文件(1)开启树莓派电源->打开“VNC-Viewer”软件连接树莓派->输入IP地址->用户名密码。(2)连接成功后,在点击左上方【树莓派】图标->选择【编程】->点击打开【mu】软件。图:打开PythonIDE(3)打开“mu”软件,软件界面后如图所示:图:mu软件界面(4)单击“mu”软件界面上的按钮,新建一个名为“checkGas.py”的Python文件。步骤2:编写和验证代码输入代码,实现煤气泄漏检测,要求通过数据图显示最近10秒内煤气的变化情况,当泄漏值达到或超过临界值时,可以看到数据线的变化情况,同时打开风扇进行排气。#-*-coding:utf-8-*-#支持中文注释importmatplotlib.pyplotasplt#从pyplot导入MultipleLocator类,这个类用于设置刻度间隔frommatplotlib.pyplotimportMultipleLocatorimportPCF8591asADCimporttimeimportRPi.GPIOasGPIOADC.setup(0x48)GPIO.setmode(GPIO.BCM)GPIO.setup(20,GPIO.OUT)i=0x_values=list(range(11))list_data=list(range(11))whileTrue:V_Value=ADC.read(0)ifV_Value>=100:GPIO.output(20,0)else:GPIO.output(20,1)list_data[i]=V_Valuetime.sleep(1)ifi==10:i=0plt.plot(x_values,list_data,c='green')
#设置数据图上方的标题和文字大小plt.title('煤气泄漏数据变化图',fontsize=24)
#设置X、Y轴为主刻度,且显示大小为14plt.tick_params(axis='both',which='major',labelsize=14)
#设置X、Y坐标轴的标签说明和文字大小
plt.xlabel('Time',fontsize=14)plt.ylabel('CO',fontsize=14)#把x轴的刻度间隔设置为1,并存在变量里x_major_locator=MultipleLocator(1)
#把y轴的刻度间隔设置为50,并存在变量里y_major_locator=MultipleLocator(50)
#ax为两条坐标轴的实例ax=plt.gca()
#把x轴的主刻度设置为1的倍数ax.xaxis.set_major_locator(x_major_locator)
#把y轴的主刻度设置为10的倍数ax.yaxis.set_major_locator(y_major_locator)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人机工程学的认识与实践应用
- 2026年风险控制招聘题目及答案
- 作业条件危险性分析法在石油库安全评价的运用
- 防爆密闭施工安全技术措施培训
- 齐鲁橡胶厂绿色检修培训课件
- 2026中国邮政集团限公司(山东)招聘若干人易考易错模拟试题(共500题)试卷后附参考答案
- 2026中国通信服务浙江公司校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2026中国能源建设集团投资限公司社会招聘32人易考易错模拟试题(共500题)试卷后附参考答案
- 2026中国联通总部行政服务中心/北京兴业招聘15人易考易错模拟试题(共500题)试卷后附参考答案
- 锅炉运行危险点分析及控制措施培训
- 2026秋季人教鄂教版小学科学一年级上册学期教学计划含进度表
- 摩根士丹利-全球科技:创新下一代存储器-Innovating the Next-Generation Memory-20260716
- 管理干部安全履职能力提升办法
- 七一重要讲话精神学习纲要
- 旅游民宿服务规范与质量标准(标准版)
- 1×33000KVA 全密闭高碳铬铁矿热炉技改项目环境影响报告书
- 急诊科护士的临床思维培养
- 新部编八年级语文上册八年级语文上册新教材解读课件(统编版224)
- 北京化工大学-硕士本科毕业论文答辩模板-含导航栏
- 化工厂员工培训考核制度
- 2026年上饶卫生健康职业学院单招职业技能测试题库附答案详解(综合卷)
评论
0/150
提交评论