树莓派开关监控软件的实现与教学示范_汪文彬.pdf
《树莓派开关监控软件的实现与教学示范_汪文彬.pdf》由会员分享,可在线阅读,更多相关《树莓派开关监控软件的实现与教学示范_汪文彬.pdf(4页珍藏版)》请在咨信网上搜索。
1、dianzi yuanqijian yu xinxijishu 电 子 元 器 件 与 信 息 技 术114|树莓派开关监控软件的实现与教学示范汪文彬,陈德祥,马玉春(通信作者)海南热带海洋学院计算机科学与技术学院,海南三亚,572022摘要:Python语言功能强大,树莓派也广泛应用于高校学生的扩展学习和各种竞赛。本文利用继电器扩展板实现了一个基于树莓派的可视化开关监控软件,灵活应用Python的列表表达继电器及其状态,综合应用了多线程和定时任务,软硬结合,具有一定的趣味性和实用性,既可用于Python的教学,也可用于树莓派的扩展学习。关键词:树莓派;Python;多线程;定时任务中图分类号
2、:TP311.5文献标志码:ADOI:10.19772/ki.2096-4455.2023.1.027 0引言Python语言跨平台,简单易学,具有独特的数据类型,开发环境种类较多,第三方类库也比较丰富,安装方便,广泛应用于大数据处理和人工智能等领域。在Python程序设计教学中,主要讲授基本的数据结构和程序语法,很少涉及多线程和定时任务的处理,以及对硬件的监控。树莓派是一种卡片式计算机,只有信用卡大小,现在的4B版本已经内建8G内存1。树莓派具有40个引脚的排针,可以进行各种硬件扩展,从而用于多种环境下的监控。树莓派内建Python开发环境,本文使用微雪电子生产的RPiRelayBoard(
3、树莓派继电器扩展板),结合第三方Python类库对扩展板的继电器开关进行监控,从而实现对Python扩展学习。1引脚定义树莓派的排针用于“通用输入与输出”(generalpurposeinputoutput,简称GPIO),允许对树莓派进行扩展,可以方便地通过RPi.GPIO类库对GPIO引脚进行控制(高电位或低电位),但是,有两种引脚编号方式,第一种按照排针顺序,引脚从1至40进行编号;第二种根据连接到BCM2835CPU的逻辑来编号,序号又有差别,例如,BCM2835CPU的GPIO16引脚对应树莓派的第36引脚2。树莓派有两个5V引脚、两个3.3V引脚、8个GND引脚,控制GPIO电位时
4、,可以用来驱动发光二极管。如果需要通过树莓派来控制市电开关,则可以使用微雪电子生产的继电器扩展板,如图1所示。图 1树莓派继电器扩展板图1所示的继电器可以控制220V/5A的设备,继电器使用GPIO25、GPIO28和GPIO29引脚,分别对应树莓派排针的37、38和40引脚,通过跳基金项目:本文系 2021 年度海南省高等学校教育教学改革研究项目(项目编号:Hnjg2021-86);2019 年三亚市院地科技合作项目(项目编号:2019YD18)作者简介:汪文彬,男,硕士,教授,研究方向:进化计算与软件测试。通信作者:马玉春,男,博士,教授,研究方向:移动应用与计算机监控技术。电 子 元 器
5、 件 与 信 息 技 术|115软件和信息技术服务线将这些引脚分别连接到扩展板的CH1、CH2和CH3通道,即所标示的三个继电器(从左到右),每个继电器外接两个开关(见接线端子),左侧为常闭开关,右侧为常开开关。2类库安装与编程实现RPi.GPIO类库一般预装在新版树莓派中,如果没有发现该类库,可以在命令行下通过系统权限安装,如下第一条命令更新系统索引,第二条命令更新系统软件,解决依赖问题,第三条命令安装RPi.GPIO类库,重新启动后即可生效。sudoapt-getupdatesudoapt-getdist-upgradesudo apt-get install python-rpi.gpi
6、opython3-rpi.gpio一般通过命令“importRPi.GPIOasGPIO”导入GPIO类库,相对于图1所示的继电器扩展板,一个典型的开关操作函数switchOnOff如下所示,第一个参数为GPIO编号,如果对应继电器CH1,采用树莓派引脚顺序为37;如果采用BCM编号,则CH1定义为常量25即可;第二个参数status表示需要控制的状态。GPIO类库函数setmode用来设置引脚编号方式,BOARD采用排针顺序,BCM则采用CPU编号;函数setup用来设置指定引脚的工作方式,OUT表示输出控制,IN表示读取开关状态;函数output用来控制输出引脚,LOW表示低电位(使得继电
7、器扩展板的常开开关闭合),HIGH表示高电位(使得继电器扩展板的常开开关断开)。defswitchOnOff(relay,status):GPIO.setmode(GPIO.BOARD)#GPIO.BCMGPIO.setup(relay,GPIO.OUT)#GPIO.INGPIO.output(relay,status)#GPIO.LOW/HIGHGPIO.HIGH可以用True或1来表示;同理,GPIO.LOW也可以用False或0来替代。读取开关状态通过input函数来完成,使用relay作为参数,返回True或者False表示电位的高或低。完成对开关的操作后,需要调用cleanup函数(
8、无参数)来释放资源。3多线程与定时任务多线程可以提高程序运行效率,增强用户体验效果,避免程序假死。文献3对某开关量模块进行输出测试,逐个闭合输出开关,最后统一关闭,恢复初始状态。这里也采用类似的方式对图1所示的开关进行测试,在函数testThread中启动多线程,对开关进行测试。只需使用threading模块的Thread类生成多线程对象,然后调用start方法启动多线程。多线程对象中的target参数指明实际需要执行的程序,args参数可以给出元组形式的参数列表,kwargs参数可以给出字典形式的参数列表,args和kwargs可以省略。fromthreadingimport*deftest
9、Thread():threadTest=Thread(target=testSwitch,args=(),kwargs=)threadTest.start()在函数testSwitch(定义略)中调用上一节介绍的switchOnOff函数,通过一个循环,间隔1秒逐个闭合开关;然后再通过另一个循环,逐个断开开关(延迟为0秒)。循环元素通过序列CH1,CH2,CH3来实现,逐个枚举,元素中的具体数值根据GPIO.setmode方法设定的编号方式进行调整。开关闭合以后,需要延迟断开,用于定时操作,这可以通过scheduler对象来实现,该对象需要提供一个时间函数用于计时,另外一个函数用于延时。如下所
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 树莓派 开关 监控 软件 实现 教学 示范 汪文彬
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。