《第五课 鱼缸自动水位控制.docx》由会员分享,可在线阅读,更多相关《第五课 鱼缸自动水位控制.docx(13页珍藏版)》请在第一文库网上搜索。
1、第五课鱼缸自动水位控制一、实践情境随着我国小康社会的全面建成,人们的生活水平也不断提高,越来越多的人喜欢在家中养殖观赏鱼来陶冶情操。在鱼缸养鱼时,充足的水量对鱼至关重要。然而,有时候长时间出门在外,我们往往没法及时给鱼缸补水,以致对鱼的生存产生影响。鉴于此,本实践将设计一个鱼缸自动补水系统,弥补这一不足。二、实践目标本实践项目运用micro:bit作为智能终端,通过液位传感器来采集鱼缸的水位数据并将其上传至物联网平台,之后使用继电器和水泵来实现补水功能。三、知识目标1、认识液位传感器、继电器和水泵,掌握其使用方法2、掌握运用micro:bit作为智能终端,通过Python编程采集液位传感器数据
2、的方式3、掌握通过Python编程使继电器和水泵进行补水的方式四、实践准备硬件清单:其他:1、鱼缸X1(可用花盆替代)2、水桶X1(可用烧杯替代)3、十字/一字两用螺丝刀X1知识镰接智能接触式液位传感器简介:智能型非接触式液位传感器可用于检测是否有液体存在,使用时将传感器贴在容器壁上即可,无须与液体直接接触。当检测到有液体时,指示灯亮起。简易继电器模块简介:继电器是一种用小电流去控制大电流运作的具有隔离功能的自动开关元件。Tips:虽然micro:bit的供电电压5V大于水泵的最小工作电压4.5V,但是实际驱动起来运行会很不稳定.因此可通过继电器来使水泵工作.带水管潜水泵简介:水泵是输送液体或
3、使液体增压的机械。可放置水中直接使用,4.512V宽电压供电范围.可用来为植物浇水,甚至为鱼缸换水.五、实践过程在本项目中,我们将分两步,自制一个鱼缸自动补水系统,实现对鱼缸水位的实时监测以及自动补水功能。1、实时监测鱼缸水位并将信息发送至S1OT物联网平台2、添加反馈控制,实现自动补水功能任务1:水位监测1 .分析设计在本任务中,我们将通过液位传感器,实时监测鱼缸的水位。这里,我们可通过扩展板将液位传感器与micro:bit开发板相连接,采集水位情况,并将获取到的数据上传到SIOT物联网平台上。软件终端+SI。T物联网平台显示2 .硬件搭建STEP1:通过传感器连接线将液位传感器连在扩展板的
4、P1端口,如下图。STEP2:将micro:bit开发板插入I/O扩展板,并通过USB连接线将micro:bit接到计算机。3 平台搭建SIoT物联网平台的搭建方法可参考第三课。4 .软件编写在编写代码之前,我们依旧需要先对软件进行一些设置。软件设置:STEP1:创建与保存项目文件启动Mind+软件,选择“Python模式”,另存项目并命名为“m鱼缸自动水位控制”。STEP2:创建与保存PythOn文件创建一个Python程序文件“任务一.py”,双击打开。程序编写、运行及回顾:STEP1:编写PythOn程序向上滑动阅览importtime#导入时间库importSiOt#导入siot库fr
5、ompinpong,boardimportBoard,Pin#导入PinPOng.board包中的Board,Pin模块Board(microbit).begin。#初始化,选择板型和端口号,不输入端口号则进行自动识别water_1eve1=Pin(Pin.P1,Pin.IN)#初始化P1引脚为电平输入模式SERVER=,z192.168.9.66#MQTT服务器IP地址C1IENT_ID=”创建空消息队列IOTUserName=,siot,#用户名IOTPassWord=dfrobot,#密码IOT_pubTopic二,microbit005,#“topic”为“项目名称/设备名称”s1ot
6、.Init(C1IENTID,SERVER,user=10TUserName,PaSSWord=IOTPaSSWord)#初始化,确定输入的用户名和密码IE确Siot.connect。首连接Siot.1ooP()#循环whiIeTrUe:#永久循环V二WateJ1eVeI.readdigita1()#读取引脚高低电平print(v)#终端打印读取的电平状态siot.pub1ish(IOTpubTopic,v)#发送消息time,s1eep(1)Tips:上述“SERVER”中输入的是自己电脑的实际IP地址。STEP2:运行程序并观察效果(1)手握传感器,将其贴在鱼缸外壁上,并使监测点略高于水位
7、线(2)运行程序,观察软件终端点击运行,可以看到终端内显示“连接成功”的提示字样,之后一直显示数字“0”,此时鱼缸内的水位线未达到传感器监测点。(3)物联网平台网页端查看检测数据首先找到我们的设备“micro到找005”,接着点击“查看消息”,项目列表设备列表发送消息全部设备项目ID设备名称10陈2查询项目ID名称备注操作microbit001查看消息清空消息删除设备添力幅注Imicrobit005查看消息卜空消息删除设备添力唯注之后单击“显示/隐藏图表”和“自动刷新消息”,我们可以看到检测到的反馈数值实时自动刷新呈现在页面上,并以图表形式呈现了出来。100*V鱼询9出色询新典microbit
8、/005消息Ifi控口C1。比2O21O31347:42202308-0313:47MI2023*08-0313.48:002023-080313:48:10202308-0313:48:19,TopicMBff1mr0M0020230803134826mcroUUX50202308031348:25mcroMb02O21*O8O313424(4)将液位传感器慢慢往下移动,直至检测点在水位线以下。(5)再次观察软件终端和网页平台,可以看到此时的数据变为了“1”。vnni1力电Ir不U。人mt*例Hrkr)*yBiD,出*-Q玄H示*自MHWmkrobit/005消息监控02J1由件依50202
9、3-0TO5B5ai12W13H1N032加,於03BSON纱,3BgMMCMBWWIWOMg128IOeaI1518KR3MOOS1加Ioeg31351”PaM8512aia031351XmM012810681351272OM861202300031351%Tips:若数值不变化可尝试按压“set”键1-4次,调整灵敏度。STEP3:回顾程序1、读取水位值frompinpong,boardimportBoard,Pin#导入pinpong,board包中的Board,Pin模块water_1eve1=Pin(Pin.P1,Pin.IN)#初始化P1引脚为电平输入模式v=WateJ1eve1.
10、read_digitai()#读取引脚电平在使用micro:bit主控板和液位传感器进行检测时,我们将液位传感器和主控板上的P1引脚进行连接,而为了能够读取P1引脚上液位传感器检测出来的值,编程时,我们需要在导入模块后将P1引脚设定为电平输入模式Pin.IN,之后使用“read_digita1()”来进行读取数值。这里的“电平”是指电压,有高和低两种区别,当读取到的值为“1”时,也就指“高电平”,而当读到的值为“0”时,则指代“低电平”。任务2:添加反馈1 .分析设计在上个任务中,我们已经成功实现了对水位的实时检测。接下来,我们将在此基础上添加反馈控制,实现当水位不足时,为鱼缸补水。这里,我们
11、可在之前实时检测水位的基础上,对检测到的数据进行判别,当判别水量不足时进行补水。23 .硬件搭建STEP1:利用螺丝刀将水泵正负线与转接头连接起来,步骤与成型图如下,(1)松掉转接头螺丝(2)将线插入,注意正负(棕/红一正;蓝/黑一负)(3)拧紧螺丝STEP2:利用继电器将12V电源开关与水泵的转接头连接起来STEP3:通过连接线将继电器连在扩展板的P2端口STEP4:将继电器开关拨至No端左拨开关至NO端Tips:继电器上有一个开关,NO为断开,表示默认继电器状态为断开,需要程序写入一个低电平,控制其闭合;NC为闭合,表示默认继电器状态为闭合,需要程序写入一个高电平,控制其断开。这里,我们设
12、定默认状态为断开。4 .软件编写这里,我们依旧将先对晅nd+编程软件进行设置,再编写Python程序。软件设置:STEP1:创建与保存Python文件新建一个Python程序文件“任务二.py”,双击打开。程序编写、运行及回顾:STEP1:编写Python程序向上滑动阅览importtime#导入时间库importSiOt#导入siot库frompinpong,boardimportBOard,Pin#导入PinPong.board包中的Board,Pin模块frompinpong,extension,microbitimport*#导入PinPong.extension,microbit包中
13、的所有模块Board(microbit).begin。#初始化,选择板型和端口号,不输入端口号则进行自动识别water_1eve1=Pin(Pin.P1,Pin.IN)#初始化P1引脚为电平输入模式pump=Pin(Pin.P2,Pin.OUT)#初始化P2引脚为电平输出模式SERVER=,z192.168.9.66#MQTT服务器IP地址C1IENT_ID=”创建空消息队列IOTUserName=,siot,#用户名IOTPassWord=dfrobot,#密码IOT_pubTopic二,microbit005,#“topic”为“项目名称/设备名称”s1ot,init(C1IENTID,S
14、ERVER,user=10TUserName,PaSSWord=IoTPaSSWord)#初始化,确定输入的用户名和密码正确s1ot,connect()#连接Siot.IoOP()#循环whiIeTrUe:#永久循环V二WateJIeVe1reae1digita1()#读取引脚电平print(v)#终端打印读取的电平状态siot.pub1ish(IOTpubTopic,v)#发送消息ifv=0:#未检测到水,缺水disp1ay,show(Image.SAD)#显示图案sadpump.writedigita1(0)#输出低电平,补水e1se:#检测到有水disp1ay,show(Image.HAPPY)#显示图案happypump,writedigita1(1)#输出高电平,不补水time,s1eep(1)STEP2:运行程序并观察效果(1)将水泵浸没于满水的水桶(烧杯)之中Tips:水泵不能空转,必须将黑色水泵头沉入水中,否则可能会烧毁硬件。(2)将水管出水口插入鱼缸中。(3)将12V电源开关插上220V电源插座(4)将液位传感器贴在鱼缸外壁上,且在水位之上(5)运行程序,观察软件终端和SIOT物联网平台点击运行按钮,终端显示“连接成功”。之后始终显示数值“0”,S1c)T平台显示相同。搜出(32) ArduinoFirmwareID:2.6DFRobotfima