单片机学习小组
直播中

刘艳

7年用户 2320经验值
私信 关注

怎样使用APP开源框架去设计一款鱼塘智能控制系统呢

鱼塘智能控制系统是由哪些模块组成的?
怎样使用APP开源框架去设计一款鱼塘智能控制系统呢?

回帖(1)

尚文清

2022-3-1 15:18:49
本设计针对传统鱼塘的养殖和管理现状,面向中小型鱼塘养殖户设计开发了一套鱼塘智能控制系统,满足鱼塘养殖环境的数据采集无线传输、实时显示、远近程手动控制和自动控制等功能上的需求,可及时检测和控制影响鱼类生存生长的环境因素,避免人工判断观察失误或者操作的不及时造成大量鱼类死亡,有效减少人工成本消耗,而且还能降低系统运行维护成本,以适应中小型鱼塘养殖户节约成本的问题。

系统总体设计

本鱼塘控制系统主要由下位机设备控制端、云平台以及 APP 端组成。系统整体框架图如图所示:


►下位机

下位机是整个系统的控制执行部分,通过传感器对鱼塘环境因子进行检测以及控制通过控制设备调节鱼塘环境因子,通过本地显示面板实现近程控制。通过 APP端,可以远程观测鱼塘环境因子情况,并实现对鱼塘的远程控制。云平台作为数据中转站,APP通过云平台接收下位机上传的数据以及向下位机的控制设备发送控制命令

本系统在运行时,下位机设备控制端利用串口通过 WiFi 模块与外界通信,云平台作为数据中转中心,WiFi 和云平台利用广域网通过云端平台进行通信。

►云平台选择

本系统设计选用机智云物联网云平台,为物联网开发者提供方便,机智云平台搭建好后,平台可直接提供相应的 API 和 SDK,在开发 APP 时无需考虑繁杂的通讯协议,只需要考虑功能开发便可,降低了开发者的开发难度,也提高了开发效率。

机智云平台架构图如图所示:


为了更清晰地了解机智云,下面简单地总结了机智云平台地几个特点:

(1)灵活稳定。它的接入能力非常强,峰值时期可以允许上亿台设备同时接入。而且连接稳定可靠,机智云物联网云平台可以在短时间里处理上一条数据。

(2)使用简单。机智云平台提供了许多的技术资料,拥有完整的开发流程,极大地降低了开发难度。

(3)功能丰富。在机智云上开发项目的时候,用户可以按照自己的实际需求,可以把多个应用模块组合在一起,开发者也可以更加方便地对这些项目进行管理。

(4)方案丰富。机智云的市场调研团队非常强大,结合全世界各种类型的业务,尽可能地给各个行业提供了解决方案,而且方案库还在继续完善和增加。

►APP端

使用机智云提供的 APP开源框架设计一款鱼塘控制APP进行远程控制,并选用机智云官方提供地终端进行调试。

系统硬件实现

系统的硬件决定了系统具体能够实现的场景功能,一个良好的硬件设计直接关系到系统的稳定性以及性能的优势。

1、硬件端的整体结构

根据用户的需求和设计的要求,本系统的硬件部分由主控单元、WiFi通讯模块、传感器模块、控制模块、显示模块及电源模块等多个模块构成,硬件端框架图如下所示:


2、硬件模块组成

本文设计的智能水产养殖之鱼塘控制系统全部由模块化设计,模块组成图如图所示:


由根据上面的模块组成图可以看出,主控芯片模块在中心的位置,它的作用是对所有模块和设备进行控制,使这些外围模块相互协作形成一个完整的硬件控制系统,其利用本身的 I/O 接口或串口与传感器模块进行通信,获的传感器的监测数据;以及对控制模块进行控制,使相应的环境调节设备做出动作;通过 UART 与 WIFI 模块进行数据交换;以及与显示模块进行通信,及时地将监测传感器上传的数据以及控制动作显示在屏幕上。

3、硬件模块实现

根据模块组成图,下面分别对各大模块进行介绍。

♦ 主控芯片

在鱼塘智能控制系统中选择STM32F103ZET6微处理器作为主控芯片,为了确保系统对数据的快速处理、数据交换和传输过程中速率的精确性,因此采用STM32 最小开发板,其开发板如图所示:

♦ 显示模块

显示面板采用SDWa050T04屏幕,具有电容触摸、电阻触摸和不带触摸三种类型,用于对鱼塘数据显示和触摸控制。

♦ 控制输出模块

本文采用继电器控制模块来进行对外围设备,如进水泵、排水泵、酸碱液体泵、热水泵、充氧机的驱动控制,继电器实物图如下所示。

继电器原理图:


温度传感器

系统设计检测温度选择防水封装类型的 DS18b20 温度传感器,温度传感器实物图所示。

传感器原理图:

♦ 水位传感模块

本系统的水位传感器选用的是 HC-SR04 超声波传感器

由上图可以看出,该模块有四个引脚,分别是:VCC、TRAG、ECHO、GND,其中 VCC 接 5V 电源;TRAG 控制端口,单片机通过该端口控制该模块发送超声波,ECHO 是接受端,单片机通过该端口接收返回的监测信号,GND 连接地线。我们在设计时只需要将 TRAG 和 ECHO 两个引脚与单片机连接即可。

♦ 溶解氧/温度气压传感模块

由于水中的溶氧量与当地气温和大气压有着密切的关系,只要测量出空气中的气温和气压后可以间接地计算出水中的溶解氧地含量。考虑到溶解电极昂贵的价格,因此可用温度气压模块替代溶解氧传感模块,进而间接地测量当地水中地溶解氧,温度气压模块选用BMP180 继承模块,实物图如下所示。

该模块的电路原理图如下:


PH传感模块

PH 传感器模块由PH传感器和放大电路组成,PH传感器采用 E201-C-9传感器,是用两种电极结合的组成的复合电极,可测量的PH范围为0-14,零点电位PH为 7±0.25,测量水温的范围为0-80℃,PH传感器实物如下所示。

由于E201-C-9 探头在实际使用过程中需要对输出的电流进行放大,为此还需外加 CA3140运算放大器

CA3140封装图:


CA3140引脚说明:

本放大电路的电路图如下所示,通过CA3140将 PH传感探头输出的信号放大,然后单片机对该信号进行 AD 转换,最终得出 PH 的值。


♦ WiFi模块

采用ESP8266的WiFi透传模块,在系统中起着连接下位机和云平台的作用。

♦ 电源模块

为了保证系统各个模块能稳定持续地工作,需要为各个模块提供相应的工作电源,本系统需要的支持电源分为 5V 和 3.3V 两类,因此在本系统中,利用 AMS1117 芯片来进行从 5V 到 3.3V 的转换。

AMS1117的电路图:


系统软件设计

1、下位机显示面板设计

使用VGUS 软件在对串口屏界面进行设计时,根据本系统的实际情况,完成四个功能界面设计,分别是主界面、环境监控、环境控制以及阀值设置界面。

主界面主要是为用户提供一个功能导航页面,根据用户当时的需要来选择要进入的界面,可用作设备异常时进行显示和报警,还可通过实时监控界面查看当前鱼塘环境的实时参数;控制界面可以对外围设备进行直接控制。

2、串口屏界面控制

系统开机时默认首先进入到主界面,我们可以在主界面进入对应的配置环境,以便于我们查看鱼塘的环境参数,主界面显示如图所示。

通过主界面可选择进入环境监测这个界面,可以看到鱼塘环境各种参数的实时信息,包括被控制设备的状态,方便鱼塘工作人员进行管理,结合底层传感器上传的数据,直观地观察到当前鱼塘环境参数以及各种设备地控制状态,该实时监测界面如图所示。

从主界面进入到控制界面,在控制界面可以对调节环境的外围硬件设备进行手动的方式控制或者设置自动控制,控制界面如图所示。

同时可以联合阈值设定,对各种环境变量进行控制,更加方面快捷的对鱼塘环境因子做出最敏捷的反馈,实现鱼塘环境控制控制的自动化,阈值设定界面如图所示。

3、下位机软件设计

本设计下位机采用 STM32F103 作为核心控制器,在下位机的软件设计上采用模块化的编程思想,将外设驱动以及各功能子程序模块化。主程序当中首先进行系统初始化,配置并使能系统时钟,初始化中断向量表,然后依次配置各外设引脚以及对外设的初始化。

接着对各个传感器模块以及 ESP8266 WiFi模块等外围设备进行初始化,然后上传和下载云端保存的鱼塘控制数据以及获取用户通过串口屏操作的控制数据,接下来就是运行水温、水位、溶解氧以及 PH值的控制子程序。通过这个控制子程序来实现对鱼塘环境的控制,接下来就重点讲解这几个控制子程序。

主程序流程图如下所示:


由于主程序代码太长,下面仅展示主程序配置部分,主程序配置部分程序如图

所示:

♦ 水温控制子程序

鱼塘水温由DS18B20传感器进行监测,当前温度低于预设水温阀值下限,那么打开热水进水阀;当温度高于预设水温阀值上限时打开冷水进水阀来综合鱼塘的温度。如果监测到的水温在预设阀值以内,那么关闭冷水和热水的进水阀。温度控制子程序流程图如图所示:


其中温度读取子程序如图所示:


♦ 水位控制子程序

水位传感器使利用超声波模块来监测液面到地面的距离,获取鱼塘底到地面的距离,可计算出鱼塘中水位高度。如果实际水位高度高于预设阀值上限,那么打开排水泵进行泄洪。当实际水位低于预设阀值下限,此时打开进水泵增加鱼塘的水量,保证鱼类的生存区域。水位控制子程序流程图如图所示:


超声波测距子程序如下:


♦ 溶解氧/温度气压控制子程序

由BMP180传感器检测出当地气温和气压后,直接计算气温和气压与水中溶氧量的计算关系得出水中的溶氧量,通过打开充氧机充氧的方式来控制水中的含氧量,而水中含氧量的饱和不会影响鱼类生长,因此,我们只需要在水中溶氧量不足时打开充氧机即可。溶氧量控制子程序流程图如图所示:


MP180 的温度和气压读取子程序如下所示:



4、上位机软件设计

WiFi模块软件设计

本系统是选用的 ESP8266 WiFi模块与机智云的云端建立连接关系,先在WiFi 模块里烧录机智云GAgent 固件,然后利用 GizWits 协议接入到机智云云端,下位机每 30 秒将会和云端通信一次,进行上报数据以及下载控制变动。ESP8266 使用指令互相发送请求与应答的方法与 STM32 建立通信,两者之间使用串口进行通信。

ESP8266 有 AirLink 和 Soft AP 两种入网模式,下位机在初始化时将其配置成 AirLink方式入网;STM32 主要是向 ESP8266 发送查询指令和控制指令。而 ESP8266 则通过向 STM32 发送查询指令来获取 STM32 的状态;通过发送控制命令是将 APP 端上传到机智云的控制数据发送至下位机。ESP8266 WiFi 模块程序流程图如图所示:

接入机智云软件设计

在设备接通电源以后,在 ESP8266 WiFi模块第一次接入机智云云端之前,需将 ESP8266 设置为 AirLink 模式。

本文采用的 ESP8266 在完成烧录机智云GAgent 固件之后便内置了此模式。WiFi模块使用 GitWits 协议和机智云建立连接,在连接成功后,会不断地向主控芯片发送获取设备状态的请求,STM32 每过一段时间都会上报设备信息给 ESP8266。接入机智云平台流程图如图所示:


机智云IoT云平台接入开发

下面来了解一下使用机智云开发产品的步骤流程:

◆ 在机智云官网注册一个属于自己的帐号,以后在上面创建地项目也是通过个人账号来管理;

◆ 账号登录后,进入到机智云地开发者中心,点击开发一个新的产品,在里面根据自己项目需要新建数据点,项目的云平台数据点如图所示;

◆ 我们使用机智云提供的 APP 进行远程控制,选用机智云官方提供地终端进行调试。

◆ 利用机智云IoT云平台提供的虚拟设备进行虚拟调试,虚拟设备调试通过后点击生成 MCU 代码,将其移植到自己的处理器当中。

◆ 下载机智云的GAgent 固件并烧录到 ESP8266 WiFi 模块内。

◆ 直接使用机智云官方提供的代码,移植到本系统里。在 MCU 开发方案那里,选择 STMM32F103ZET6 硬件平台的开发,然后填入 Products secret,这个可以在产品基本信息里查看,然后点击生成代码包,最后,在 MCU 开发里下载根据自己项目生成的相应的代码包,将其移植进来。

下面就重点介绍代码的移植和修改过程。在移植代码时,非常关键的一步便是移植 GizWits 文件夹,其中主要包含了四个文件:gizwits_product.c 是处理和功能有关的文件;gizwits_product.h 是.c 文件的头文件,不需要去修改它;gizwits_protocol.c 主要功能是处理相关的协议;gizwits_protocol.h 里定义了通信密匙以及一些变量和结构体等。

GizWits 文件夹的移植分为五个步骤:

◆ 利用机智云Gizwits提供的 gizputdaat()和 uartwrite()函数通过串口进行数据的收发,以实现WiFi模块与主控芯片之间的通信。

◆ 程序在运行时在一些必要的时候需要复位,这里就需要用到复位函数。ESP8266 在和主控通信时便是如此,mcurestart()便是这个函数,对WiFi模块进行软件复位。

◆ 通过使用 GizWitsSetMode()函数,以选择通过什么样子的方式入网,可以进行复位、Soft AP、AirLink 以及绑定设备这五种模式进行配置。

◆ 通过结构体 dpint 把采集到的各项数据上传到云端,结构体内容如下:

typedef struct{ bool coldin; //冷水进水泵

bool waterout; //出水泵

bool warmIn; //热水进水泵

bool jiasuan; //加酸水泵

bool jiajian; //加酸水泵

int watertemp; //水温

int watertempup; //水温上限

int watertempdown; //水温下限

float ph; //PH 值

float phup; //PH 上限

float phdown; //PH 下限

int o2; //溶解氧 int o2down; //溶解氧下限

int watrlevel; //水位 int waterlevelup; //水位上限

int waterleveldown;//水位下限 }dpint; //数据点

◆ 实现系统内设备的控制功能。在 gizwitsEventProcess()事件处理函数中添加需要处理数据点的事件,当设备收到云端下发的信息时,将会根据具体情况选择如何执行何种控制动作。

系统总结

本文设计的鱼塘控制原型系统主要介绍了系统的下位机的软硬件实现、以及上位机云平台的接入等部分。在确保云平台与 APP 端之间是否能正常通信,这可以利用机智云官方提供的虚拟设备,它模拟设备进行数据推送,手机 APP 通过扫云端二维码绑定云端虚拟设备,接着就进行验证云端和 APP 之间的数据收发。

在云端虚拟设备中分别填入要下发的数据点的值,然后点“推送”按钮,将数据下发给 APP,APP 端能够收到数据并显示;接着在 APP 端设置数据的值,然后可看到云端虚拟设备能够同步相应,则成功实现通信,虚拟设备及APP的调试如下图所示。


本鱼塘智能控制系统设计操作简单,界面简洁直观,简单易上手,可实时监控,控制反应快,使鱼塘养殖变得更加简单,可以极大地降低劳动强度,节省劳动成本的同时也提高了养殖效率,系统整体实物效果图如下所示。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分