| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 基于Proteus,Arduino,Flask搭建的智能大棚管理系统 -> 正文阅读 |
|
[Python知识库]基于Proteus,Arduino,Flask搭建的智能大棚管理系统 |
基于Proteus,Arduino,Flask搭建的智能大棚管理系统?博主介绍
智能大棚监测管理系统简介主要内容
采用的工具
系统简介为了实现农业温室大棚的自动化,智能化管理,设计了智能大棚监测管理系统,该系统是基于嵌入式设计技术,利用了Arduino Uno平台,虚拟仿真实验环境Proteus软件,实时操作系统FreeRTOS,实现硬件及Arduino虚拟开发和仿真,根据传感器的检测值,进行判断处理,具有自动控制硬件调节功能和警报功能,再结合Python的Flask库搭建服务器端,serial库进行硬件和服务器端信息传输,以及MySQL进行数据存储,实现了对大棚内温度,湿度,光照,气压的监测和记录,以及对硬件设备,如风机,除湿器,照明,气泵的运行状态的监测和管理,能在Web端实时显示环境和设备运行数据和选择自动以及手动控制硬件的模式,能在前端控制硬件运行,能从数据库选择获取不同时间段的数据并以图表形式展示,并且具有登录登出功能。该系统操作简单,不需耗费大量人力物力学习掌握,能满足正常的数据监控和远程管理以及自动管理需要。 需求分析和概要设计需求分析在当今智能化的背景下,传统的管理方式已经无法满足对温室大棚的实时监测和控制,尤其是因为当今的温室大棚种植面积普遍较大的,因此,从用户的角度出发,对于大棚的管理,最重要的就是实时监测处理大棚内的温度,湿度,光照和棚内气压等数据,这就需要智能大棚管理系统具有对环境的敏感性和监测的实时性,对于用户而言,他可能还需要了解最近一段时间棚内环境的变换以对未来可能发生的情况进行提前预测,以及了解设备的运行情况做出相应更换等措施,因此需要保存环境和设备运行状况的历史数据。并且系统还应该具有智能处理的功能,当环境变量发生改变,处于不适宜大棚内作物生长的环境时,系统还应该自动控制设备进行相应操作。除此以外,系统需要具有简单易操作,低成本的特点,这样才能减少人工看护和操作的费用,降低成本。对于远程在外的用户,还可以通过云平台进行实时监测和设备控制,从而实现对大棚的智能化,自动化监测管理。 概要设计通过上文对需求的分析,可以得出,智能大棚监测管理系统应该具有数据监控模块,数据传输模块,控制模块,警报模块,数据库模块,服务器模块以及前端模块,系统功能结构框图如图2.1所示。 数据监控模块数据监控是本系统最为重要的一环,数据的获取主要通过三种器件,包括DHT11温湿度传感器,LDR光敏电阻以及BMP180气压传感器,它们在Proteus软件示意图如图2.2所示。数据监控模块的逻辑控制流程图如图2.3所示。 由流程图可以看出,数据监控模块主要依靠不断读取三个传感器对温度,湿度,光照,气压的数据信息实现。 数据传输模块数据传输模块包括了,硬件端传输数据到数据库以及服务器端传输数据到硬件两个部分。 硬件到数据库硬件端到数据库之间的数据传输主要是为了进行数据存储,因此需要规定硬件写入到串口的格式,并传到服务器端接受,按照规定的格式解析并存储到数据库,硬件到数据库的数据传输流程图如图2.4所示。 服务器到硬件服务器端到硬件的数据传输主要是为了传输前端的控制信息,包括控制选择自动与手动模式,是否开启或关闭相应硬件等控制信息,服务器到硬件的数据传输流程图如图2.5所示。 控制模块控制模块包括了自动控制模块和手动控制模块。 自动控制模块当硬件第一次运行时,默认为自动模式,此时,数据监控时会根据设定的危险范围进行相应的操作,例如当温度超过某个值时,打开风机,否则关闭风机,当湿度超过某个值时,打开除湿器,否则关闭除湿器,自动控制流程图如图2.6所示。 手动控制模块当服务器端传进来的数据为9时,关闭自动模式,此时硬件运行状态通过之后服务器端传来的数据控制,不同的数据对应不同的操作,手动控制流程图如图2.7所示。 警示灯模块为了更好的提醒用户温室大棚内的环境是否正常,设置了警示灯模块,通过不断获取环境数据并和危险区间的上下界进行比较,执行相应的警示灯亮起或熄灭操作,警示灯流程图如图2.8所示 数据库模块数据库模块主要是编写成数据库相关的API,在前端点击,或者自动更新后将会向服务器端请求数据,然后服务器端调用数据库API执行相应的操作,包括:数据库和表的创建,初始用户数据导入,插入数据,按次数搜索最新数据,按时间搜索范围内的数据等等,数据库API结构图如图2.9所示。 服务器模块对于智能大棚管理系统,服务器的作用主要用于响应前端的请求,以及对串口和数据库的连接和处理,当前端发来不同的请求后,服务器进行相应的操作,包括,返回HTML页面,调用数据库API以及对串口的读取和写入,打开和关闭操作,其具体的功能结构图如图2.10所示。 前端模块智能大棚系统的前端部分主要功能是展示环境数据和设备数据,通过向服务器端请求不同数据,实现对两种数据的最新一条数据和最近一小时数据,最近三小时数据,最近一天数据,最近两天数据的获取,并用折线图,柱状图和表格的形式展示,并且前端会像服务器请求登录状态,如果没有登陆则会自动跳转到登陆页面,保障了用户的信息安全,登录后用户可以通过前端监测数据,并且选择登出,打开或关闭自动模式,打开或关闭风机等硬件设备的功能,除此之外,前端还能每个一段时间自动更新,具体的功能结构图如图2.11所示。 系统设计与实现硬件设计与实现硬件总体电路原理图硬件电路主要依靠Proteus软件,仿真实现,如图3.1所示。其中包括了DHTT11温湿度传感器用于获取大棚内的温度和湿度;LDR,其阻值随光照强度的增大而减小,将其与一个10K电阻组成分压电路,使得读取模拟IO的电压值可以用于监测大棚内的光照强度;BMP180,是一种高精度的气压传感器,用于监测大棚内气压。D2,D3,D4,D5为警示灯,D6,D7,D8,D9依次模拟风机,除湿器,照明,气泵设备。COMPIM用于串口通信。 硬件系统设计硬件系统采用免费的实时系统FreeRTOS,其通过创建任务并调度实现系统的主要程序,在智能大棚系统中,硬件系统首先配置一系列IO口,定义了一些全局变量,如传感器的引脚,电压变量,所选择的智能模式,led端口等等,通过start_task()任务创建总任务zong_task(),在总任务内,不断读取串口传来的数据和传感器的数值,并写入串口,传递给服务器。 数据监控与传输在zong_task()中,程序在延迟3秒后依次读取每个传感器的值,并通过串口传递固定格式的数据,最终传递的数据格式,如图3.2所示,依次分别代表温度,湿度,光强,气压,自动模式,风机状态,除湿器状态,照明状态,气泵状态。读取传感器的函数如下所示。
自动控制和手动控制程序定义了一个bool类型的全局变量MYBOOL,用于表示当前模式是自动还是手动,当模式是自动时,串口读入的数据将不能控制硬件状态改变,只能控制模式的改变,此时,硬件系统将根据传感器的值进行自动打开或关闭硬件设备,而当模式是手动时,则只能通过串口读入的值来控制硬件设备的开启与关闭。定义的读入手动控制操作的伪代码如下:
定义的自动控制和警报操作伪代码如下:
数据库设计与实现数据库的连接与操作,主要使用了Python的pymysql库,以及MYSQL数据库,主要实现当服务器连接时,自动查找大棚数据库,如果不存在则自动创建数据库BigPeng和三张数据表users,logs,e_logs,分别记录用户,环境数据,设备数据,并且提供了基于SQL语句的数据插入,数据查询功能,并有良好的异常处理机制。其中环境数据表的创建如下所示:
数据查找主要有两种模式,一种是select_logs(timestamp),其会根据传入的时间戳,查找大于这一个时间的数据,即可以实现查找最近一小时,最近一天等的数据,具体的实现代码如下:
第二种是select_newlogs(index),其会根据传入的数量,按照时间倒序,查找最新的index条数据,具体的代码如下:
服务器设计与实现串口连接和数据插入服务器端的串口操作,主要运用了python的serial库和threading库,serial用于串口通信交互。而threading用于使用多线程循环接受串口数据,并存储到数据库中。
服务器框架设计与实现该智能大棚系统的服务器端主要使用Python的Flask服务器框架,能够快速接受前端的响应,支持session保存如登录状态等数据,结合之前编写的数据库API以及串口操作函数,能够实现对前端请求数据的获取和传递。其中获取某一时间段的函数如下所示:
由于json不支持时间类型的数据解析,因此每次需要服务器端将获取时间并转换为字符串类型的数据进行传递。 前端设计与实现前端包含四个页面,即登录页,首页,详细数据页,设备数据页。前端需要导入两个js文件,一个是jQuery,一个是echarts.js,后者主要用于数据图表的显示。
前端具有数据图表以及按钮实时显示功能,每隔一定时间,将会请求服务器再次更新数据,设置定时更新的代码如下:
系统测试硬件运行当硬件开启后,默认为自动模式,此时如果检测值超过设定的危险值后,警示灯将会点亮,并且运行响应的硬件设备,温度超过范围后自动控制的硬件运行图,如图4.1所示。一切正常时的运行图,如图4.2所示。 服务器运行当服务器运行后,将会查找BigPeng数据库是否存在,如果不存在,将会自动创建数据库和表,如果存在,则自动连接数据库,如图4.3所示。 前端运行当服务器和硬件系统开启后,进入首页将会自动跳转登录页面,如图4.4所示。 💫点击直接资料领取💫
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 15:24:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |