回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

基于行空板M10的智能校园植物养护助手 简单

头像 524869998 2025.06.17 27 0

 

基于行空板M10的智能校园植物养护助手

 

项目简介

主控采用行空板M10,同时对植物成长的多个环境参数进行实时采集,如土壤湿度、室内温湿度和光照强度等环境数据,并发送给行空板M10,根据土壤湿度来调整水泵的开关状态,保障校园植物的正常生长。

 

功能需求

土壤湿度监测:通过内置的传感器实时监测土壤湿度,当土壤过于干燥或湿润时,通过物联网提醒用户进行相应操作。

自动灌溉系统:根据土壤湿度数据和预设的养护计划,自动调节内置的水泵进行精准灌溉。

 

 

材料清单

行空板M10

土壤湿度传感器

温湿度传感器

水泵及水管

电源适配器及电池组

 

1硬件连接

校园植物养护助手摇监测植物园环境钟的温湿度、土壤湿度等数据,并通过控制水泵的开关状态来实现开启/关闭水泵,因此,需要给行空板M10接入土壤湿度传感器、温湿度传感器以及水泵。硬件接线图如下:

 

image.png

2编程

主程序需要获取土壤湿度传感器检测到的土壤水分值,并使用继电器控制水泵开启与关闭。

screenshots-植物养护助手.mp-1750646016035.png

程序运行界面如下:

image.png

 

3物联网连接

网页输入10.1.2.3:8080,输入默认的账号“siot”,密码“dfrobot”,点击登录。

点击项目下的“查看设备列表”,可以看到“项目ID”、“名称”分别对应为程序中“IOT_pubTopic”的信息。点击“查看消息”,可以查看到Topic的MQTT消息记录,并伴有具体的消息内容及发送时间,这就是我们检测到的该时刻的土壤湿度、空气温度值、空气湿度值、环境光照强度值,如下图。

 

SIOT数据界面如下:

image.png

 

4校园植物养护助手模型外观

使用PVC水管和雪弗板制作校园植物养护助手的模型。

模型外观如下:

waiguan2.jfif
waiguan1.jfif

备注:水管有钻孔洞,并使用竹篾进行引流滴灌到植物上方。

 

5校园植物养护助手整体效果

如下图:

image.png
植物养护助手.PNG
image.png

 

 

代码
#  -*- coding: UTF-8 -*-

# MindPlus
# Python
import siot
from unihiker import GUI
from pinpong.board import Board
from pinpong.board import DHT11
from pinpong.board import Board,Pin
from pinpong.extension.unihiker import *

# 事件回调函数
def kai_click1():
    p_p23_out.write_digital(1)
    shui_zhuangtai .config(text="开")
def guan_click1():
    p_p23_out.write_digital(0)
    shui_zhuangtai .config(text="关")


siot.init(client_id="8762747195918676",server="10.1.2.3",port=1883,user="siot",password="dfrobot")
Board().begin()
u_gui=GUI()
siot.connect()
siot.loop()
p_p21_analog=Pin(Pin.P21, Pin.ANALOG)
p_p23_out=Pin(Pin.P23, Pin.OUT)
turangshidu = 0
TuRangShiDuYuZhi = 500
siot.getsubscribe(topic="DFRobot/校园植物养护")
dht1 = DHT11(Pin((Pin.P24)))
u_gui.draw_text(text="欢迎使用智能校园",x=0,y=10,font_size=20, color="#0000FF")
u_gui.draw_text(text="植物养护助手",x=50,y=35,font_size=20, color="#0000FF")
u_gui.draw_text(text="空气温度:",x=15,y=70,font_size=20, color="#0000FF")
u_gui.draw_text(text="空气湿度:",x=15,y=100,font_size=20, color="#0000FF")
u_gui.draw_text(text="土壤湿度:",x=15,y=130,font_size=20, color="#0000FF")
u_gui.draw_text(text="环境光亮度:",x=15,y=160,font_size=20, color="#0000FF")
T=u_gui.draw_digit(text="",x=135,y=80,font_size=20, color="#0000FF")
R=u_gui.draw_digit(text="",x=135,y=110,font_size=20, color="#0000FF")
Y=u_gui.draw_digit(text="",x=135,y=140,font_size=20, color="#0000FF")
X=u_gui.draw_digit(text="",x=163,y=170,font_size=20, color="#0000FF")
shuibeng=u_gui.draw_text(text="水泵状态:",x=30,y=220,font_size=10, color="#FF6600")
shui_zhuangtai =u_gui.draw_text(text="关",x=100,y=220,font_size=10, color="#FF0000")
yuzhi=u_gui.draw_text(text="土壤湿度阈值:",x=30,y=240,font_size=10, color="#FF6600")
shidu=u_gui.draw_text(text="500",x=130,y=240,font_size=10, color="#FF0000")
kai=u_gui.add_button(text="开",x=28,y=265,w=40,h=30,onclick=kai_click1)
guan=u_gui.add_button(text="关",x=70,y=265,w=40,h=30,onclick=guan_click1)
while True:
    wendu = dht1.temp_c()
    siot.publish(topic="DFRobot/校园植物养护", data=(str("空气温度:") + str(wendu)))
    T.config(text=wendu)
    shidu = dht1.humidity()
    siot.publish(topic="DFRobot/校园植物养护", data=(str("空气湿度:") + str(shidu)))
    R.config(text=shidu)
    guangdu = light.read()
    siot.publish(topic="DFRobot/校园植物养护", data=(str("光照强度:") + str(guangdu)))
    X.config(text=guangdu)
    turangshidu = p_p21_analog.read_analog()
    siot.publish(topic="DFRobot/校园植物养护", data=(str("土壤湿度:") + str(turangshidu)))
    Y.config(text=turangshidu)
    if (turangshidu < TuRangShiDuYuZhi):
        p_p23_out.write_digital(1)
        shui_zhuangtai .config(text="开")
    else:
        p_p23_out.write_digital(0)
        shui_zhuangtai .config(text="关")

评论

user-avatar