基于行空板M10的智能校园植物养护助手
项目简介
主控采用行空板M10,同时对植物成长的多个环境参数进行实时采集,如土壤湿度、室内温湿度和光照强度等环境数据,并发送给行空板M10,根据土壤湿度来调整水泵的开关状态,保障校园植物的正常生长。
功能需求
土壤湿度监测:通过内置的传感器实时监测土壤湿度,当土壤过于干燥或湿润时,通过物联网提醒用户进行相应操作。
自动灌溉系统:根据土壤湿度数据和预设的养护计划,自动调节内置的水泵进行精准灌溉。
材料清单
行空板M10
土壤湿度传感器
温湿度传感器
水泵及水管
电源适配器及电池组
1硬件连接
校园植物养护助手摇监测植物园环境钟的温湿度、土壤湿度等数据,并通过控制水泵的开关状态来实现开启/关闭水泵,因此,需要给行空板M10接入土壤湿度传感器、温湿度传感器以及水泵。硬件接线图如下:

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

程序运行界面如下:

3物联网连接
网页输入10.1.2.3:8080,输入默认的账号“siot”,密码“dfrobot”,点击登录。
点击项目下的“查看设备列表”,可以看到“项目ID”、“名称”分别对应为程序中“IOT_pubTopic”的信息。点击“查看消息”,可以查看到Topic的MQTT消息记录,并伴有具体的消息内容及发送时间,这就是我们检测到的该时刻的土壤湿度、空气温度值、空气湿度值、环境光照强度值,如下图。
SIOT数据界面如下:

4校园植物养护助手模型外观
使用PVC水管和雪弗板制作校园植物养护助手的模型。
模型外观如下:
备注:水管有钻孔洞,并使用竹篾进行引流滴灌到植物上方。
5校园植物养护助手整体效果
如下图:


# -*- 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="关")
评论