农业是国民经济的基础,在国家经济发展中有着不可替代的重要作用。随着物联网技术的快速发展,智慧农业已成为了现代农业发展的新方向。基于此,本文设计并实现了一套基于物联网的智慧农业监测系统,系统采用ESP32作为主控板,并搭载多种传感器,实时采集与农作物生长环境相关的温湿度、光照强度、土壤湿度、二氧化碳浓度等环境参数,然后通过MQTT协议将采集的数据上传到巴法云物联网平台,最后通过Web端和微信小程序端实现对农业的远程监测和自动预警处理。该系统的实现促进了农业精细化、高效化管理,为现代智慧农业提供一种可行的解决方案。
基于物联网的智慧农业监测系统需要实现实时数据采集、数据可视化展示、远程设备控制和自动预警等功能。系统首先以ESP32为系统数据采集终端来连接温湿度、光照强度、土壤湿度和二氧化碳等传感器来实现对作物生长环境参数进行实时数据采集,然后将采集的数据通过MQTT协议上传至巴法云物联网平台,通过Web端和微信小程序实现对数据的可视化展示、设备远程控制和自动预警处理。可视化展示就是将农业区的环境参数以及预警事件信息以图表或折线图的形式展现在用户面前,让用户可以更加快速、直观的获取数据信息。用户可以根据预警事件在Web端或小程序端来进行相应的操作,远程控制设备调整环境参数,让作物处于最适宜生长的环境中。整个系统流程图如图所示。

整个系统开发所用到的开发语言和工具如下:
(1)开发语言
硬件端:Arduino C语言
服务器端:Node.js 、数据库语言
Web端和微信小程序端:HTML、CSS、JavaScript、Vue.js框架
(2)开发工具
编译器:Visual Studio Code、Arduino IDE、微信开发者工具
数据库:MySQL数据库
挂载环境:阿里云服务器、unbutu系统、巴法云物联网平台
硬件:ESP32主控板、DHT11温湿度传感器、光敏电阻传感器、土壤湿度传感器、红外二氧化碳传感器、风扇、蜂鸣器和水泵等
本文所设计的基于物联网的智慧农业监测系统的软件框架包括了硬件模块、巴法云物联网平台、PC端和微信小程序端,其中硬件模块主要是ESP32模块、传感器模块和设备控制模块。具体的工作流程是通过ESP32数据采集终端来连接温湿度、光照强度、土壤湿度和二氧化碳等传感器来实现对作物生长环境参数的数据采集,然后将采集的数据传送到巴法云物联网平台,最后通过Web端和微信小程序实现对农业的远程监测、可视化展示和自动预警处理。基于物联网的智慧农业监测系统的软件设计框架如图所示。

本系统使用的数据云平台是巴法云物联网平台,下图为巴法云物联网平台开发工作流程图,在此平台进行产品开发时,需要经过以上的准备工作流程。

1. 登陆注册:可以使用邮箱进行注册,也可使用微信扫码进行一键登陆,注册完成以后,云端后台会把开发者与其创建的产品相关联。
2. 获取密钥:登陆完成后,在控制台可以获取到自己的私钥UID,私钥UID是用户上传数据至巴法云平台的标识符,如下图所示。

3. 在控制台创建主题:在巴法云控制台创建主题,如下图所示。

4. ESP32通过MQTT连接上巴法云平台后可以与平台上的主题进行通信,每个设备有相对应的主题,两者之间的通信不会出现错误。如下图所示。

5. 查看消息:可使用控制台查看消息,如果Web端或微信小程序订阅了这个主题,就可以实时接收到推送来的消息。
Web端的功能有天气信息查询,数据监测,远程设备控制,用户管理,角色管理和设备管理。具体的界面设计如下:
Web端系统登录界面

Web端系统首页

Web端数据监测界面

Web端设备控制界面

Web端用户管理界面

Web端权限管理界面

Web端角色管理界面

Web端设备管理界面

小程序端登录界面

小程序端系统首页界面

小程序端数据监测界面

小程序端设备控制界面

小程序端用户列表界面

小程序端用户详情界面

小程序端个人中心界面

小程序端个人详情界面

测试环境
(1)环境监测终端:Web端、微信小程序端
(2)数据采集端:ESP32
(3)数据库服务器端:MySQL数据库
(4)数据云平台:巴法云物联网平台
系统的ESP32与各个传感器和风扇、水泵设备的连接图如下图所示。

系统整体实物图如图所示。

随着互联网和物联网的快速发展,智慧农业已成为我国农业现代化建设的必然趋势。本文设计并实现了基于物联网的智慧农业监测系统,打破了传统的人工、低效率的农业管理形式,系统运用了新兴的物联网技术,符合智能化、数字化、智慧化农业管理的要求。该系统的实现促进了农业精细化、高效化管理,为现代智慧农业提供一种可行的解决方案。本系统实现的功能如下:
(1)以ESP32为数据采集终端连接温湿度、光照强度、土壤湿度和二氧化碳等传感器采集作物生长环境参数和连接风扇、水泵和蜂鸣器等设备,构建了一套智慧农业监测系统。
(2)将智慧农业监测系统采集到的环境参数数据上传到巴法云物联网平台中,然后使用node.js来搭建好数据API接口,用于Web端和微信小程序端前端页面可视化展示的数据调用。
(3)用vue.js前端框架搭建了Web端和微信小程序端系统界面,通过API接口将收集到的传感器数据可视化展示在Web端和微信小程序端。
(4)通过温湿度和土壤湿度传感器监测的数据结合不同作物的需水规律和需水量实现精准灌溉功能,智能控制灌溉设备适时适量地浇水。
(5)在Web端和微信小程序端系统中实现了自动预警和设备远程控制功能。保障农业区各项环境参数趋于一个理想水平,使作物生长具有良好的生长环境,提高农业生长效率。
基于物联网的智慧农业监测系统的整体代码链接如下:
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe
我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源
我正在根据Rakefile中的现有测试文件动态生成测试任务。假设您有各种以模式命名的单元测试文件test_.rb.所以我正在做的是创建一个以“测试”命名空间内的文件名命名的任务。使用下面的代码,我可以用raketest:调用所有测试require'rake/testtask'task:default=>'test:all'namespace:testdodesc"Runalltests"Rake::TestTask.new(:all)do|t|t.test_files=FileList['test_*.rb']endFileList['test_*.rb'].eachdo|task|n
我想要像“嘿那里”这样的东西变成,例如,#316583。我希望将任意长度的字符串“归结”为十六进制颜色。我不知道从哪里开始。我在想,每个字符串的MD5散列都是不同的-但如何将该散列转换为十六进制颜色数字? 最佳答案 你可以只取几位前几位:require'digest/md5'color=Digest::MD5.hexdigest('Mytext')[0..5] 关于ruby-如何使用Ruby基于字母数字字符串生成颜色?,我们在StackOverflow上找到一个类似的问题: