# Greenhouse-Control-System **Repository Path**: jiaqinbi/greenhouse-control-system ## Basic Information - **Project Name**: Greenhouse-Control-System - **Description**: 多节点分布式大棚感控系统,目录包含硬件平台驱动代码以及微信小程序代码。项目为嵌入式系统设计大赛开发的作品,仅供个人交流学习使用。 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 11 - **Forks**: 7 - **Created**: 2021-07-08 - **Last Updated**: 2025-09-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 龙芯智能温室感控系统 温室大棚智能感控系统基于智龙开发板进行开发,通过搭载RT-Thread实现了设备的联网,将采集到的经过异常处理之后的数据上传到云端,并带有自动触发功能,同时开发了微信小程序,可以对多个温室大棚进行监测和控制,可实现多个大棚互联,温室数据智能感知,环境的智能控制。 ## 一、设计概述 ### 1.1设计目的 针对农业领域下温室大棚分布范围广、环境数据监测不准确、分布式控制力差等问题,设计了一套智能温室感控系统。该系统基于智龙开发板进行开发,搭载国产RT-Thread操作系统,并实现了云平台的监控以及微信小程序的智能感控,系统分为数据感知层、传输层、服务层以及应用层,实现了温室大棚内数据的精确感知、远程传输以及智能调控,同时实现了各温室大棚之间的互联,可使用微信小程序终端进行各温室大棚的分布式感控。 ### 1.2 应用领域 随着物联网的快速发展,万物互联已经成为一个趋势。龙芯智能温室感控系统通过将物联网技术应用到传统农业控制当中,使用环境监测传感器和软件平台实现对温室大棚的感控。该系统硬件设备可以部署在各温室大棚内部进行数据的采集传输和终端下发指令的执行,同时在应用层可以实现集中的监测和控制。该套系统不仅可以运用在温室大棚中,还可以通过增加或修改传感器实现农业中各种环境数据的监控,还可用作农业场所外部的小型气候监测。 ### 1.3 主要创新点 - 将物联网技术应用到传统的嵌入式技术中,实现了设备的联网; - 实现了多个温室大棚的互联,进行分布式控制处理; - 可远程监控多个温室大棚,实现无人值守; - 微信小程序以及云平台进行数据监测,分布式控制表示指令下发之后由各大棚内部的硬件主控进行执行,减小计算处理压力; - 开发了云应用以及微信小程序等多个终端应用,可根据需要选择应用,并且云服务器中配置实现了邮箱报警功能; - 使用易扩展的传感器,只需修改地址码和问询数据帧即可增加采集设备; - 云服务器可通过多协议(如HTTP,MQTT等)进行对接,可实现第三方定制平台的接入。 ## 二、系统组成及功能说明 ### 2.1整体介绍 龙芯智能温室感控系统开发方向为数据采集类,其基于智龙开发板进行开发,搭载国产嵌入式实时操作系统RT-Thread,同时基于控制系统需求自行设计了数据采集扩展板以及设备控制板,环境监测传感器通过数据采集扩展板的485接口进行连接,主控板卡通过Modbus协议向485接口的传感器发送问询数据帧请求环境数据,设备使用Esp8266模块进行联网,联网成功之后通过MQTT协议将数据上传至ONENET云平台服务器,同时微信小程序使用http协议实时接收云平台存储的设备以及数据信息,通过云平台和微信小程序终端可对温室大棚内的信息进行实时监测以及可对大棚内的设备进行远程调控。物联网模型的系统架构框图如图1所示。 ![img](pic/clip_image002.png) 在上图可以看出,智能温室感控系统包含感知层、传输层、服务层以及应用层,各层介绍如下所示: 1) 感知层:感知层由主控板以及各环境监测传感器组成,本次设计选择的传感器为威盟士工业级传感器,分别有可以检测室内空气温湿度的空气温湿度传感器,检测室内二氧化碳浓度的二氧化碳传感器,检测室内光照度的光照传感器以及检测土壤温湿度水分的土壤温湿度传感器,其通过485接口与开发板的串口进行连接,使用Modbus协议进行通信,采集到的数据最终先保存在硬件设备待远程传输的串口缓冲区中。 2) 传输层:传输层首先接收到感知层发送过来的数据,待设备联网之后与ONENET服务器通过MQTT协议进行通信,使用MQTT协议进行云端数据的收发,发送数据到云端之后会产生一个报文返回到开发板进行确定是否发送成功。 3) 服务层:服务层即云服务器,本次设计选用的云服务器为中和移物的ONENET,在服务层可以对数据进行存储分析,以及设备信息的封装,封装成API之后第三方软件可通过API对其进行访问和控制,并且所有的监控端都需通过云服务器进行数据的收发,指令的发送和设备的控制。 4) 应用层:应用层即各种监控终端,例如本次设计中的微信小程序、云应用以及手机APP,最终都由温室大棚的用户或管理员来操控,方便使用其对所有大棚进行监测和控制。 系统软硬件设计结构框图如图2所示。 ![img](pic/clip_image003.png) 由上图中可以看出,系统结构包括主控单元、采集单元以及监测控制单元。其中主控单元为智龙开发板,采集单元为各传感器,其与主控单元之间通过Modbus协议进行通信,监测控制单元为云服务器和各应用如微信小程序、云应用等,其执行机构为设备控制扩展板。详细介绍如2.2小节所示。 ### 2.2 各模块介绍 模块介绍主要围绕图2系统结构框图进行描述,如下所示: 1) 主控单元:主控单元结构图如图3所示。 ![img](pic/clip_image004.png) 图3 主控单元结构图 主控单元核心为龙芯赞助的智龙开发板,通过在智龙开发板上搭载RT-Thread完成了本次硬件驱动的编写以及系统的运行,主控板通过串口接收Modbus协议传输过来的传感器数据,并在使用ESP8266联网之后使用MQTT协议与云服务器通信,为微信小程序以及云应用提供服务。本次设计通过智龙开发板引出的双排引脚首先设计了第一层扩展板(数据采集扩展板)。 2) 采集单元:采集单元主要包括各环境监测传感器以及数据采集扩展板,在数据数据采集扩展板中设计了485转串口电路。其与主控单元之间通过Modbus协议进行通信,采集到的数据定时发送至串口缓冲区。原理如下图所示。 ![img](pic/clip_image005.png) 图4 采集单元原理图 上图中,空气温湿度传感器、二氧化碳传感器以及光照传感器是集成在百叶箱内部,通讯时按照寄存器地址进行区别,土壤温湿度为独立的封装,以上传感器与主控板之间的通讯协议为Modbus协议,其是通过数据帧的形式请求和发送数据的,多个485设备只需设置不同的地址码即可,传感器体积小、重量轻、安全可靠,经久耐用,其地址和波特率皆可设置,主从机数据帧如表3、4所示: 表3 主机问询帧格式 | 地址码 | 功能码 | 寄存器起始地址 | 寄存器长度 | 校验码低位 | 校验码高位 | | ------ | ------ | -------------- | ---------- | ---------- | ---------- | | 1字节 | 1字节 | 2字节 | 2字节 | 1字节 | 1字节 | 表4 从机应答帧格式 | 地址码 | 功能码 | 有效字节数 | 数据一区 | 第二数据区 | 第N数据区 | 校验码 | | ------ | ------ | ---------- | -------- | ---------- | --------- | ------ | | 1字节 | 1字节 | 1字节 | 2字节 | 2字节 | 2字节 | 2字节 | 例如温湿度的主机问询帧和从机应答帧分别如表5、表6所示: 表5 温湿度问询帧 | 地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 | | ------ | ------ | --------- | --------- | ---------- | ---------- | | 0x03 | 0x03 | 0x00 0x00 | 0x00 0x02 | 0xC5 | 0xE9 | 表6 温湿度应答帧 | 地址码 | 功能码 | 有效字节数 | 湿度值 | 温度值 | 校验码低位 | 校验码高位 | | ------ | ------ | ---------- | --------- | --------- | ---------- | ---------- | | 0x03 | 0x03 | 0x04 | 0x02 0x92 | 0xFF 0x9B | 0x79 | 0xFD | 当温度小于0℃时采用补码形式计算,则温度为0xFF9B=-101 => 温度=-10.1℃;湿度为0x0292=658 => 湿度=65.8%。 数据采集流程图如图5所示。 ![img](pic/clip_image006.png) 数据采集时设计的485转串口电路如图6所示。 ![img](pic/clip_image008.png) 数据采集扩展板如图7所示。 ![img](pic/clip_image010.jpg) 3) 监测控制单元:监测控制单元主要是依赖ONENET云服务器提供服务来实现微信小程序和云应用对温室大棚数据的监测以及设备的控制,控制设备是基于自行设计的设备控制板进行执行的。监测控制单元包含云可视化应用、微信小程序以及手机APP。监控流程图如图8所示。 ![img](pic/clip_image012.png) 由上图可知,在板卡联网成功之后,系统会通过MQTT协议连接并发送数据至ONENET服务器,发送后待返回成功报文之后便会在云端存储数据,通过自行设计的云应用可对数据进行可视化显示,并且可以下发命令对设备进行控制,同时开发有微信小程序和手机APP对温室大棚内的硬件设备进行监控。受控板卡的执行器为自行设计的设备控制板,控制板中使用了灯光板模拟光照和5V小水泵模拟洒水,5V水泵通过3V继电器进行驱动,光照灯电压为3.3V,同时控制方式有远程APP控制和板卡按键控制两种手动方式,并且可以通过软件设定规则进行自动控制。设备控制扩展板如图9所示。 ![img](pic/clip_image014.jpg) ### 2.3 组成部分 - 大赛指定的智龙开发板 - 自行设计的数据采集扩展板与设备控制板,外加模拟照明的照明板 - 国产RT-Thread操作系统 - ONENET云服务器 - 用于智能检测控制的微信小程序 - 云应用智能监控程序 - 手机监控APP ## 三、作品贴图 ### 3.1 系统使用说明 1. 按照提前烧入的SSID和PASSWORD配置并开启热点; 2. 按照设计接好线路安放好设备,上电; 3. 等待开发板上传指示灯闪烁时代表网络连接和服务器连接成功,正在上传采集到的数据; 4. 打开微信小程序或者云应用可以对大棚内的信息和设备进行监控; 5. 微信小程序中可以修改数据报警规则,数据超过上下限时会呈现红色; 6. 云服务器中可以进行邮箱报警的设置,数据超过上下限时会发送报警信息至指定邮箱; 7. 设备控制分为自动控制、远程控制和手动控制:自动控制下根据代码中设定的规则待检测的数据到指定值或低于下限时会开启对应设备,如光照不足会开启灯光进行光照;远程控制为微信小程序或者云应用对设备下发指令进行控制;手动控制为大棚内按键控制。 ### 3.2 作品贴图 1. 硬件设备总览如下图所示。 ![img](pic/clip_image00233.png) ![img](pic/clip_image004.jpg) 在上图中,传感器由开关电源输出15V直流电进行供电,温湿度、光照、二氧化碳传感器集成在百叶箱内部,传感器通过Modbus协议与主控板进行通信。 2. 云平台应用部分界面入下图所示。 img ![img](pic/clip_image008.jpg) img 3. 微信小程序部分截图如下图所示。 ![img](pic/clip_image016.jpg) ![img](pic/clip_image024.jpg) 4. 手机APP部分截图如下图所示。 ![img](pic/clip_image032.jpg) ## 四、 终端应用使用说明 ### 4.1微信小程序使用说明 1) 扫描微信小程序码,如下所示: ![image-20210708211349815](pic/image-20210708211349815.png) 2) 点击授权登录,进入主界面; 3) 首页的设备列表可显示设备在线状态,点击在线的温室大棚节点,可显示最新的大棚内的数据信息; 4) 点击底部“查看|设备规则”,可修改规则改变数据显示状态,数据显示超出正常范围时则显示红色进行预警; 5) 返回点击离线状态的设备,查看到的数据为最后上传的数据,可根绝时间信息查看最后在线时间; 6) 返回主界面点击底部“操作”按钮,选择设备; 7) 点击下拉框选择离线设备时,则提示“请点击下拉框选择设备”; 8) 点击下拉框选择在线设备时,则可对设备进行远程控制,目前控制的设备有光照以及水泵,后续会增加; 9) 点击底部“我的”,可查看到系统获取的微信头像和昵称;在“我的”中,开发有微信官方的信息反馈、联系方式、以及关于我们 ### 4.2 云平台使用说明 1) 进入设备云APP,选择“龙芯智能温室感控系统”进入; 2) 首页可选择大棚节点,选择节点1进入,则可以文字的形式显示当前大棚内的数据信息; 3) 点击侧边栏的不同要素,则可以可视化(折线图、树状图)的形式显示当前要素的数据信息; 4) 点击侧边栏的“设备控制”,则可对设备进行远程控制;点击侧边栏的“节点选择”,则可对不同温室大棚节点进行选择。 ## 五、代码目录结构 ### 5.1硬件平台 | 名称 | 描述 | | --------------------------------------------- | -------------------------------------------- | | Hard-Greenhouse-Control-System/bsp/ | 龙芯1C的板级支持包以及驱动代码 | | Hard-Greenhouse-Control-System/components/ | RT-Thread 的各个组件代码,例如 finsh,gui 等 | | Hard-Greenhouse-Control-System/documentation/ | 相关文档,如编码规范等 | | Hard-Greenhouse-Control-System/examples/ | 相关示例代码 | | Hard-Greenhouse-Control-System/include/ | RT-Thread 内核的头文件 | | Hard-Greenhouse-Control-System/libcpu/ | 各类芯片的移植代码 | | Hard-Greenhouse-Control-System/src/ | RT-Thread 内核的源文件 | | Hard-Greenhouse-Control-System/tools/ | RT-Thread 命令构建工具的脚本文件 | ### 5.2 微信小程序 | 名称 | 描述 | | --------------------------------------- | ---------------------- | | WeChat-Greenhouse-Control-System/image/ | 图片素材库 | | WeChat-Greenhouse-Control-System/js/ | 全局使用javascript文件 | | WeChat-Greenhouse-Control-System/pages/ | 各页面文件 | | WeChat-Greenhouse-Control-System/utils/ | 公用组件包 |