木子呢 发表于 2023-11-6 14:45:46

测试


点击蘑菇云创造 关注我们


智能植物育苗养护数据采集系统


项目介绍



一、背景介绍

随着全球气候变化和环境恶化问题日益严重,低碳环保已成为全球关注的焦点。实现低碳环保的生活方式和发展模式,对于缓解环境压力、保护生态系统具有重要意义。利用活动主办方提供的硬件包(水温传感器、水TDS传感器、空气温湿度传感器、氧气传感器、空气质量传感器、土壤湿度传感器、分贝传感器、环境光传感器、行空板、SCI采集模块),通过传感器联动控制,可以实现植物生长的智能化管理,提高植物苗期的生长质量和成活率,同时也为低碳环保事业贡献一份力量。

该系统能够实时监测植物生长所需的温度、湿度、光照强度、空气质量以及土壤湿度等参数,并通过数据分析技术为植物提供最佳的生长环境。

具体来说,我们可以将水温传感器安装在水箱中,用于实时监测水温,并控制加热和降温设备,以保证水温在植物生长所需的范围内。同时,水TDS传感器可以检测水中的溶解物质含量,从而判断水的质量是否符合植物的要求。如果水质不佳,系统会及时发出警报并进行处理。

空气温湿度传感器可以检测空气中的温度和湿度,从而精准控制环境温湿度,并自动开启或关闭空气加湿设备。氧气传感器可以检测室内氧气含量,避免植物缺氧或二氧化碳过高的情况。空气质量传感器可以检测室内空气中有害物质含量,并自动开启或关闭空气净化器。

土壤湿度传感器可以实时检测植物生长介质中的湿度,根据植物所需的水分量,自动调节灌溉设备。分贝传感器可以检测室内噪音水平,保证植物能够在安静的环境中生长。环境光传感器可以检测室内光照强度,自动调节灯光设备,保证植物得到足够的

二、【遇到的问题】

因为缺少一些配套的硬件,只是在理论上实现一些效果,所以本作品主要讲了数据采集。

制作过程



步骤1 硬件准备

材料清单

行空板X1

SCI采集模块X1

电容式土壤湿度传感器X1

模拟声级计/分贝计/噪音计X1

NS160 空气质量传感器X1

I2C 氧气传感器X1

模拟TDS传感器X1

SHT31-F数字温湿度传感器X1

I2C VEML7700 环境光传感器X1

水温度传感器X1

两头PH2.0-3P白色硅胶绞线 长10cm X4

两头PH2.0-4P白色硅胶绞线 长10cm X5

硬件连接:分贝传感器、光线传感器、氧气传感器、温湿度传感器接到SCI,SCI接到行空板,TDS传感器、空气质量传感器、水温传感器、土壤湿度传感器和摄像头连接到行空板,行空板连接到电脑。

如图:



步骤2 软件准备

Mind+1.8.0版本SIoT V2版本

下载链接:

腾讯微云下载(推荐):

https://share.weiyun.com/6SFhgLQj

阿里云盘下载:

https://www.aliyundrive.com/s/BXPfB9TpjEn

提取码: 49vj

百度云盘下载:

https://pan.baidu.com/s/1vjb8phx8wUf0BiLlEQV9oQ?pwd=mind

提取码:mind

行空板上默认内置的是SIoT V1,而Mind+可视化平台需要使用SIoT V2,因此需要先进行升级。

升级方法:

[*]
下载升级文件:升级行空板SIOTV2.mp



2.打开Mind+,在项目中打开上一步下载的升级行空板SIOTV2.mp文件。



3.行空板连接电脑待启动完成,点击连接远程终端中选择10.1.2.3连接行空板,连接成功之后点击运行,等待行空板重启完成即可。



4.此时打开行空板上的SIOT网页,按Ctrl+F5刷新页面,可以看到界面已经SIOTV2了,登录账号是siot,密码dfrobot。





连接行空板上的SIoT服务器

在可视化平台上输入行空板的IP,USB线连接电脑时为10.1.2.3,点击完成即连接到了行空板上的SIoT服务器。



开关按钮选择Topic为siot/测试,按钮开启发送on,关闭发送off



步骤3 SIoT服务器设置

打开http://10.1.2.3:8080/topics网址,新建主题如下:







步骤4 Mind+扩展设置

1.官方库添加



2.pinpong库添加



3.用户库添加



步骤5 编程

1.初始化



2.MQTT订阅



3.天气预报部分设置

本部分借鉴了[教程]:【行空板图形化Python入门教程】第15课:天气助手

用自己的账号登录,地址改为兰山,主要变成如下:



4.变量设置



5.天气预报内容获取设置



6.传感器数据获取设置



7.摄像头图传设置



8.其他设置



代码:
#-*- coding: UTF-8 -*-# MindPlus# Pythonimport base64from io import BytesIOfrom PIL import Imagefrom pinpong.libs.dfrobot_ens160 import Ens160from pinpong.libs.dfrobot_tds import TDSfrom pinpong.extension.unihiker import *from pinpong.board import Board,Pinfrom pinpong.board import DS18B20from dfrobot_rp2040_sci import *from pinpong.board import Boardfrom pinpong.board import Pinimport requestsimport siotimport timeimport cv2Board().begin()siot.init(client_id="8901479492667037",server="10.1.2.3",port=1883,user="siot",password="dfrobot")siot.connect()siot.loop()p_p21_analog=Pin(Pin.P21, Pin.ANALOG)SCI1 = DFRobot_RP2040_SCI_IIC(addr=0x21)while SCI1.begin() != 0:    print("Initialization Sensor Universal Adapter Board failed.")    time.sleep(1)print("Initialization Sensor Universal Adapter Board done.")def frame2base64(frame):    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)    img = Image.fromarray(frame) #将每一帧转为Image    output_buffer = BytesIO() #创建一个BytesIO    img.save(output_buffer, format='JPEG') #写入output_buffer    byte_data = output_buffer.getvalue() #在内存中读取    base64_data = base64.b64encode(byte_data) #转为BASE64return base64_data #转码成功 返回base64编码def base642base64(frame):data=str('data:image/png;base64,')    base64data = str(frame2base64(frame))    framedata = base64data    base642base64_data = data + str(framedata)return base642base64_datavd = cv2.VideoCapture()vd.open(-1)while not (vd.isOpened()):    passp_ens160 = Ens160(0x52)p_ens160.set_pwr_mode(p_ens160.ENS160_STANDARD_MODE)p_ens160.set_temp_hum(27, 67)tds1 = TDS(Pin((Pin.P22)))ds1 = DS18B20(Pin((Pin.P24)))siot.getsubscribe(topic="siot/天气情况")siot.getsubscribe(topic="siot/实时温度")siot.getsubscribe(topic="siot/最高温度")siot.getsubscribe(topic="siot/最低温度")siot.getsubscribe(topic="siot/湿度")siot.getsubscribe(topic="siot/风向")siot.getsubscribe(topic="siot/风力")siot.getsubscribe(topic="siot/风速")siot.getsubscribe(topic="siot/空气质量")siot.getsubscribe(topic="siot/气压")siot.getsubscribe(topic="siot/摄像头")siot.getsubscribe(topic="siot/SHT31温度")siot.getsubscribe(topic="siot/SHT31湿度")siot.getsubscribe(topic="siot/ENS160二氧化碳")siot.getsubscribe(topic="siot/氧气传感")siot.getsubscribe(topic="siot/ENS160TVOC")siot.getsubscribe(topic="siot/ENS160空气质量")siot.getsubscribe(topic="siot/水温传感")siot.getsubscribe(topic="siot/TDS传感")siot.getsubscribe(topic="siot/土壤湿度")siot.getsubscribe(topic="siot/分贝传感")siot.getsubscribe(topic="siot/环境光")siot.getsubscribe(topic="siot/学校公告栏")siot.getsubscribe(topic="siot/值班教干")siot.getsubscribe(topic="siot/联系电话")siot.getsubscribe(topic="siot/日期")siot.getsubscribe(topic="siot/星期")siot.getsubscribe(topic="siot/时间")siot.getsubscribe(topic="siot/传感器")siot.getsubscribe(topic="siot/检修时间")url = (str("https://www.yiketianqi.com/free/day?appid=29988737&appsecret=Jipy6ZPN&unescape=1&city=") + str("兰山"))response = requests.get(url)data = response.json()while True:    ShuiWen = ds1.temp_c()    TDS = tds1.get_value()    SHT31WenDu = SCI1.get_value1(SCI1.eALL,"Temp_Air")    SHT31ShiDu = SCI1.get_value1(SCI1.eALL,"Humi_Air")    YangQi = SCI1.get_value1(SCI1.eALL,"O2")    ENS160CO2 = p_ens160.get_eco2()    ENS160TVOC = p_ens160.get_tvoc()    ENS160KongQiZhiLiang = p_ens160.get_aqi()    TuRangShiDu = p_p21_analog.read_analog()    FenBei = SCI1.get_value1(SCI1.eALL,"Sound")    HuanJingGuang = SCI1.get_value1(SCI1.eALL,"Light")    siot.publish(topic="siot/天气情况", data=(str("天气情况:") + str((data["wea"]))))    siot.publish(topic="siot/实时温度", data=(str((str("实时温度:") + str((data["tem"])))) + str("°C")))    siot.publish(topic="siot/最高温度", data=(str("最高温度:") + str((str((data["tem_day"])) + str("°C")))))    siot.publish(topic="siot/最低温度", data=(str("最低温度:") + str((str((data["tem_night"])) + str("°C")))))    siot.publish(topic="siot/湿度", data=(str("空气湿度:") + str((data["humidity"]))))    siot.publish(topic="siot/风向", data=(str("风向:") + str((data["win"]))))    siot.publish(topic="siot/风力", data=(str("风力:") + str((data["win_speed"]))))    siot.publish(topic="siot/风速", data=(str("风速:") + str((data["win_meter"]))))    siot.publish(topic="siot/空气质量", data=(str("空气质量:") + str((data["air"]))))    siot.publish(topic="siot/气压", data=(str("气压:") + str((data["pressure"]))))    siot.publish(topic="siot/日期", data=(data["date"]))    siot.publish(topic="siot/星期", data=(data["week"]))    siot.publish(topic="siot/时间", data=(data["update_time"]))    siot.publish_save(topic="siot/SHT31温度", data=SHT31WenDu)    siot.publish_save(topic="siot/SHT31湿度", data=SHT31ShiDu)    siot.publish_save(topic="siot/氧气传感", data=YangQi)    siot.publish_save(topic="siot/ENS160二氧化碳", data=ENS160CO2)    siot.publish_save(topic="siot/ENS160TVOC", data=ENS160TVOC)    siot.publish_save(topic="siot/ENS160空气质量", data=ENS160KongQiZhiLiang)    siot.publish_save(topic="siot/水温传感", data=ShuiWen)    siot.publish_save(topic="siot/TDS传感", data=TDS)    siot.publish_save(topic="siot/土壤湿度", data=TuRangShiDu)    siot.publish_save(topic="siot/分贝传感", data=FenBei)    siot.publish_save(topic="siot/环境光", data=HuanJingGuang)    ret, grab = vd.read()    siot.publish(topic="siot/摄像头", data=base642base64(grab))    siot.publish_save(topic="siot/值班教干", data=(str("值班人员:") + str("王二麻子")))    siot.publish_save(topic="siot/联系电话", data=(str("联系电话:") + str("13900000000")))    siot.publish_save(topic="siot/学校公告栏", data="今天下午5点全体员工到会议室集合开会")    siot.publish_save(topic="siot/检修时间", data="2023年6月29日")    siot.publish_save(topic="siot/传感器", data="水温传感器安装在水箱中,用于实时监测水温,并控制加热和降温设备,以保证水温在植物生长所需的范围内。TDS传感器可以检测水中的溶解物质含量,从而判断水的质量是否符合植物的要求,如果水质不佳及时发出警报并进行处理。空气温湿度传感器可以检测空气中的温湿度,从而精确控制环境温湿度,并自动开启或者关闭空气加湿设备;氧气传感器可以检测室内氧气含量,避免植物缺氧或者二氧化碳过高的情况;空气质量传感器可以检测室内空气的质量,并自动开启或者关闭空气净化器;土壤湿度传感器可以实时监测植物生长介质的湿度,根据植物所需的水份量,自动调节灌溉设备;分贝传感器可以检测室内噪音水品,保证植物能够在安静的环境中生长;环境光传感器可以检测室内光照强度,自动调节灯光设备,保证植物得到足够的光照。")


步骤6 可视化大屏设置

可视化大屏布局如下图:



背景用的是网络图片进行了PS。

【效果展示】



效果用录屏实现的‍



总结



通过本次作品制作,已经能熟练的使用SCI和Mind+数据可视化,确实是神器啊。由于传感器比较多,SCI和行空板预留接口有限,所以直接引出I2C,利用面包板进行了扩展,运行了几天,偶尔SCI有卡死,但是我感觉可能杜邦线连接不牢固问题,后来用交代粘牢后,没有再出现卡死现象。本作品主要是数据采集方面的运用,数据采集后如何运用实现自动化,后续需要大量时间来采集信息,例如不同植物对环境要求不一样,就得根据具体情况进行预警设置和自动化。

资源



附件

智能植物育苗养护温室数据采集系统.rar





往期推荐

【比赛优秀案例】低碳生活-传统酿醋工艺产生的二氧化碳的监测和利用

【比赛优秀案例】闯关游戏-魔镜传奇 勇敢救小猪

【比赛优秀案例】智慧校园“开心农场”物联网可视化数据平台

【比赛优秀案例】气象及大气质量监测可视化平台

【比赛优秀作品】无人超市货架管理系统

【比赛优秀作品】互动式智能广州建筑文化动态展台,为建筑发声!

【比赛优秀作品】甘谷辣椒订单式智能大棚

【比赛优秀作品】上海建筑魔盒



页: [1]
查看完整版本: 测试