# 鱼塘远程监测系统 **Repository Path**: gxy0/IntelligentPool ## Basic Information - **Project Name**: 鱼塘远程监测系统 - **Description**: 鱼塘远程监测系统,物联网初学 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2022-02-22 - **Last Updated**: 2025-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 鱼塘监测系统 [TOC] ## 1 项目简介 ​ 系统总体结构如图,通过Zigbee进行组网(**多从一主**),进行鱼塘状态管理,将温度、水浑浊程度、鱼密度等信息上传到本地主机,本地主机通过4G网络(**Air724、MQTT**)发布数据到**Onenet**服务器进行中转,上位机订阅相关话题,实时监测到鱼塘信息,也可以通过按钮发布相关指令控制电机动作。 ![结构图](assets/结构图.jpg) ## 2 关键词 ​ **STM32、MQTT、Onenet、PYQT、4G(Air724)** ## 3 项目材料 | 器件名称 | 数量 | 备注 | | :--------------------: | :--: | :--------------------------------------------------: | | STM32F103C6T6 | 2 | 单片机(**作为主控**) | | DL-LN32P | 2 | Zigbee模块(**本地组网通信**) | | Core-Air724UG-B | 1 | 4G模块(**DTU版本,支持mqtt**) | | DS18B20 | 1 | 温度传感器(**检测水温**) | | TS-300B浊度传感器 | 1 | 浊度传感器(**检测浊度,输出电流**) | | TS-300B浊度传感器模块 | 1 | 信号转换(**将传感器电流转化为电压,供单片机测量**) | | TCRT5000红外反射传感器 | 3 | 红外对管(**计算鱼群密度**) | | 5V双路继电器模块 | 1 | 双路继电器(**控制进水阀、出水阀**) | | SG90舵机 | 1 | 180°舵机(**PWM信号控制,模拟增氧机控制**) | | 电脑 | 1 | Windows环境(**运行上位机软件进行云端控制**) | ## 4 硬件结构 ​ 系统硬件主要包括以STM32单片机位核心的主机系统和从机系统。 ### 4.1 从机结构 ​ 从机系统主要包括**电源管理电路、数据采集电路、按键控制电路、执行部件驱动电路、通信传输部件**等电路系统。**电源管理电路**使用5V/1A电源作为电路总电源输入,经过AMS1117-3.3降压稳压芯片输出3.3V电源给部分器件供电。**数据采集电路**使用DS18B20作为水温传感器;TS-300B作为水浊度传感器同时配合相应模块,将传感器输出电流信号转化为电压信号,以供给单片机ADC作为采集输入;使用红外对管输出高低电平用于鱼数量计数。**按键控制电路**通过将按键引脚上拉至VCC,按下则下拉至GND的方式,通过检测引脚高低电平来检测对应按键是否按下。**执行部件驱动电路**主要包括2个电磁阀和一个舵机的驱动,电磁阀通过光耦隔离控制,由于单片机IO口不能输出足够大电流,故通过以一个NPN三极管构成开关电路进行驱动;而舵机通过5V供电后,直接使用PWM进行驱动。**通信传输部件**使用DL-32P作为Zigbee通信模块。 ![结构图-从机](assets/结构图-从机.jpg) ### 4.2 主机结构 ​ 主机主要包括电源管理电路、通信传输电路两部分。电源管理电路与Zigbee模块同从机电路相同,4G模块使用Air724作为传输工具。 ![结构图-主机](assets/结构图-主机.jpg) ## 5 软件流程图 ### 5.1 数据采集与执行端(从机) ​ 从机的主要功能是负责**采集环境数据并上传**、**执行主机下发指令**。当设备通电后,系统开始初始化,设置环境数据采样周期为10s。之后进入系统功能主循环,若达到采样周期,则采集温度、根据这10s内鱼的数量及面积(5m^2^)计算鱼群密度,同时通过ADC采集浊度传感器的输出电压,通过该值计算出浊度NTU的值,再将所有采集数据发送至主机,至此,**数据采集和上传功能完成**。单片机整个过程通过串口中断接收从主机下发的指令,若成功收到一帧指令,则将进水标志位、出水标志位、增氧标志位进行置位或复位操作,或设置目标浊度。紧接着,单片机判断控制模式选择按键,若选择本地控制,则上述标志位无效,通过检测进水、出水、增氧控制开关状态来控制对应部件状态;若选择云端控制,则先判断是否达到目标水质,目标水质范围内则接受云端控制指令,控制对应部件执行,若水质不达标,则进水阀与出水阀常开,只接受增氧机控制指令。 ![从机软件流程图](assets/从机软件流程图.jpg) ### 5.2 数据处理端(主机) ​ 主机功能较为简单,承上启下。通过串口1中断接收本地从机数据并发布,同时通过串口2接收云端指令并下发至从机。 ![主机软件流程图](assets/主机软件流程图.jpg) ### 5.3 远程控制端(PC) ​ 该PC端程序通过PYQT实现。首先通过QtDesigner软件设计界面如下图所示,文本框中默认填写好连接onenet所需参数。 ![main_ui](assets/main_ui.png) ​ 软件启动后,首先初始化界面,绑定各个按钮控件的信号和槽,进入事件等待。若点击connect按钮,软件执行连接过程,若连接成功,则调试信息框打印出连接信息,数据显示和指令操作窗口由失能状态变为使能状态,此时可接收本地数据或下发指令;若连接失败,则显示提示信息,显示和操作窗口保持失能状态。若点击disconnect,显示和操作窗口恢复失能状态,设备掉线。按下出水阀、进水阀、增氧机控制按钮,则客户端发布相应指令,本地设备若在线即可收到。设置目标水质,并点击设置水质按钮,客户端发布设置指令及数据。 ![PC软件流程图](assets/PC软件流程图.jpg)