基于STM32的智能鱼缸Proteus仿真

摘要

随着人们生活品质的提升,宠物饲养成为日常生活的重要组成部分,智能鱼缸凭借自动化、便捷化的优势,逐渐替代传统鱼缸,成为水族饲养的主流选择。本文设计并实现了一种基于STM32单片机的智能鱼缸控制系统,通过Proteus软件完成系统仿真,集成环境监测、自动控制、手动操作及远程交互等核心功能。系统以STM32系列单片机为主控核心,采用DS18B20传感器采集水温、超声波传感器检测水位、光敏电阻采集光照强度、滑动变阻器模拟水质参数,通过继电器驱动进水、出水、喂食、加氧、加热等执行机构,OLED显示屏实现参数实时显示与阈值展示,5个按键用于阈值修改和设备手动控制,借助虚拟终端与串口调试工具模拟WIFI模块实现远程数据查看。仿真结果表明,系统可根据预设阈值自动完成加热、进水、出水、补光等操作,支持手动控制和远程数据监控,运行稳定、响应迅速,满足智能鱼缸的日常使用需求,具有一定的实用性和推广价值。

关键词:STM32;智能鱼缸;Proteus仿真;环境监测;自动控制;远程查看

第一章 绪论

1.1 研究背景与意义

随着嵌入式技术、传感器技术和物联网技术的快速发展,智能化已经渗透到人们生活的各个领域,水族饲养领域也不例外。传统鱼缸饲养过程中,需要人工频繁监测水温、水位、水质等参数,手动完成换水、加热、补光、喂食、加氧等操作,不仅耗时费力,且难以精准控制各项环境参数,容易导致鱼类生存环境不稳定,影响鱼类健康。

基于STM32的智能鱼缸控制系统,通过集成多种传感器实现环境参数的自动采集,结合执行机构完成各项自动化操作,同时支持手动控制和远程数据查看,有效解决了传统鱼缸饲养的弊端,降低了饲养难度,提升了饲养体验。该系统成本低廉、功能完善、操作便捷,既适用于家庭个人饲养,也可用于小型水族店,具有重要的研究意义和实际应用价值。

1.2 国内外研究现状

国外智能鱼缸技术起步较早,目前已形成较为成熟的产品体系,欧美、日本等国家的智能鱼缸产品在智能化程度、稳定性和人性化设计方面具有明显优势,可实现水质在线监测、自动换水、智能喂食、远程操控等功能,部分高端产品还支持手机APP联动和水质异常报警。

国内智能鱼缸产业近年来发展迅速,随着人们对水族饲养需求的提升,越来越多的企业投入到智能鱼缸产品的研发与生产中,产品种类不断丰富,价格逐渐亲民。但目前国内部分智能鱼缸产品存在功能单一、参数控制精度不高、稳定性不足等问题,且部分产品依赖进口核心器件,成本较高。因此,研发一款基于国产核心芯片、功能完善、成本低廉的智能鱼缸控制系统,具有重要的现实意义。

1.3 研究内容与目标

本文的研究内容是设计并实现基于STM32的智能鱼缸控制系统,并通过Proteus软件完成系统仿真,具体研究内容如下:

  • 确定系统整体方案,包括主控芯片选型、传感器与执行器选型,设计硬件电路和软件程序;
  • 完成环境参数采集模块设计,实现水温(DS18B20)、水位(超声波传感器)、光照(光敏电阻)、水质(滑动变阻器模拟)的实时采集;
  • 设计执行器控制模块,实现进水、出水、喂食、加氧(继电器+电机)、加热(继电器+红灯)、补光(白灯)的自动控制与手动控制;
  • 设计显示模块(OLED),实现双界面显示,界面1显示实时环境参数,界面2显示各项参数阈值;
  • 设计按键控制模块(5个按键),实现阈值修改、喂食、加氧等功能的手动开启与关闭;
  • 通过虚拟终端与串口调试工具模拟WIFI模块,实现远程查看环境参数功能;
  • 在Proteus软件中搭建仿真电路,进行系统调试与功能验证。

本文的研究目标是实现一款功能完善、运行稳定、响应迅速的智能鱼缸控制系统,能够自动监测鱼缸环境参数,根据预设阈值完成自动化控制操作,支持手动控制和远程数据查看,满足智能鱼缸的日常使用需求,为后续实际硬件开发提供理论依据和仿真参考。

1.4 论文结构安排

本文共分为6章,具体结构安排如下:

  • 第一章 绪论:阐述研究背景与意义、国内外研究现状、研究内容与目标及论文结构安排;
  • 第二章 系统总体方案设计:确定系统设计原则,完成硬件总体方案和软件总体方案设计;
  • 第三章 系统硬件电路设计与Proteus仿真搭建:设计各模块硬件电路,在Proteus中搭建仿真电路;
  • 第四章 系统软件程序设计:设计主程序、各模块子程序及中断服务程序,实现系统各项功能;
  • 第五章 系统仿真调试与结果分析:进行Proteus仿真调试,验证系统功能,分析仿真结果;
  • 第六章 总结与展望:总结本文的研究成果,分析系统存在的不足,对未来的研究方向进行展望。

第二章 系统总体方案设计

2.1 系统设计原则

为确保系统的实用性、稳定性和可扩展性,本次设计遵循以下原则:

  • 实用性原则:聚焦智能鱼缸核心需求,实现环境监测、自动控制、手动操作、远程查看等实用功能,操作简单、易于上手;
  • 稳定性原则:选用性能稳定、性价比高的器件,优化电路设计和程序编写,确保系统长期稳定运行,避免因故障影响鱼类生存;
  • 扩展性原则:系统设计预留接口,便于后续添加新的功能模块,如水质报警、手机APP联动等;
  • 经济性原则:在满足功能需求的前提下,选用低成本器件,降低系统整体成本,便于推广应用;
  • 仿真可行性原则:设计的电路需符合Proteus仿真要求,确保能够通过仿真验证系统功能。

2.2 系统硬件总体方案

本系统以STM32系列单片机为主控核心,围绕核心芯片搭建六大功能模块:主控模块、环境参数采集模块、执行器控制模块、显示模块、按键控制模块和远程控制模块,系统硬件总体框图如图2-1所示(仿真中通过Proteus绘制)。

各模块功能如下:

  • 主控模块:以STM32单片机为核心,负责接收各传感器采集的数据,处理控制逻辑,驱动执行器工作,响应按键操作和远程指令,实现系统整体调度;
  • 环境参数采集模块:由DS18B20温度传感器、超声波传感器、光敏电阻、滑动变阻器组成,分别负责采集水温、水位、光照强度、水质参数,传输给主控芯片;
  • 执行器控制模块:包括继电器驱动的进水电机、出水电机、喂食电机、加氧电机,以及继电器驱动的加热红灯和补光白灯,接收主控芯片的控制信号,完成相应的动作;
  • 显示模块:采用OLED显示屏,实现双界面显示,界面1实时显示水温、水位、水质、光照参数,界面2显示各项参数的预设阈值;
  • 按键控制模块:包含5个按键,分别用于切换显示界面、修改各项参数阈值、手动开启/关闭喂食和加氧功能;
  • 远程控制模块:通过虚拟终端与串口调试工具模拟WIFI模块,实现PC端与主控芯片的通信,完成远程查看环境参数功能。

2.3 系统软件总体方案

系统软件采用模块化设计思想,将不同功能划分为多个子程序,便于程序的编写、调试和维护。软件总体流程如下:系统上电后,首先进行初始化,包括主控芯片初始化、传感器初始化、执行器初始化、OLED显示屏初始化、按键初始化和串口初始化;初始化完成后,系统进入主循环,在主循环中,实时采集水温、水位、光照、水质等环境参数,进行数据处理与分析,根据预设阈值自动控制加热、进水、出水、补光等执行器动作;同时,OLED显示屏实时更新显示内容,监听按键操作,若有按键按下,则执行相应的操作(切换界面、修改阈值、手动控制设备);串口监听远程查看指令,若收到指令,则将实时环境参数发送给PC端,实现远程数据查看。

系统软件主要包括主程序、传感器数据采集子程序、执行器控制子程序、OLED显示子程序、按键处理子程序、串口通信子程序(模拟WIFI远程查看)及中断服务程序等。

第三章 系统硬件电路设计与Proteus仿真搭建

3.1 主控模块电路设计

本次设计选用STM32F103系列单片机作为主控芯片(如STM32F103R6),该芯片属于STM32F1系列,采用ARM Cortex-M3内核,主频最高可达72MHz,具有丰富的I/O接口,支持UART、GPIO等通信和控制功能,性价比高,能够满足系统的控制需求。

主控模块电路主要包括电源电路、复位电路和时钟电路。电源电路采用5V输入,经ASM1117-3.3V稳压芯片稳压后为STM32单片机供电,确保供电稳定;复位电路采用RC上电复位电路,确保芯片正常启动;时钟电路采用8MHz外部晶振,经PLL倍频至72MHz,为系统提供稳定的时钟信号。

在Proteus中搭建主控模块电路时,选择STM32F103系列芯片,连接电源、复位和时钟电路,确保电路连接正确,为后续各模块的连接奠定基础。

3.2 环境参数采集模块电路设计

3.2.1 水温采集电路(DS18B20)

DS18B20是一款高精度数字温度传感器,采用单总线通信方式,只需一根数据线即可实现与主控芯片的通信,采集范围为-55℃~+125℃,精度可达±0.5℃,适合用于鱼缸水温采集。

电路设计:DS18B20的VCC引脚接3.3V电源,GND引脚接地,DQ引脚(数据引脚)通过10KΩ上拉电阻连接至STM32的某个I/O口(如PA0),实现水温数据的采集。在Proteus中,选择DS18B20传感器,按照上述连接方式搭建电路,确保单总线通信的稳定性。

3.2.2 水位采集电路(超声波传感器)

本次设计采用超声波传感器(如HC-SR04)检测鱼缸水位,该传感器具有测量精度高、响应迅速等优势,测量范围为2cm~400cm,可通过发射和接收超声波的时间差计算出距离,进而换算出水位高度。

电路设计:超声波传感器的VCC引脚接5V电源,GND引脚接地,Trig引脚(触发引脚)连接至STM32的某个I/O口(如PA1),Echo引脚(接收引脚)连接至STM32的某个I/O口(如PA2)。主控芯片通过向Trig引脚发送触发信号(10us高电平),传感器发射超声波,Echo引脚接收反射波,主控芯片通过计算触发信号与接收信号的时间差,换算出水位高度。在Proteus中,选择HC-SR04超声波传感器,按照上述连接方式搭建电路。

3.2.3 光照采集电路(光敏电阻)

光敏电阻的阻值随光照强度的变化而变化,光照强度越强,阻值越小;光照强度越弱,阻值越大。通过将光敏电阻与固定电阻串联,将电阻变化转换为电压变化,再通过STM32的ADC接口采集电压信号,即可换算出光照强度。

电路设计:光敏电阻一端接3.3V电源,另一端串联一个10KΩ固定电阻后接地,串联节点连接至STM32的ADC输入口(如PA3)。光照强度变化时,串联节点的电压随之变化,主控芯片通过ADC采集该电压信号,换算出光照强度值。在Proteus中,选择光敏电阻和固定电阻,搭建光照采集电路。

3.2.4 水质采集电路(滑动变阻器模拟)

由于Proteus中无实际水质传感器的仿真模型,本次设计采用滑动变阻器模拟水质参数,滑动变阻器的阻值变化模拟水质污染程度(阻值越大,水质越差;阻值越小,水质越好),通过STM32的ADC接口采集滑动变阻器两端的电压信号,换算出水质参数。

电路设计:滑动变阻器一端接3.3V电源,另一端接地,滑动端连接至STM32的ADC输入口(如PA4)。调节滑动变阻器的阻值,滑动端的电压随之变化,主控芯片通过ADC采集该电压信号,换算出水质参数,用于后续控制逻辑。在Proteus中,选择滑动变阻器,搭建水质采集电路。

3.3 执行器控制模块电路设计

3.3.1 电机类执行器控制电路(继电器驱动)

进水、出水、喂食、加氧均采用直流电机模拟,由于STM32的I/O口输出电流较小,无法直接驱动电机,因此采用继电器作为驱动器件,实现对电机的开关控制。

电路设计:每个电机对应一个继电器,继电器的VCC引脚接5V电源,GND引脚接地,IN引脚(控制引脚)分别连接至STM32的不同I/O口(如进水电机继电器IN接PB0、出水电机继电器IN接PB1、喂食电机继电器IN接PB2、加氧电机继电器IN接PB3)。继电器的常开触点连接直流电机和5V电源,常闭触点悬空。当主控芯片输出高电平时,继电器吸合,电机转动(对应功能开启);输出低电平时,继电器断开,电机停止(对应功能关闭)。同时,在每个继电器线圈两端并联一个续流二极管,防止线圈断电时产生的反向电动势损坏芯片。在Proteus中,选择继电器、直流电机和续流二极管,搭建电机类执行器控制电路。

3.3.2 灯光类执行器控制电路(继电器驱动)

加热采用红灯模拟,补光采用白灯模拟,同样采用继电器驱动,实现灯光的开关控制。

电路设计:加热红灯和补光白灯分别对应一个继电器,继电器的IN引脚分别连接至STM32的不同I/O口(如加热红灯继电器IN接PB4、补光白灯继电器IN接PB5)。继电器的常开触点连接对应灯光和5V电源,常闭触点悬空。当主控芯片输出高电平时,继电器吸合,灯光点亮(对应功能开启);输出低电平时,继电器断开,灯光熄灭(对应功能关闭)。在Proteus中,选择继电器、红灯、白灯,搭建灯光类执行器控制电路。

3.4 显示模块电路设计(OLED)

本次设计采用0.96英寸OLED显示屏,分辨率为128×64,采用I2C通信方式,具有功耗低、显示清晰、响应迅速等优势,可实现双界面显示,实时展示环境参数和阈值设置。

电路设计:OLED显示屏的VCC引脚接3.3V电源,GND引脚接地,SDA引脚连接至STM32的PB7引脚,SCL引脚连接至STM32的PB6引脚,实现I2C通信。在Proteus中,选择OLED显示屏,按照上述连接方式搭建电路,确保I2C通信正常,能够实现双界面显示功能。

3.5 按键控制模块电路设计

本次设计采用5个独立按键,分别实现切换显示界面、修改各项参数阈值、手动开启/关闭喂食和加氧功能,按键采用独立按键设计,结构简单、操作可靠。

电路设计:5个按键的一端分别连接至STM32的不同I/O口(如PC0~PC4),另一端均接地,每个按键串联一个10KΩ上拉电阻(或采用STM32内部上拉电阻),确保按键未按下时为高电平,按下时为低电平。主控芯片通过检测I/O口的电平变化,判断按键是否按下及按下的按键类型,执行相应的操作。在Proteus中,选择独立按键和电阻,搭建按键控制电路。

3.6 远程控制模块电路设计(WIFI模拟)

由于Proteus中无实际WIFI模块(如ESP8266)的仿真模型,因此采用虚拟终端与串口调试工具结合的方式,模拟WIFI模块的远程数据查看功能。

电路设计:STM32的USART1串口(TX引脚PA9,RX引脚PA10)连接至Proteus中的虚拟终端,虚拟终端与PC端的串口调试工具建立通信。PC端通过串口调试工具发送远程查看指令(如“查看数据”),虚拟终端接收指令后传输给主控芯片,主控芯片解析指令后,将实时采集的水温、水位、水质、光照参数通过串口发送给PC端,实现远程数据查看。在Proteus中,添加虚拟终端,连接STM32的串口引脚,配置串口参数(波特率9600bps,数据位8位,停止位1位,无校验位)。

3.7 系统Proteus仿真电路整体搭建

在Proteus软件中,按照上述各模块电路设计,依次添加STM32F103系列芯片、DS18B20、超声波传感器、光敏电阻、滑动变阻器、继电器、直流电机、红灯、白灯、OLED显示屏、按键、虚拟终端等器件,完成各模块的连接,搭建系统整体仿真电路。搭建完成后,检查电路连接是否正确,确保各模块能够正常通信和工作,为后续的软件调试和功能验证奠定基础。

第四章 系统软件程序设计

4.1 开发环境与工具

本次系统软件程序设计采用Keil MDK5开发环境,该环境支持STM32系列单片机的程序编写、编译、调试,具有丰富的库函数和调试工具,能够提高程序开发效率。同时,结合Proteus软件进行仿真调试,验证程序的正确性和系统功能的完整性。

程序设计采用C语言编写,遵循模块化设计思想,将不同功能划分为多个子程序,便于程序的编写、调试和维护。

4.2 系统初始化程序设计

系统上电后,首先进行初始化操作,确保各模块能够正常工作,初始化程序主要包括以下几个部分:

  • 主控芯片初始化:配置系统时钟(72MHz),使能各外设时钟(GPIO、UART、ADC、TIM等);
  • GPIO初始化:配置各传感器、执行器、按键对应的I/O口,设置为输入或输出模式;
  • 传感器初始化:初始化DS18B20温度传感器(单总线初始化)、超声波传感器(GPIO初始化)、ADC接口(用于采集光敏电阻和滑动变阻器信号);
  • 执行器初始化:初始化各继电器对应的GPIO口,设置为输出模式,默认输出低电平(执行器关闭);
  • OLED初始化:通过I2C总线初始化OLED显示屏,设置显示模式和显示参数,默认显示界面1(实时参数);
  • 按键初始化:配置按键对应的GPIO口为输入模式,使能内部上拉电阻;
  • 串口初始化:初始化USART1串口,配置波特率、数据位、停止位等参数,使能串口接收中断,用于接收远程查看指令。

4.3 传感器数据采集子程序设计

4.3.1 DS18B20水温采集子程序

DS18B20采用单总线通信,采集子程序的核心是通过单总线与DS18B20通信,读取水温数据并进行解析。具体流程如下:

  • 主控芯片向DS18B20发送复位信号(拉低数据线480~960us,再拉高15~60us);
  • DS18B20收到复位信号后,拉低数据线60~240us,作为应答信号;
  • 主控芯片接收应答信号后,向DS18B20发送读取温度指令(0xBE);
  • DS18B20依次发送16位温度数据(低8位、高8位),主控芯片接收数据并进行解析,换算出实际水温值(单位:℃);
  • 将解析后的水温数据存储在相应的变量中,供后续控制逻辑和显示使用。

4.3.2 超声波水位采集子程序

超声波传感器通过发射和接收超声波的时间差计算距离,进而换算出水位高度,具体流程如下:

  • 主控芯片向超声波传感器的Trig引脚发送10us高电平触发信号;
  • 传感器收到触发信号后,发射8个40KHz的超声波脉冲,同时Echo引脚由低电平变为高电平;
  • 当超声波遇到水面反射后,被传感器接收,Echo引脚由高电平变为低电平;
  • 主控芯片计算Echo引脚高电平的持续时间(即超声波发射到接收的时间差);
  • 根据公式“距离=时间差×声速(340m/s)/2”,计算出传感器到水面的距离,进而换算出鱼缸水位高度(单位:cm),存储在相应的变量中。

4.3.3 光敏电阻光照采集子程序

光照采集通过STM32的ADC接口采集光敏电阻与固定电阻串联节点的电压信号,换算出光照强度,具体流程如下:

  • 开启STM32的ADC外设,配置ADC通道(对应光敏电阻的采集引脚);
  • 启动ADC转换,采集串联节点的电压信号,将模拟信号转换为数字信号(0~4095);
  • 根据分压原理,将数字信号换算为实际电压值,再根据光敏电阻的阻值与光照强度的关系,换算出光照强度值(单位:lux);
  • 将光照强度数据存储在相应的变量中,供后续控制逻辑和显示使用。

4.3.4 滑动变阻器水质采集子程序

水质采集通过STM32的ADC接口采集滑动变阻器滑动端的电压信号,换算出水质参数,具体流程如下:

  • 开启STM32的ADC外设,配置ADC通道(对应滑动变阻器的采集引脚);
  • 启动ADC转换,采集滑动端的电压信号,将模拟信号转换为数字信号(0~4095);
  • 将数字信号换算为实际电压值,根据滑动变阻器的阻值与电压的关系,换算出水质参数(设定为0~100,数值越大,水质越差);
  • 将水质参数存储在相应的变量中,供后续控制逻辑和显示使用。

4.4 执行器控制子程序设计

4.4.1 加热控制子程序

加热控制根据水温与预设阈值的关系自动控制,具体逻辑如下:

  • 预设水温阈值(如25℃,可通过按键修改);
  • 主控芯片实时读取水温数据,与预设阈值进行比较;
  • 若水温低于阈值,则控制加热继电器吸合,红灯点亮,开始加热;
  • 若水温高于或等于阈值,则控制加热继电器断开,红灯熄灭,停止加热;
  • 加热过程中,实时监测水温,确保水温稳定在阈值附近。

4.4.2 进水控制子程序

进水控制根据水位与预设阈值的关系自动控制,具体逻辑如下:

  • 预设水位阈值(如20cm,可通过按键修改);
  • 主控芯片实时读取水位数据,与预设阈值进行比较;
  • 若水位低于阈值,则控制进水继电器吸合,进水电机转动,开始进水;
  • 若水位高于或等于阈值,则控制进水继电器断开,进水电机停止,停止进水;
  • 进水过程中,实时监测水位,避免水位过高溢出。

4.4.3 出水控制子程序

出水控制根据水质参数与预设阈值的关系自动控制,具体逻辑如下:

  • 预设水质阈值(如60,可通过按键修改,数值越大,水质越差);
  • 主控芯片实时读取水质参数,与预设阈值进行比较;
  • 若水质参数高于阈值(水质较差),则控制出水继电器吸合,出水电机转动,开始出水(换水);
  • 出水一段时间(如5秒,可通过程序设置)后,控制出水继电器断开,出水电机停止,同时启动进水电机补水,直至水位达到预设阈值;
  • 换水完成后,重新采集水质参数,确保水质达标。

4.4.4 补光控制子程序

补光控制根据光照强度与预设阈值的关系自动控制,具体逻辑如下:

  • 预设光照阈值(如100lux,可通过按键修改);
  • 主控芯片实时读取光照强度数据,与预设阈值进行比较;
  • 若光照强度低于阈值,则控制补光继电器吸合,白灯点亮,开始补光;
  • 若光照强度高于或等于阈值,则控制补光继电器断开,白灯熄灭,停止补光。

4.4.5 加氧控制子程序

加氧控制支持自动和手动两种模式,具体逻辑如下:

  • 自动模式:默认开启加氧功能,加氧电机持续工作,确保鱼缸水质含氧量充足;
  • 手动模式:通过按键开启/关闭加氧功能,按下加氧按键,切换加氧状态(开启→关闭、关闭→开启);
  • 远程控制:可通过串口指令间接控制加氧功能(结合远程查看功能,同步显示加氧状态)。

4.4.6 喂食控制子程序

喂食控制仅支持手动模式,通过按键开启,具体逻辑如下:

  • 按下喂食按键,控制喂食继电器吸合,喂食电机转动,开始喂食;
  • 喂食一段时间(如3秒,可通过程序设置)后,控制喂食继电器断开,喂食电机停止,完成一次喂食;
  • 喂食过程中,禁止进水、出水操作,避免食物被冲走;喂食完成后,恢复正常控制逻辑。

4.5 OLED显示子程序设计

OLED显示屏实现双界面显示,可通过按键切换界面,两个界面的显示内容如下:

4.5.1 界面1(实时参数显示)

界面1用于实时显示鱼缸的环境参数,显示布局如下:

  • 第一行:显示“智能鱼缸控制系统”(标题);
  • 第二行:显示“水温:XX.XX℃”(实时水温数据);
  • 第三行:显示“水位:XX cm”(实时水位数据);
  • 第四行:显示“水质:XX”(实时水质参数,0~100);
  • 第五行:显示“光照:XX lux”(实时光照强度数据);
  • 第六行:显示当前设备状态(如“加热:关闭 加氧:开启”)。

4.5.2 界面2(阈值显示)

界面2用于显示各项参数的预设阈值,显示布局如下:

  • 第一行:显示“参数阈值设置”(标题);
  • 第二行:显示“水温阈值:XX℃”(预设水温阈值);
  • 第三行:显示“水位阈值:XX cm”(预设水位阈值);
  • 第四行:显示“水质阈值:XX”(预设水质阈值);
  • 第五行:显示“光照阈值:XX lux”(预设光照阈值);
  • 第六行:显示“按键可修改阈值”(提示信息)。

显示子程序每间隔500ms更新一次显示内容,与传感器采集数据的频率同步;当按键切换界面时,立即更新显示内容,确保显示的实时性和准确性。

4.6 按键处理子程序设计

本次设计共5个按键,分别定义为:界面切换键、阈值增加键、阈值减少键、喂食键、加氧键,按键处理采用中断或查询方式,具体功能如下:

  • 界面切换键:按下一次,切换OLED显示界面(界面1↔界面2);
  • 阈值增加键:在界面2时,按下一次,当前选中的阈值增加(如水温阈值+1℃、水位阈值+1cm),可循环切换选中的阈值(水温→水位→水质→光照);
  • 阈值减少键:在界面2时,按下一次,当前选中的阈值减少(如水温阈值-1℃、水位阈值-1cm),与阈值增加键配合使用,实现阈值修改;
  • 喂食键:按下一次,启动喂食功能,喂食完成后自动停止,期间再次按下无效;
  • 加氧键:按下一次,切换加氧状态(开启→关闭、关闭→开启),并同步更新OLED显示的加氧状态。

按键处理子程序中添加消抖处理(如延时10ms),避免按键抖动导致的误操作,确保按键操作的可靠性。

4.7 远程控制子程序设计(串口通信)

远程控制子程序通过USART1串口实现主控芯片与PC端的通信,模拟WIFI远程查看功能,具体流程如下:

  • PC端通过串口调试工具发送远程查看指令(采用字符串格式,如“查看数据”);
  • 主控芯片通过串口接收中断接收指令,将接收的字符串存储在缓冲区中;
  • 对接收的指令进行解析,判断是否为远程查看指令;
  • 若为远程查看指令,则将实时采集的水温、水位、水质、光照参数,以及各设备状态(加热、进水、出水、补光、加氧、喂食)通过串口发送给PC端;
  • PC端串口调试工具接收数据后,显示在界面上,实现远程数据查看。

为确保通信的可靠性,在指令传输过程中,采用简单的校验机制(如校验和),避免指令传输错误导致的响应异常;同时,设置串口接收超时处理,防止因干扰导致的串口卡死。

4.8 主程序设计

主程序是系统的核心,负责调度各子程序,实现系统的整体功能,主程序流程如下:

  • 系统上电,执行初始化程序,完成各模块的初始化;
  • 初始化完成后,OLED显示屏默认显示界面1(实时参数),加氧功能默认开启;
  • 进入主循环,调用传感器数据采集子程序,采集水温、水位、光照、水质参数;
  • 调用执行器控制子程序,根据采集到的参数和预设阈值,自动控制加热、进水、出水、补光等执行器动作;
  • 调用OLED显示子程序,更新显示内容,同步展示实时参数或阈值;
  • 调用按键处理子程序,监听按键操作,若有按键按下,则执行相应的操作(切换界面、修改阈值、手动控制设备);
  • 监听串口中断,若收到远程查看指令,则调用远程控制子程序,向PC端发送实时数据;
  • 重复上述步骤,实现系统的持续运行。

第五章 系统仿真调试与结果分析

5.1 仿真调试环境搭建

本次仿真调试采用Proteus 8.12版本和Keil MDK5版本,具体调试环境搭建步骤如下:

  • 在Keil MDK5中编写系统软件程序,编译生成.hex文件,确保程序无语法错误;
  • 在Proteus中打开系统整体仿真电路,将编译生成的.hex文件加载到STM32芯片中;
  • 配置Proteus仿真参数,设置仿真时钟频率为72MHz,串口参数与程序中一致(波特率9600bps);
  • 打开PC端串口调试工具,配置串口参数(与Proteus虚拟终端一致),建立与虚拟终端的通信;
  • 启动Proteus仿真,开始系统调试,观察各模块的工作状态和仿真结果。

5.2 分模块仿真调试

5.2.1 环境参数采集模块调试

启动仿真后,观察DS18B20、超声波传感器、光敏电阻、滑动变阻器的数据采集情况,通过Proteus的调试工具查看采集到的水温、水位、光照、水质参数,验证数据采集的准确性和稳定性。

调试结果:DS18B20能够准确采集水温数据,数据波动在允许范围内;超声波传感器能够准确测量水位高度,响应迅速;光敏电阻能够根据光照强度变化输出相应的电压信号,采集的光照数据稳定;滑动变阻器调节后,水质参数能够同步变化,符合设计要求。

5.2.2 执行器控制模块调试

在自动模式下,调整各项环境参数(水温、水位、光照、水质),观察加热、进水、出水、补光、加氧、喂食等执行器的控制情况,验证自动控制逻辑的正确性;在手动模式下,通过按键操作,观察执行器的响应情况,验证手动控制功能的正确性。

调试结果:当水温低于阈值时,加热红灯点亮,水温达到阈值后熄灭;当水位低于阈值时,进水电机转动,水位达到阈值后停止;当水质参数高于阈值时,出水电机转动,换水完成后自动补水;当光照低于阈值时,补光白灯点亮,光照达到阈值后熄灭;按下喂食键,喂食电机转动,完成喂食;按下加氧键,加氧电机切换工作状态,控制逻辑正确、响应迅速。

5.2.3 显示模块调试

观察OLED显示屏的显示情况,通过按键切换界面,验证双界面显示功能的正确性和显示内容的准确性、实时性,查看参数更新是否及时,有无卡顿、乱码现象。

调试结果:OLED显示屏能够清晰、准确地显示界面1(实时参数)和界面2(阈值),界面切换流畅,参数更新及时,无卡顿、乱码现象,显示内容符合设计要求。

5.2.4 按键控制模块调试

依次按下5个按键,观察按键操作对应的功能是否正常实现,验证按键消抖处理的有效性,避免误操作。

调试结果:界面切换键能够正常切换OLED显示界面;阈值增加/减少键能够在界面2时修改各项阈值,阈值调整准确;喂食键能够正常启动喂食功能;加氧键能够切换加氧状态,按键操作可靠,无明显误操作。

5.2.5 远程控制模块调试

通过PC端串口调试工具发送远程查看指令,观察主控芯片的响应和PC端接收的数据情况,验证远程数据查看功能的可靠性。

调试结果:PC端发送远程查看指令后,主控芯片能够准确解析指令,将实时采集的水温、水位、水质、光照参数及设备状态发送给PC端,PC端能够清晰显示接收的数据,远程数据查看功能稳定、可靠。

5.3 系统整体仿真调试

完成分模块调试后,进行系统整体仿真调试,模拟实际鱼缸环境的变化,观察系统的整体运行情况,验证系统各项功能的完整性和协调性。

仿真场景模拟:

  • 场景1:水温23℃(低于阈值25℃)、水位18cm(低于阈值20cm)、水质50(低于阈值60)、光照80lux(低于阈值100lux)。仿真结果:加热红灯点亮、进水电机转动、补光白灯点亮,加氧电机正常工作;OLED显示界面1实时更新参数,界面2显示预设阈值;按下喂食键,喂食电机转动,完成喂食;PC端发送查看指令,能够接收实时数据。
  • 场景2:水温26℃(高于阈值25℃)、水位22cm(高于阈值20cm)、水质70(高于阈值60)、光照120lux(高于阈值100lux)。仿真结果:加热红灯熄灭、进水电机停止、补光白灯熄灭、出水电机转动(换水),换水完成后进水电机补水;OLED显示界面1实时更新参数;按下加氧键,加氧电机停止工作;PC端发送查看指令,能够接收实时数据。
  • 场景3:在界面2时,通过阈值增加/减少键修改水温阈值为26℃、水位阈值为21cm,修改后界面1显示的阈值同步更新,自动控制逻辑随之调整,符合设计要求。

整体调试结果:系统运行稳定,各项功能均能正常实现,环境参数采集准确,自动控制逻辑正确,手动操作和远程查看功能可靠,OLED显示清晰实时,满足智能鱼缸的日常使用需求。

5.4 仿真结果分析

通过Proteus仿真调试,验证了基于STM32的智能鱼缸控制系统的可行性和正确性,仿真结果表明:

  • 环境参数采集模块能够准确、稳定地采集水温、水位、光照、水质参数,为系统自动控制提供可靠的依据;
  • 执行器控制模块能够根据环境参数和预设阈值,准确控制各执行器动作,自动完成加热、进水、出水、补光等操作,同时支持手动控制,控制逻辑正确、响应迅速;
  • 显示模块能够实现双界面显示,实时、清晰地展示环境参数和阈值,界面切换流畅,显示效果良好;
  • 按键控制模块操作可靠,能够实现界面切换、阈值修改、手动控制等功能,满足用户个性化需求;
  • 远程控制模块(虚拟WIFI)能够实现PC端远程查看环境参数,通信稳定、可靠,提升了系统的便捷性。

同时,仿真过程中也发现一些问题,如超声波传感器测量存在微小误差、水质参数模拟不够精准、喂食时间需进一步优化等,这些问题可通过优化程序算法(如数据滤波)和调整电路参数进行改进,为后续实际硬件开发提供了参考。

第六章 总结与展望

6.1 研究总结

本文围绕基于STM32的智能鱼缸Proteus仿真展开研究,完成了系统的硬件电路设计、软件程序设计和仿真调试,主要研究成果如下:

  • 确定了系统整体方案,选用STM32F103系列单片机为主控芯片,搭配DS18B20、超声波传感器、光敏电阻、滑动变阻器等采集器件,继电器驱动的电机、灯光等执行器件,OLED显示屏、按键和虚拟WIFI模块,实现了环境监测、自动控制、手动操作、远程查看等功能;
  • 完成了各模块硬件电路设计,在Proteus中搭建了系统整体仿真电路,确保各模块连接正确、工作稳定;
  • 采用模块化设计思想,编写了系统软件程序,包括初始化程序、传感器采集程序、执行器控制程序、OLED显示程序、按键处理程序和远程控制程序,实现了系统的各项功能;
  • 通过Proteus仿真调试,验证了系统的可行性和正确性,仿真结果表明,系统能够准确采集环境参数,自动控制各执行器动作,支持手动控制和远程数据查看,运行稳定、响应迅速,满足智能鱼缸的日常使用需求。

6.2 存在的不足

本文设计的智能鱼缸控制系统仅完成了Proteus仿真,尚未进行实际硬件开发,存在一些不足,主要包括:

  • 仿真中采用滑动变阻器模拟水质参数,未使用实际的水质传感器(如TDS传感器),水质检测的准确性有待实际硬件验证;
  • 远程控制仅实现了数据查看功能,未实现远程控制设备开关,功能较为单一;
  • 系统未添加报警功能,当水质、水温等参数异常时,无法及时提醒用户;
  • 未考虑系统的功耗优化,长期运行时功耗较高,不利于节能;
  • 传感器采集的数据存在微小误差,未采用复杂的数据滤波算法,采集精度有待进一步提高。

6.3 未来展望

针对本文系统存在的不足,未来的研究方向和改进计划如下:

  • 进行实际硬件开发,选用实际的水质传感器(如TDS传感器)替代滑动变阻器,提高水质检测的准确性;选用ESP8266 WIFI模块替代虚拟终端,实现真正的无线远程控制,不仅支持远程查看数据,还能实现远程控制设备开关;
  • 扩展系统功能,添加报警模块(如蜂鸣器),当水质、水温等参数异常时,蜂鸣器报警,同时向用户手机发送报警信息;添加定时喂食功能,可通过按键设置喂食时间和次数,实现自动化喂食;
  • 优化软件算法,添加卡尔曼滤波、滑动平均滤波等数据滤波算法,提高传感器数据采集的精度,减少数据波动;
  • 优化电路设计和程序编写,采用低功耗模式,降低系统功耗,实现节能运行;
  • 开发手机APP,替代PC端串口调试工具,实现更加便捷的远程查看和控制,提升用户体验;添加语音控制功能,通过

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐