木子呢 发表于 2021-11-19 16:14:54

Mind+Python编程进阶系列课程—06植物监测仪

本帖最后由 木子呢 于 2021-11-19 16:14 编辑

Mind+Python编程进阶系列课程—06植物监测仪


课程目录:

[*]Python编程进阶系列教程—序章
[*]Python编程进阶系列课程—01 趣味数字电导仪
[*]Python编程进阶系列课程—02 简易气象站
[*]Python编程进阶系列课程—03 自制通信设备(上)
[*]Python编程进阶系列课程—03 自制通信设备(下)
[*]Python编程进阶系列课程—04 穿戴计步器
[*]Python编程进阶系列课程—05鱼缸自动水位控制
[*]Python编程进阶系列课程—06植物监测仪

一、实践情境

随着社会的发展和生活水平的提高,人们逐渐追求高质量的生活,很多人会在家里或办公室种植一些花花草草以净化空气,陶冶情操。

但是很多养花的小伙伴会因为出差、旅游或者一些其他的原因,不能及时照料它们,短时间可能会影响其正常生长,长时间甚至会死亡。

为此,我们将设计一个植物监测仪,24小时全方位照料花花草草茁壮成长!


二、实践目标

本实践项目运用micro:bit作为智能终端,通过土壤湿度传感器和DHT11温湿度传感器来采集植物中土壤的湿度和环境温湿度,并将数据上传至物联网平台,之后使用继电器、水泵和风扇模块来实现自动浇水和自动通风功能。

三、知识目标

1、认识风扇模块,掌握其使用方法

2、掌握运用micro:bit作为智能终端,通过 Python 编程使风扇转动的方式

四:时间准备

硬件清单:


软件使用: Mind+编程软件x1、SIoT系统软件x1

其他:
1、花盆 x1
2、烧杯 x1
3、十字/一字两用螺丝刀 x1


五、实践过程

在本项目中,我们将分两步,设计一个植物监测仪,实现对植物生存环境的实时监测并在环境不佳时进行改善。

1、实时监测土壤湿度和环境温湿度并上传结果数据至SIoT物联网平台

2、添加反馈控制,实现自动浇水和自动通风功能

任务1:实时监测土壤湿度与环境温湿度

1. 分析设计

在本任务中,我们将分别借助土壤湿度传感器与DHT11温湿度传感器,来实时监测植物生长过程中土壤的湿度以及环境的温湿度。

这里,我们可通过扩展板将两个传感器与micro:bit开发板相连接,实时检测三种数据信息并将其分别上传到SIoT物联网平台的三个不同设备上,同时,我们也可将信息呈现在软件终端。


2. 硬件搭建

STEP1:通过传感器连接线将土壤湿度传感器和DHT11温湿度传感器分别连在扩展板的P1和P2口,如下图。

STEP2:将micro:bit开发板插入I/O扩展板,并通过USB连接线将micro:bit接到计算机。

3. 平台搭建

SIoT物联网平台的搭建方法可参考第三课。


4. 软件编写

在编写代码之前,我们依旧需要先对软件进行一些设置。

软件设置:

STEP1:创建与保存项目文件
启动Mind+软件,选择“Python模式”,另存项目并命名为“m植物监测仪”。

STEP2:创建与保存Python文件
创建一个Python程序文件“任务一.py”,双击打开。

程序编写、运行:

STEP1:编写Python程序

import time#导入时间库

import siot#导入siot库

from pinpong.board import Board,Pin,DHT11#导入pinpong.board包中的Board,Pin,DHT11模块

Board("microbit").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别

adc0 = Pin(Pin.P1, Pin.ANALOG) #初始化P1引脚为模拟输入模式

dht11 = DHT11(Pin(Pin.P2))#创建DHT11对象

SERVER = "192.168.50.248"#MQTT服务器IP地址

CLIENT_ID = ""#创建空消息队列

IOT_UserName ='siot'#用户名

IOT_PassWord ='dfrobot'#密码

IOT_pubTopic1= 'microbit/006'#“topic”为“项目名称/设备名称”,设备006

IOT_pubTopic2= 'microbit/007'#设备007

IOT_pubTopic3= 'microbit/008'#设备008

siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)#初始化,确定输入的用户名和密码正确

siot.connect()#连接

siot.loop()#循环

while True:#永久循环

    A1 = adc0.read_analog() #读取模拟信号数值

    temp = dht11.temp_c() #读取摄氏温度

    humi = dht11.humidity() #读取湿度

    print("环境温度=",temp," 环境湿度=",humi," 土壤湿度=",A1)#终端打印显示

    print("-------------------------------------")

    time.sleep(1)#延时1秒

    siot.publish(IOT_pubTopic1,"环境温度 = "+str(temp))#发送消息

    siot.publish(IOT_pubTopic2,"环境湿度 = "+str(humi))

    siot.publish(IOT_pubTopic3,"土壤湿度 = "+str(A1))

    time.sleep(1)

STEP2:运行程序并观察效果

(1)将土壤湿度传感器镀金部分插入花盆中


(2)运行程序,并观察效果

点击运行,显示“连接成功”后,环境温度、环境湿度及土壤湿度的数据就不断刷新呈现在终端内。


同时,分别查看物联网平台网页端“006”、“007”、“008”三个不同的设备,我们也可以看到相应的检测结果。





任务2:改善环境

1.分析设计
在上个任务中,我们已经成功实现了对于植物生长过程中土壤湿度和环境温湿度的实时监测。接下来,我们将在此基础上对采集到的数据进行实时判别以改善环境。

这里,我们可通过扩展板将风扇模块、继电器、水泵与micro:bit开发板相连,继而借助风扇实现高温时自动通风,借助继电器和水泵实现缺水时自动浇水。


2.硬件搭建

STEP1:利用螺丝刀将水泵正负线与转接头连接起来。

STEP2:利用继电器将12V电源开关与水泵的转接头连接起来。

STEP3:通过连接线将风扇模块和继电器也分别连在扩展板的P8、P9端口。


STEP4:将继电器开关拨至NO端

3.软件编写

这里,我们依旧将先对Mind+编程软件进行设置,再编写Python程序。

软件设置:

STEP1:创建与保存Python文件
新建一个Python程序文件“任务二.py”,双击打开。

程序编写、运行:

STEP1:编写Python程序

import time#导入时间库

import siot#导入siot库

from pinpong.board import Board,Pin,DHT11#导入pinpong.board包中Board,Pin,DHT11模块

from pinpong.extension.microbit import * #导入pinpong.extension.microbit包中的所有模块

Board("microbit").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别

adc0 = Pin(Pin.P1, Pin.ANALOG) #初始化P1引脚为模拟输入模式

dht11 = DHT11(Pin(Pin.P2))#创建DHT11对象

fan = Pin(Pin.P8, Pin.OUT) #初始化P8引脚为电平输出模式

pump = Pin(Pin.P9, Pin.OUT) #初始化P9引脚为电平输出模式

SERVER = "192.168.50.248"#MQTT服务器IP地址

CLIENT_ID = ""#创建空消息队列

IOT_UserName ='siot'#用户名

IOT_PassWord ='dfrobot'#密码

IOT_pubTopic1= 'microbit/006'#“topic”为“项目名称/设备名称”,设备006

IOT_pubTopic2= 'microbit/007'#设备007

IOT_pubTopic3= 'microbit/008'#设备008

siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)#初始化,确定输入的用户名和密码正确

siot.connect()#连接

siot.loop()#循环

while True:#永久循环

    A1 = adc0.read_analog()#读取模拟信号数值

    temp = dht11.temp_c() #读取摄氏温度

    humi = dht11.humidity() #读取湿度

    print("环境温度=",temp," 环境湿度=",humi," 土壤湿度=",A1)#终端打印显示

    print("-------------------------------------")

    time.sleep(1)#延时1秒

    siot.publish(IOT_pubTopic1,"环境温度 = "+str(temp))#发送消息

    siot.publish(IOT_pubTopic2,"环境湿度 = "+str(humi))

    siot.publish(IOT_pubTopic3,"土壤湿度 = "+str(A1))

    time.sleep(1)

    #自动通风

    if temp > 31 : #温度高于31

      fan.write_digital(1) #输出高电平

    else:

      fan.write_digital(0) #输出低电平

    #自动浇水

    if A1 < 210 :

      display.show(Image.SAD)   #显示图案sad

      pump.write_digital(0) #输出低电平

    else:

      display.show(Image.HAPPY)   #显示图案happy

      pump.write_digital(1) #输出高电平

    time.sleep(1)
STEP2:运行程序并观察效果

(1)将水泵浸没于烧杯之中


Tips:水泵不能空转,必须将黑色水泵头沉入水中,否则可能会烧毁硬件。

(2)将水管出水口插入花盆中


(3)将12V电源开关插上220V电源插座

(4)将风扇固定在花盆边

(5)运行程序,观察效果

观察花盆,我们发现,当检测到的土壤湿度低于210时,点阵屏显示哭脸,水泵启动开始浇水;反之,点阵屏显示笑脸,水泵静止。而当温度高于31℃时,风扇自动打开;反之风扇停止运行。

Tips:程序中的“210”和“31”是我们依据实验情况设定的植物缺水和受高温时的临界值,不同的植物对水的需求量耐热度不同。水量不足时需在烧杯中补水。

4.调试修改

尝试对上传至SIoT物联网平台三个设备上的数据通过图表进行分析,探求在一天中植物的土壤湿度和环境温湿度的变化情况是怎样的,互相之间又有何联系,继而优化实验,进一步完善植物监测仪。

六、巩固提高

1.项目小结

本节课我们以micro:bit、扩展板、土壤湿度传感器、DHT11温湿度传感器、继电器、水泵以及风扇模块为器件设计了一个植物监测仪。首先通过土壤湿度传感器和DHT11温湿度传感器监测植物生长过程中土壤的水分和环境温湿度,之后对检测到的数据进行判别,实现缺水时能自动浇水,高温时能自动通风。

2. 项目拓展

思考:

1、关于植物的生长,除了温度和土壤湿度之外还有什么因素会对其有影响呢?我们手头是否有工具可以对其进行测量?

2、查阅资料,探究适合植物三角梅生长的最佳土壤湿度环境,通过物联网平台跟踪其土壤湿度变化,并测量植物高度,分析研究植物长成的高度与土壤湿度之间的联系。

3、我们都知道植物生长是通过光合作用的,但是到了黑夜因为没有了阳光而导致植物无法进行光合作用,如果我们想要加快植物生长就可以在光线不足的时候对其进行补光。但是如果一直亮着植物的补光灯会很费电,我们是否可以为我们的植物监测仪添加自动补光的功能弥补这一不足呢?



好学习的小胖子 发表于 2024-3-14 09:56:40

您好,线路连接示意图是怎么绘制的呀,求指导!

木子呢 发表于 2024-3-15 12:00:10

好学习的小胖子 发表于 2024-3-14 09:56
您好,线路连接示意图是怎么绘制的呀,求指导!

可以看下这个教程:https://mc.dfrobot.com.cn/thread-289862-1-1.html
页: [1]
查看完整版本: Mind+Python编程进阶系列课程—06植物监测仪