8974| 0
|
[教程] Mind+Python编程进阶系列课程—05鱼缸自动水位控制 |
本帖最后由 木子呢 于 2021-11-25 10:25 编辑 鱼缸自动水位控制 课程目录:
一、实践情境 随着我国小康社会的全面建成,人们的生活水平也不断提高,越来越多的人喜欢在家中养殖观赏鱼来陶冶情操。在鱼缸养鱼时,充足的水量对鱼至关重要。然而,有时候长时间出门在外,我们往往没法及时给鱼缸补水,以致对鱼的生存产生影响。鉴于此,本实践将设计一个鱼缸自动补水系统,弥补这一不足。 二、实践目标 本实践项目运用micro:bit作为智能终端,通过液位传感器来采集鱼缸的水位数据并将其上传至物联网平台,之后使用继电器和水泵来实现补水功能。 三、知识目标 1、认识液位传感器、继电器和水泵,掌握其使用方法 2、掌握运用micro:bit作为智能终端,通过 Python 编程采集液位传感器数据的方式 3、掌握通过 Python 编程使继电器和水泵进行补水的方式 四、实践准备 硬件清单: 软件使用:mind+编程软件x1、SIoT系统软件x1 其他: 1、鱼缸 x1(可用花盆替代) 2、水桶 x1(可用烧杯替代) 3、十字/一字两用螺丝刀 x1
五、实践过程 在本项目中,我们将分两步,自制一个鱼缸自动补水系统,实现对鱼缸水位的实时监测以及自动补水功能。 1、实时监测鱼缸水位并将信息发送至SIoT物联网平台 2、添加反馈控制,实现自动补水功能 任务1:水位监测 1. 分析设计 在本任务中,我们将通过液位传感器,实时监测鱼缸的水位。这里,我们可通过扩展板将液位传感器与micro:bit开发板相连接,采集水位情况,并将获取到的数据上传到SIoT物联网平台上。 2. 硬件搭建 STEP1:通过传感器连接线将液位传感器连在扩展板的P1端口,如下图。 STEP2:将micro:bit开发板插入I/O扩展板,并通过USB连接线将micro:bit接到计算机。 3. 平台搭建 SIoT物联网平台的搭建方法可参考第三课。 4. 软件编写 在编写代码之前,我们依旧需要先对软件进行一些设置。 软件设置: STEP1:创建与保存项目文件 启动Mind+软件,选择“Python模式”,另存项目并命名为“m鱼缸自动水位控制”。 STEP2:创建与保存python文件 创建一个python程序文件“任务一.py”,双击打开。 程序编写、运行及回顾: STEP1:编写python程序
Tips:上述“SERVER”中输入的是自己电脑的实际IP地址。 STEP2:运行程序并观察效果 (1)手握传感器,将其贴在鱼缸外壁上,并使监测点略高于水位线 (2)运行程序,观察软件终端 点击运行,可以看到终端内显示“连接成功”的提示字样,之后一直显示数字“0”,此时鱼缸内的水位线未达到传感器监测点。 (3)物联网平台网页端查看检测数据 首先找到我们的设备“microbit/005”,接着点击“查看消息”, 之后单击“显示/隐藏图表”和“自动刷新消息”,我们可以看到检测到的反馈数值实时自动刷新呈现在页面上,并以图表形式呈现了出来。 (4)将液位传感器慢慢往下移动,直至检测点在水位线以下。 (5)再次观察软件终端和网页平台,可以看到此时的数据变为了“1”。 Tips:若数值不变化可尝试按压“set”键1-4次,调整灵敏度。 STEP3:回顾程序 1、读取水位值 from pinpong.board import Board,Pin#导入pinpong.board包中的Board,Pin模块 water_level = Pin(Pin.P1, Pin.IN) #初始化P1引脚为电平输入模式 v = water_level.read_digital()#读取引脚电平 在使用micro:bit主控板和液位传感器进行检测时,我们将液位传感器和主控板上的P1引脚进行连接,而为了能够读取P1引脚上液位传感器检测出来的值,编程时,我们需要在导入模块后将P1引脚设定为电平输入模式“Pin.IN”,之后使用“read_digital()”来进行读取数值。 这里的“电平”是指电压,有高和低两种区别,当读取到的值为“1”时,也就指“高电平”,而当读到的值为“0”时,则指代“低电平”。 任务2:添加反馈 1.分析设计 在上个任务中,我们已经成功实现了对水位的实时检测。接下来,我们将在此基础上添加反馈控制,实现当水位不足时,为鱼缸补水。 这里,我们可在之前实时检测水位的基础上,对检测到的数据进行判别,当判别水量不足时进行补水。 2.硬件搭建 STEP1:利用螺丝刀将水泵正负线与转接头连接起来,步骤与成型图如下, (1)松掉转接头螺丝 (2)将线插入,注意正负(棕/红—正;蓝/黑—负) (3)拧紧螺丝 STEP2:利用继电器将12V电源开关与水泵的转接头连接起来 STEP3:通过连接线将继电器连在扩展板的P2端口 STEP4:将继电器开关拨至NO端 Tips:继电器上有一个开关,NO 为断开,表示默认继电器状态为断开,需要程序写入一个低电平,控制其闭合;NC 为闭合,表示默认继电器状态为闭合,需要程序写入一个高电平,控制其断开。这里,我们设定默认状态为断开。 3.软件编写 这里,我们依旧将先对Mind+编程软件进行设置,再编写Python程序。 软件设置: STEP1:创建与保存python文件 新建一个python程序文件“任务二.py”,双击打开。 程序编写、运行及回顾: STEP1:编写python程序
STEP2:运行程序并观察效果 (1)将水泵浸没于满水的水桶(烧杯)之中 Tips:水泵不能空转,必须将黑色水泵头沉入水中,否则可能会烧毁硬件。 (2)将水管出水口插入鱼缸中。 (3)将12V电源开关插上220V电源插座 (4)将液位传感器贴在鱼缸外壁上,且在水位之上 (5)运行程序,观察软件终端和SIoT物联网平台 点击运行按钮,终端显示“连接成功”。之后始终显示数值“0”,SIoT平台显示相同。 (6)观察鱼缸与点阵屏 观察鱼缸,可以发现,鱼缸内水量不足,micro:bit显示哭脸,这时水泵开始工作,将水桶中的水抽入鱼缸之中。当数值变为1,水位高于检测点时,水泵停止工作,同时点阵屏显示笑脸。 STEP3:回顾程序 1、控制继电器启停 from pinpong.board import Board,Pin#导入pinpong.board包中的Board,Pin模块 pump = Pin(Pin.P2, Pin.OUT) #初始化P2引脚为电平输出模式 pump.write_digital(1) #输出高电平 pump.write_digital(0) #输出低电平 为了能够控制作为执行器的水泵和继电器进行抽水,编程时,我们需要在导入模块后将继电器所在的P2引脚设定为电平输出模式,之后用“write_digital(1)”和“write_digital(0)”来分别输出高电平和低电平。 同时,由于继电器开关拨到了NO口,因此,此时,输入低电平方可使水泵工作。 2、点阵屏图案显示 display.show(Image.HAPPY)#显示图案happy display.show(Image.SAD)#显示图案sad 在点阵屏上不仅能够显示字符,还可以通过屏幕对象的“show()”方法显示多种不同的表情图案等,如, happy,sad,angry,silly,smile,heart,heart_small,arrow_n,arrow_s等。 六、巩固提高 1.项目小结 本节课我们以micro:bit为智能终端,结合液位传感器、继电器和水泵制作了一个鱼缸自动水位控制系统。首先设定一个水位标准并对鱼缸上的水位进行实时监测,之后对监测的结果添加反馈,当水位低于标准时通过继电器和水泵进行补水。 2. 项目拓展 观察SIoT物联网平台上的数据,分析每次加水的时间段,加水次数多,说明一次加水量少。尝试修改程序,增加每次的补水量,减少补水次数吧! |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed