实物演示效果
基于stm32智能鱼缸控制系统的设计与实现
目录:
实物演示效果
目录:
一、 绪论
1.1 项目研究目的及意义
1.1.1 选题目的
1.1.2 选题意义
1.2 国内外研究现状
1.2.1 国外发展现状
1.2.2 国内发展现状
1.3 项目研究内容
二、智能鱼缸系统总体设计
2.1 智能鱼缸控制系统功能需求分析
2.2 系统总体方案设计
2.3 元器件的选型
2.3.1 控制器选型
2.3.2 温度传感器选型
2.3.3 显示模块选型
2.3.4 光照传感器选型
2.3.5通信模块选型
2.3.6 水位检测模块
2.3.7 浊度检测模块
2.3.8 PH值检测模块
2.3.9 继电器模块
3 系统硬件电路设计
3.1 系统硬件电路
3.2 单片机最小系统
3.3 电源电路
3.4 传感器电路
3.4.1 水位检测电路
3.4.2 光照检测电路
3.4.3 水温检测电路
3.4.4 浊度检测电路
3.4.5 PH值检测电路
3.5 显示电路
3.6 喂食电路
3.7 通信电路
3.8 按键电路
3.9 进水电路
3.10 排水电路
3.11 补光电路
3.12 加热电路
3.13 加氧电路
四、系统软件设计
4.1 编程软件介绍
4.2 智能鱼缸控制系统程序
4.3 子系统程序设计
4.3.1 显示模块流程
4.3.2通信模块流程
4.3.3 按键模块流程
4.3.4 温度检测模块流程
4.3.5 光照检测模块流程
4.3.6 水位检测模块流程
4.3.7 浊度检测模块流程
4.3.8 PH值检测模块流程
4.3.9 喂食功能模块流程
4.3.10 充氧功能模块流程
五、系统硬件焊接与调试
5.1 系统硬件与焊接
5.1.1 系统硬件
5.1.2 硬件焊接
5.2 硬件调试与问题解决
5.2.1 电路设计问题
5.2.2 焊接问题
5.2.3 程序设计问题
5.3 系统调试
5.3.1 屏幕显示调试
5.3.2 传感器模块调试
5.3.3 执行模块调试
5.3.4 阈值设置调试
5.3.5 远程控制调试
六、结论与展望
6.1 结论
6.2 展望
详细资源文件链接:毕设&课设&项目&实训-基于stm32智能鱼缸控制系统的设计与实现(论文+原理图+程序代码+材料清单).zip_
资源详细说明:
实物元器件清单
编辑
实物源程序-C语言源码
原理图&PCB-Altium Designer
一、 绪论
1.1 项目研究目的及意义
1.1.1 选题目的
随着社会经济的快速发展人民对工作和生活环境有了更高的要求,观赏鱼类养殖行业在这样的社会背景下蓬勃发展。在养鱼爱好者逐年增多且智能鱼缸的需求逐年增加的背景下,智能鱼缸市场前景十分广阔。目前国内市场上常见智能鱼缸的功能并不完善,自动程度较低,控温模块、加氧模块、自动投喂和水位调节模块采用的是互相独立的组件,不但使用时不方便,而且成本比较高[1]。因此市面上急需一个可以自动调节水温、自动加氧、自动补光和定时喂食等功能为一体且成本低廉的鱼缸控制系统。且该系统应当能通过移动端监视鱼缸内部环境并干预鱼缸内部环境,以满足用户对智能鱼缸的需求[2]。
1.1.2 选题意义
智能鱼缸控制系统是一种集成了传感器、控制器和通讯设备的系统[3],通过智能化技术对鱼缸内的温度、水量、光照等环境因素进行监测和调控,以提升鱼类的生存环境和管理效率[4]。智能鱼缸控制系统的研究意义主要体现在以下几个方面:
智能鱼缸控制系统能够极大地提高鱼类的生存环境稳定性和舒适度[5]。传统的鱼缸管理依赖于饲养者的手动操作和直观判断,难以保障鱼类生存环境的稳定性,智能鱼缸控制系统可以通过实时监测水质、温度等关键指标,及时对鱼缸内环境进行调控,提高鱼类的环境舒适度和存活率[6]。
智能鱼缸控制系统还能够降低饲养者的管理成本和工作量。传统鱼缸管理需要饲养者不断进行换水、温度调节和饲料投放等工作,耗费时间和精力。而智能鱼缸控制系统的自动化管理功能,可以减轻饲养者的管理负担,降低管理成本并提高工作效率[7];第三,智能鱼缸控制系统提升了养鱼爱好者的养殖体验。通过手机APP实现对鱼缸的智能管理,养鱼爱好者可以随时随地关注鱼缸的情况,并进行手机APP控制,大大提升了养鱼的乐趣[8]。
智能鱼缸控制系统也可为水产养殖业的智能化管理提供了一定技术参考且智能鱼缸控制系统的技术和理念可以应用于大型水族馆中。因此,研究智能鱼缸控制系统具有重要的理论和实践意义[9]。
1.2 国内外研究现状
1.2.1 国外发展现状
“鱼缸”又称为“水族箱”,“水族箱”一词起源于英国,沿用至今已超过了150年[10]。目前全世界范围内约有6千万以上的水族爱好者,在日本家庭中有16%的家庭将观赏鱼作为家居景观及宠物在饲养[11]。其次是美国,英国,分别是15%、14%,目前世界观赏渔业的增长速度依然可观,达到了10%,对于水族行业龙头美国来说,有1200万户美国家庭拥有水族箱,其中四成以上的人甚至同时拥有2个及以上的水族箱[12],据有关统计,2019年全球水族行业市场规模约为357.22亿美元,2020年为388.65亿美元,增速达到8.8%,根据相关研究预测,在未来几年全球水族行业市场上,其市场规模也将呈现快速增长趋势,预测到2023年全球水族行业的市场规模将达到488.67亿美元[12]。
国外一份关于智能鱼缸的研究报告以设备功能、使用便捷性、健康管理和数据分析四个方面来评估智能鱼缸的水平[13]。该报告指出,在设备功能方面智能鱼缸系统通过传感器、摄像头和云平台等技术实现对鱼缸内环境和鱼类的实时监测;在使用便捷性方面智能鱼缸系统能把缸内情况实时反馈到手机端方便鱼缸主人掌握和干预鱼缸内环境;在健康管理方面智能鱼缸不仅可以监测水质、温度等参数,还可以通过摄像头对鱼类的行为进行观察,从而及时发现鱼类的异常状况;在数据分析方面智能鱼缸还可以通过云平台对收集到的数据进行分析,提供饲养建议和预测[14]。同时该报告还指出智能鱼缸还存在成本高昂、数据安全不确定等问题。
1.2.2 国内发展现状
据不完全统计,近五年来,国内智能鱼缸的市场规模逐年增长,越来越多的消费者开始接受并购买智能鱼缸。鱼缸从最初的基础观赏功能,到现在的水质监测、自动喂食、远程控制等多元化功能,智能鱼缸的产品特性不断升级,满足了不同消费者的多样化需求[15]。当前在技术创新方面智能鱼缸也取得了显著进展,如AI技术在水质分析、鱼类健康监测等方面的应用,为智能鱼缸的发展注入了新的活力[16]。
随着市场的不断扩大,越来越多的品牌进入智能鱼缸市场,品牌间的竞争也日趋激烈[17]。以小米智能鱼缸为例,在实现智能控制的基础上小米智能鱼缸内置的水质监测系统可以实时检测鱼缸中的水温、酸碱度、溶解氧等关键指标,保证鱼儿的健康生长,且配备高效的过滤系统,能够自动清理鱼缸中的残饵和鱼儿的排泄物,维持水质的清洁和稳定,还可以通过连接手机或其他智能设备,观看鱼缸的实时画面,甚至与鱼儿进行互动,增加了鱼缸的趣味性和互动性[18]。
此外小米智能鱼缸采用了先进的节能技术,在实现此上诸多功能的同时既保证了鱼缸的正常运行,又降低了能耗,符合现代环保理念。在市场竞争中小米智能鱼缸有技术领先,集成了最新的物联网和人工智能技术,使得鱼缸的控制更加智能和便捷[19]。
小米智能鱼缸设计美观,外观设计简约大方,既可以作为家居装饰,也可以作为科技展示,提升了家居的整体美感;性价比高,其价格相对合理,性价比极高,让更多的消费者能够享受到智能生活的便利等优势,让小米智能鱼缸放眼国内甚至国际都具有相当的竞争力[20-21]。
1.3 项目研究内容
针对鱼缸内环境参数检测和智能鱼缸控制系统组成进行研究,在充分的学习并具备一定理论基础时,确定智能鱼缸控制系统的主要研究内容有以下几个方面:
(1)对系统的控制方案进行科学的设计,主要从智能鱼缸控制系统的检测需求、调节需求等等方面来考虑控制方案的设计[22]。在控制方案设计的同时还需考虑系统的硬件组成,即以单片机作为控制器,环境检测、Wi-Fi通信、环境调节、参数显示作为组成模块,通过控制方案的设计实现系统实时检测、显示环境参数、调节鱼缸环境、远程控制系统等功能的逻辑设计和可行性论证[23-24]。
(2)了解鱼缸环境检测参数特性及检测需求,学习智能鱼缸控制系统各模块工作原理之后确定检测鱼缸内环境参数如水温、水位、浊度、PH值、光照强度等,并根据使用环境和检测需求确定鱼缸环境检测传感器的选型[25]。
(3)根据国内外研究现状,分析如何将Wi-Fi通信技术应用在智能鱼缸控制系统。
二、智能鱼缸系统总体设计
2.1 智能鱼缸控制系统功能需求分析
设计智能鱼缸时考虑到饲养一些对低温不耐受的鱼类时,传统鱼缸无法在寒冷环境下保持水温,因此智能鱼缸控制系统需要具备检测和控制缸内水温的功能;由于鱼缸处于室内接受自然光照不足,因此智能鱼缸控制系统需要具备在光照强度过低时为缸内补充光照的功能;鱼缸内水体较小,鱼缸中的水分蒸发容易导致缸内水位下降,且鱼缸换水时也需要及时加水保证鱼的安全,因此智能鱼缸控制系统需要具备检测鱼缸内水位并在水位过低时及时加水的功能;鱼缸内的鱼食残渣和鱼的排泄物以及缸内微生物的繁衍容易影响鱼缸中的水质,鱼缸内部水质的好坏主要看浊度和PH值,因此智能鱼缸控制系统应具备检测鱼缸内浊度和PH值并在水质不达标时将污水排出的功能;智能鱼缸还应具备给鱼定时喂食和为鱼缸内加氧的功能。此外鱼缸用户应能通过显示器直观的了解鱼缸内的各项环境参数且在距离鱼缸较远的地方能实时通过手机了解鱼缸内的环境参数并进行干预。智能鱼缸控制系统具体实现方式如下:
(1)鱼缸内环境检测系统由5个传感器组成,分别为水位传感器、光强传感器、温度传感器、浊度传感器和PH值传感器分别实现对鱼缸内水位检测、鱼缸内光照强度检测、鱼缸内水温检测、鱼缸内水的浊度检测和鱼缸内水的PH值检测。
(2)将鱼缸内的各项环境参数实时显示在OLED屏上。
(3)检测所得信号传输至单片机后,单片机对信号进行处理分析。当一项或多项数值不在预定阈值范围内时,对应的执行器将对鱼缸内的环境进行调节,直到该参数恢复到设定阈值范围内。
(4)鱼缸用户能通过手机APP实时了解鱼缸内各项环境参数并且能对各执行器进行控制。
2.2 系统总体方案设计
智能鱼缸控制系统由单片机最小系统、传感器模块、显示模块、电源模块、按键模块、Wi-Fi模块、执行器模块组成。单片机为该系统的控制器,对各个模块数据处理分析并控制执行器工作,从而完成系统对鱼缸内环境的检测和控制。传感器模块将检测鱼缸内环境参数的信号传送至控制器,再由控制器根据预先设定好的控制条件执行显示和对执行器的动作控制功能;显示模块主要是为鱼缸内环境参数提供显示功能且能在按键更改阈值时提供显示功能;电源模块为整个系统供电保障系统正常工作;按键模块可以切换显示界面、设置阈值、切换模式;Wi-Fi模块把系统和手机连接,将检测的数据传输给用户,用户也可以通过手机发送指令控制系统;执行器模块实现加水、排水、加热、补光、喂食和增氧功能。系统硬件框架图如图2-1所示。
图2-1 系统硬件框架图
2.3 元器件的选型
2.3.1 控制器选型
智能鱼缸控制系统设计中所选控制器为STM32F103C8T6,STM32F103C8T6单片机具有性能优异的特点, STM32F103C8T6单片机数据处理快,地址空间足够大且拥有本次设计所用到的AD/DA转换外设,能满足设计需求。STM32F103C8T6参数如表2.1所示:
表2.1 STM32F103C8T6参数
STM32F103C8T6参数 | |
工作电压 | +5V |
ADC | 2个 |
定时器 | 6个 |
通信接口 | 6个 |
2.3.2 温度传感器选型
智能鱼缸控制系统设计采用DS18B20作为温度检测模块。传感器在鱼缸中测量水温需要具备能在水下工作,对水温变化反应灵敏,测温范围广泛等特点。
DS18B20是常见且专用于温度检测的传感器,DS18B20能适应水下水下工作环境,对温度变化反应灵敏,测温范围广泛,此外DS18B20温度传感器具有连接单、操作方便等特点完全能用作鱼缸中测量水温的传感器。DS18B20温度传感参数器如表2.2所示:
表2.2 DS18B20温度传感器参数
DS18B20参数 | |
工作电压 | +5V |
测量范围 | -50~+125℃ |
测量精度 | ±5℃ |
响应时间 工作温度 | 300ms -10~+85℃ |
2.3.3 显示模块选型
在智能鱼缸控制系统设计中使用的OLED液晶显示屏型号为SSD1306。智能鱼缸控制系统需要显示的参数较多且为方便用户使用需要使显示参数名能显示汉字。
SSD1306具备轻薄,可视角度更大的特点,因设计所需显示参数较多且鱼缸内环境参数名称需要显示汉字方便用户阅读,所以选用SSD1306用作本次设计的显示模块。SSD1306参数如表2.3所示:
表2.3 SSD1306参数
SSD1306参数 | |
工作电压 | +3.3V |
分辨率 | 128x64 |
接口类型 工作温度 | 12C -40~+70℃ |
2.3.4 光照传感器选型
智能鱼缸控制系统设计选用光敏电阻作为光照检测模块,具体型号为GL5528。鱼缸周围环境较为潮湿且鱼缸作为一个较小的设施所用传感器应较为紧凑不宜占用太多空间。
GL5528体积较小且具有在高温、多湿的恶劣环境下也能保持高度的稳定性和可靠性的特点,而鱼缸周围属于潮湿环境,因此本次设计的光照检测模块选用GL5528。GL5528参数如表2.4所示:
表2.4 GL5528参数
GL5528参数 | |
工作电压 | +3.3V |
工作温度 亮电阻 暗电阻 响应时间 | -30~+70℃ 10~20KΩ 1MΩ 30ms |
2.3.5通信模块选型
智能鱼缸控制系统设计实现远程数据传输均需要通过Wi-Fi模块来完成,Wi-Fi模块具体型号为ESP8266-12F。智能鱼缸控制系统应具备鱼缸内环境参数能被用户远距离监测控制的功能。
ESP8266-12F传输速率高且信号覆盖范围广,能实现远距离高效传输,因此本设计选用ESP8266-12F作为通信模块。ESP8266-12F参数如表2.5所示:
表2.5 ESP8266-12F参数
ESP8266-12F参数 | |
工作电压 | +3.3V |
工作温度 响应时间 | -20~+85℃ 2ms |
2.3.6 水位检测模块
智能鱼缸控制系统选用了超声波传感器来实现对鱼缸液位的检测功能,超声波传感器具体型号为HC-R04。鱼缸内水体较小,传感器反应较慢、水位检测不精准容易导致鱼缸水位偏离阈值。
HC-R04是一种基于超声波技术的非接触式距离测量模块,这款传感器广泛应用于水位检测系统,HC-R04具有检测精准、对水位变化反应灵敏的优点,因此采用HC-R04作为本系统水位检测模块。HC-R04参数如表2.6所示。
表2.6 HC-R04参数
HC-R04参数 | |
工作电压 | +5V |
工作温度 | 0~+70℃ |
探测距离 探测精度 | 400cm 0.1cm |
2.3.7 浊度检测模块
智能鱼缸控制系统采用浊度传感器实现对浊度的检测功能,浊度传感器具体型号为TS-300B。在鱼缸中影响浊度的主要成分是鱼的排泄物和鱼饲料残渣,鱼缸中鱼类的游动会导致水体流动并把鱼缸底部的固体残渣搅动并漂浮在水中,而浊度是指水中悬浮颗粒物对光线的阻碍程度。
浊度传感器内部包含一个光源和一个光检测器。当光线通过鱼缸中含有悬浮颗粒物的水体时,鱼缸内的颗粒物会散射光线。散射光的强度与颗粒物的浓度和大小有关。光检测器接收散射光并将其转换为电信号,这个电信号与水样的浑浊度成正比。通过测量这个电信号的大小,就可以确定水质的浑浊度。TS-300B参数如表2.7所示。
表2.7 TS-300B参数
TS-300B参数 | |
工作电压 | +5V |
工作温度 | -20~+90℃ |
响应时间 | 500ms |
2.3.8 PH值检测模块
智能鱼缸控制系统采用PH值传感器实现对PH值的检测,PH值传感器的具体型号为E201-BN。鱼缸中微生物分解有机物残渣会产生酸性物质使PH值过低,而PH值过低会导致鱼儿中毒。智能鱼缸控制系统对PH值传感器的要求是测量精度高,从测量精度上来说,E201-BN适合用作智能鱼缸控制系统的PH值传感器。E201-BN参数如表2.7所示。
表2.8 E201-BN参数
E201-BN参数 | |
工作电压 | +5V |
工作温度 测量范围 测量精度 | -20~+90℃ 0~14PH ±0.01PH |
响应时间 | 500ms |
2.3.9 继电器模块
智能鱼缸控制系统的加水、排水、加氧、加温和补光功能所用到的执行器需要通过继电器控制,因此系统需要外加5个继电器。因接入的电源电压为5V,故选用了SRD-05VDC-SL-C型继电器,SRD-05VDC-SL-C继电器参数如表2.9所示。
表2.9 SRD-05VDC-SL-C参数
SRD-05VDC-SL-C参数 | |
工作电压 | +5V |
工作温度 | -40~+105℃ |
3 系统硬件电路设计
3.1 系统硬件电路
由控制器、传感器模块、显示模块、通信模块、电源模块、按键模块、执行模块7部分共同组成了智能鱼缸控制系统硬件电路,如图3-1所示为系统硬件电路结构。
图3-1 硬件电路结构图
3.2 单片机最小系统
智能鱼缸控制系统的最小系统由STM32F103C8T6单片机、2个晶振电路、1个复位电路组成。复位电路由按键、10kΩ电阻和1uF电容组成;晶振电路1由2个20pF的电容并联、1个8MHz晶振和1个1MΩ电阻组成;晶振电路2由2个20pF的电容并联和1个32.768KHz晶振组成,需要说明的是晶振电路1的2个引脚分别连接控制器PD0-OSC_IN、PD1-OSC_OUT引脚;晶振电路2的2个引脚分别连接控制器PC14-OSC32_IN、PC14-OSC32_OUT引脚。图3-2所示为单片机最小系统电路原理图。
图3-2 单片机最小系统电路原理图
3.3 电源电路
在智能鱼缸控制系统中,电源采用5V直流供电的方式给STM32F103C8T6单片机供电。电源电路原理图如图3-3所示。
图3-3 电源电路原理图
3.4 传感器电路
3.4.1 水位检测电路
HC-R04是超声波传感器,在智能鱼缸控制系统中作为水位检测传感器使用,输出数字信号,HC-R04一共四个引脚,VCC和GND与电源相连,TRIG和ECHO引脚与单片机的PA8和PA11端口相连,HC-R04电路原理图如图3-4所示。
图3-4 HC-R04电路原理图
3.4.2 光照检测电路
GL5528是光敏电阻,在智能鱼缸控制系统中作光照检测传感器使用,输出模拟信号。GL5528一端与电源正极相连,另一端连接一个10KΩ电阻并与控制器PA0-WKUP引脚相连,10KΩ电阻另一端与电源负极相连。GL5528电路原理图如图3-5所示。
图3-5 G5506电路原理图
3.4.3 水温检测电路
DS18B20温度传感器在智能鱼缸控制系统中作为水温检测传感器使用,输出数字信号。DS18B20一共有3个引脚,其中GND引脚与电源负极直接连接;VCC引脚与电源正极直接相连;I/O引脚与控制器PB10引脚直接相连,再接入一个10KΩ电阻一端与传感器引脚相连,另一端与传感器I/O引脚相连。 DS18B20电路原理图如图3-6所示。
图3-6 DS18B20电路原理图
3.4.4 浊度检测电路
TS-300B浊度传感器在智能鱼缸控制系统中起到浊度检测的功能,输出模拟信号。TS-300B浊度传感器一共有四个引脚,其GND和VCC与电源相连,A0引脚与单片机的PA1引脚相连。TS-300B电路原理图如图3-7所示。
图3-7 TS-300B电路原理图
3.4.5 PH值检测电路
E201-BN是PH值传感器在智能鱼缸控制系统中起PH值检测作用,输出模拟信号。E201-BN共有6个引脚,其VCC、GND引脚与电源相连;PO引脚与控制器PA4引脚相连。E201-BN电路原理图如图3-8所示。
图3-8 E201-BN电路原理图
3.5 显示电路
SSD1306是智能鱼缸控制系统的OLED液晶显示屏,SSD1306共有4个引脚,其VCC、GND引脚分别与电源相连;SCL、SDA引脚分别与控制器的PB5、PB6引脚相连。SSD1306电路原理图如图3-9所示。
图3-9 SSD1306电路原理图
3.6 喂食电路
ULN2003A是步进电机,在智能鱼缸控制系统中投食动作主要由步进电机完成。ULN2003A共有16个引脚其中IN1、IN2、IN3、IN4引脚分别与控制器的PB15、PB14、PB13、PB12引脚相连;OT1、OT2、OT3、OT4、COM引脚与一个插座的OT1、OT2、OT3、OT4、COM端相连;再把COM、GND引脚与电源连接。ULN2003A电路原理图如图3-10所示。
图3-10 ULN2003A电路原理图
3.7 通信电路
ESP8266-12F是智能鱼缸控制系统的W-Fi模块。ESP8266-12F共有4个引脚,其中VCC、GND连接系统电源,TXD、RXD和单片机的串口PA3、PA2连接。ESP8266-12F电路原理图如图3-11所示。
图3-11 ESP8266-12F电路原理图
3.8 按键电路
在智能鱼缸控制系统中功能按键起设置定时和阈值调节功能,该按键电路结构简单,直接由3个按键组成,分别为K1、K2、K3,分别与控制器PB7、PB8、PB9引脚相连。按键电路图如图3-12所示。
图3-12 按键电路图
3.9 进水电路
智能鱼缸控制系统进水电路由一个SED-05VDC-SL-C继电器和一个JT-DC3W水泵组成。SED-05VDC-SL-C继电器有五个引脚,其中VCC、GND连接系统电源,I/O引脚与单片机PA6引脚直接连接,NO、COM与JT-DC3W水泵相连接。进水模块电路原理图如图3-13所示。
图3-13 进水电路原理图
3.10 排水电路
智能鱼缸控制系统排水电路由一个SED-05VDC-SL-C继电器和一个JT-DC3W水泵组成。SED-05VDC-SL-C继电器有五个引脚,其中VCC、GND连接系统电源,I/O引脚与单片机PA7引脚直接连接,NO、COM与JT-DC3W水泵相连接。排水模块电路原理图如图3-14所示。
图3-14 排水电路原理图
3.11 补光电路
智能鱼缸控制系统补光电路由一个SED-05VDC-SL-C继电器和一个LED组成。SED-05VDC-SL-C继电器有五个引脚,其中VCC、GND连接系统电源,I/O引脚与单片机PB1引脚直接连接,NO、COM与LED连接。补光灯电路原理图如图3-15所示。
图3-15 补光灯电路原理图
3.12 加热电路
智能鱼缸控制系统排水电路由一个SED-05VDC-SL-C继电器和一个加热棒组成。SED-05VDC-SL-C继电器有五个引脚,其中VCC、GND连接系统电源,I/O引脚与单片机PA5引脚直接连接,NO、COM与加热棒相连接。加热电路原理图如图3-16所示。
图3-16 加热电路原理图
3.13 加氧电路
智能鱼缸控制系统排水电路由一个SED-05VDC-SL-C继电器和一个增氧泵组成。SED-05VDC-SL-C继电器有五个引脚,其中VCC、GND连接系统电源,I/O引脚与单片机PB0引脚直接连接,NO、COM与增氧泵连接。增氧电路原理图如图3-17所示。
图3-17 增氧电路原理图
四、系统软件设计
4.1 编程软件介绍
智能鱼缸控制系统设计所用到的编程软件为Keil5,采用C语言进行编程。Keil5运行速度快,操作便捷且能实现在线烧录和功能调试。智能鱼缸控制系统控制程序采用模块化编程,根据硬件电路设计区分程序模块,显示程序、通信程序、按键程序、温度检测模块程序、光照检测模块程序、水位检测模块程序、浊度检测模块程序、PH值检测模块程序、喂食功能程序和充氧功能程序。如图4-1所示。
图4-1 系统程序结构图
4.2 智能鱼缸控制系统程序
程序启动后开始执行。初始化各种功能模块,包括显示、按键处理、参数监测、系统管理等。然后设备连接Wi-Fi网络,同时连接登录阿里云服务器平台,接着不断进行按键扫描,检测是否有按键操作。如果有按键操作,则处理按键操作,然后进行参数监测、系统管理和数据测量等操作。如果没有按键操作,则直接进行参数监测、系统管理和数据测量等操作。对水族箱中的各种参数进行测量,包括温度、光照、浑浊度等。监测水族箱中各种参数的变化,根据监测到的参数变化,管理系统功能,包括控制温度、增加光照、换水等。然后对各种功能进行定时时间的设定,并不断判断是否到达设定时间,检查是否到达充氧时间,如果达到,则启动充氧继电器对水箱进行充氧操作;
如果没有则检查是否到定时喂食时间, 如果到了定时喂食时间,则启动步进电机进行喂食操作,然后继续进行参数监测、系统管理和数据测量等操作。如果没有到定时喂食时间,则调用温度测量子程序进行水温检测,判断温度是否低于设定值如果温度低于设定值,则启动加热继电器对水进行加热,然后继续进行参数监测、系统管理和数据测量等操作。如果温度没有超过设定值,则调用光照检测传感器对光照强度进行检测,判断光照是否低于设定值,如果光照低于设定值,则启动补光继电器进行增光控制,然后继续进行参数监测、系统管理和数据测量等操作。如果光照没有低于设定值,则调用浑浊度检测子程序对水质浑浊度进行检查,判断浑浊度是否超过设定值,如果浑浊度超过设定值,则启动换水继电器进行换水控制,如果浑浊度低于阈值,则调用PH检测子程序对水质酸碱度进行检测,当PH不在阈值范围内时则启动换水继电器进行换水,如果PH在阈值范围内,则调用超声波水位检测子程序对水面高度进行检查,判断水面高度是否低于最小设置值,如果低于最小设置值,则启动注水继电器进行注水,如果高于最小值,然后更新OLED的显示数据,并判断时间是否到达3S,如果是,则每隔3S将数据上传至阿里云平台进行监控。主程序流程如图4-2所示。
图4-2 主程序流程图
4.3 子系统程序设计
4.3.1 显示模块流程
系统上电之后,对OLED显示屏及其引脚进行初始化,以确保能正常工作。然后启动I2C协议并检测手是否有I2C信号,如果成功过接收到I2C的命令信号后,设置写入命令的地址,启动写命令寄存器,向OLED写入命令。接着设置写入数据的显示位置,用于指定显示字符或图形的起始点。然后检查读状态字是否处于忙状态,当读状态字不忙时,向OLED写入即将要显示的数据,判断数是否全部写完,当全部写完之后,OLED显示字符和字符串等数据。显示程序流程如图4-3所示。
图4-3显示程序流程图
4.3.2通信模块流程
程序开始后,首先对 ESP8266 模块进行初始化。这包括配置 GPIO,将其设置为输出模式以控制 ESP8266 的复位。然后通过发送一系列的 AT 指令来完成初始化过程,包括检查 ESP8266 是否正常工作,设置 ESP8266 为 Station 模式(客户端模式),以及设置 ESP8266 自动获取 IP 地址。接着,发送指令连接到 Wi-Fi 网络,并连接到阿里云 IoT 服务器。这些指令包含服务器的地址和端口号,确保 ESP8266 能够正确连接到服务器并建立通信。发送订阅主题的指令,告诉阿里云 IoT 平台,ESP8266 对特定主题感兴趣,需要接收相关数据。发送初始数据到阿里云 IoT 平台,当测量数据有更让时,会定期将更改数据发布到阿里云服务器。远程通信程序流程如图4-4所示。
图4-4远程通信程序流程图
4.3.3 按键模块流程
系统上电后,先对按键模块进行初始化,然后不断进行按键扫描,判断是否有按键按下,如有则查询键值,根据按键编号执行对应操作,如果key1按下,则进入设置界面,检查当前的设置界面标志,用于确定当前界面是哪一个。如果标志在范围内,增加标志;否则,重新开始计数:如果当前设置界面标志在1到3之间,则增加标志;否则,将标志重置为0;如果按下key2,则检查当前设置界面标志,根据当前设置界面标志,将对应参数执行加1操作;如果按下key3,则检查当前设置界面标志,根据当前设置界面标志,将对应参数执行减1操作。按键程序流程如图4-5所示。
图4-5按键流程图
4.3.4 温度检测模块流程
系统上电后,首先将DS18B20模块进行初始化操作并配置 DS18B20 温度传感器的引脚为输出和输入模式来准备通信,执行复位操作,即拉低引脚,延时一段时间后再拉高引脚,以准备开始通信。接着,检查DS18B20传感器是否响应,如果传感器响应,则表示通信正常;否则,表示通信失败重新返回传感器应答检测。成功后接下来,DS18B20接收单偏片机发送的读取温度数据指令,执行读取和写入操作,然后启动传感器进行温度测量,分别读取温度的高8位和低8位数据,并读取测得的温度值。通过公式将温度转换为摄氏度数据,最终返回温度数据。温度检测程序流程如图4-6所示。
图4-6 温度检测流程图
4.3.5 光照检测模块流程
首先,初始化光敏电阻模块和ADC(模数转换器),将光敏电阻连接到ADC的输入引脚上。光敏电阻的阻值随着光照强度的变化而变化,这会导致输入到ADC引脚的电压值发生变化。ADC模块负责将这个模拟电压转换为数字值,该数字值代表了光敏电阻此时的阻值,进而反映了光照强度的相对程度。这个数字值越大,表示光照强度越高。因此,通过ADC转换后的数字值,可以计算出对应的光照强度值。光照检测程序流程如图4-7所示。
图4-7 光照检测流程图
4.3.6 水位检测模块流程
首先,初始化HC-SR04超声波传感器,设置TRIG引脚为输出模式,ECHO引脚为输入模式,并初始化定时器TIM3用于计时。接着,根据传入的温度值计算超声波在空气中的声速。然后,给TRIG引脚发送一个20微秒的脉冲来触发超声波传感器,等待ECHO引脚返回脉冲。一旦ECHO引脚收到返回脉冲,启动定时器TIM3开始计时,直到接收到回波信号后停止计时。通过测量TIM3的计数值,根据距离公式计算超声波的飞行距离,并最终返回距离值。水位检测流程如图4-8所示。
图4-8 水位检测流程图
4.3.7 浊度检测模块流程
系统上电后,首先初始化浑浊度检测传感器,包括连接设置和其他必要的配置。初始化模数转换器ADC,设置ADC的参数。当浑浊度传感器检测到信号后会向ADC发送模拟信号,然后启动ADC转换,将模拟信号转换为数字信号。当ADC转换完成后。读取ADC转换后的数字值,表示传感器检测到的浑浊度。根据读取到的ADC值,通过一定的算法计算出浑浊度的值。将计算得到的浑浊度值输出给单片机进行处理。浊度检测程序流程图如图4-9所示。
图4-9 浊度检测程序流程图
4.3.8 PH值检测模块流程
系统上电之后对PH检测模块进行初始化,同时也对模数转换ADC模块进行初始化,然后PH传感器模块获取初始PH信号数据,将数据发送给ADC模块进行模数转换,当转换完成输出一个数字量信号,然后多次测量取平均值输出PH数值。光照检测程序流程如图4-10所示。
图4-10 PH值检测程序流程图
4.3.9 喂食功能模块流程
首先系统上电之后,对电机及其引脚和驱动器ULN2003A进行初始化操作,以确保电机和驱动器能正常工作,然后启动定时器,根据设定时间开始计时,当达到计时时间则单片机将发送信号给ULN2003A驱动器,再由驱动器将信号放大驱动步进电机,步进电机正转,进行喂食,如果没到达预定时间,则继续计时直到达。喂食功能程序流程如图4-11所示。
图4-11 喂食功能程序流程图
4.3.10 充氧功能模块流程
首先对充氧继电器和定时器进行初始化,以确保能非常运行,判断充氧时长是否为0,不为0则表示已经设置了充氧时长,否则表示充氧时长已经倒计时完毕需要重新设置,所以重新装载初始时间,重新设置充氧倒计时。判断是否到达充氧时间,如果是则启动充氧继电器开始充氧,同时设定充氧时间不断执行减1S操作,直至充氧时长减为0,则充氧结束,等待下一次的充氧时间设定。充氧功能程序流程如图4-12所示。
图4-12 充氧功能程序流程图
五、系统硬件焊接与调试
5.1 系统硬件与焊接
5.1.1 系统硬件
智能鱼缸控制系统由下列硬件组成:
STM32F103C8T6单片机、温度传感器:DS18B20、浊度传感器:TS-300B、光敏电阻:GL5528、超声波传感器:HC-R04、Wi-Fi模块:ESP8266-12F、OLED显示屏:SSD1306、步进电机:ULN2003A、5个继电器:SED-05VDC-SL-C、2个水泵、增氧泵、加热棒以及若干按键、电阻、电容和LED灯。
5.1.2 硬件焊接
根据本智能鱼缸控制系统设计原理图和元器件电路要对设计系统进行实物焊接。由于本系统元器件众多,在焊接过程中应用到飞线等易出错焊接方式,因此需注意虚焊、连焊和错焊等焊接失误,否则上电调试可能会出现元器件不工作或直接损坏的情况。本智能鱼缸控制系统设计硬件焊接以STM32F103C8T6单片机为中心,根据其分配的引脚与其他硬件模块进行焊接。
5.2 硬件调试与问题解决
5.2.1 电路设计问题
由于电路设计问题导致Wi-Fi模块无法实现与手机客户端的通信。
解决方法:在完成实物的焊接制作以后,使用烧录软件将编译好的程序烧录到单片机中。启动设备以后,进行配网,发现无法完成Wi-Fi通信模块的配网功能,打开设置好的手机热点的,显示无设备连接,通过查阅ESP8266Wi-FiI通信模块使用手册发现,通信模块与单片机连接过程中,需要与串口交叉连线。而本次设计的电路则是Wi-Fi模块的TXD和RXD与单片机的TXD与RXD引脚连接上,由于模块的引脚接反,导致无法实现配网和通信功能。通过更改电路线路,将Wi-Fi模块的TXD和RXD与单片机的RXD与TXD引脚相连,再次进行配网,显示配网成功,并完成了系统与手机客户端的通信功能。
5.2.2 焊接问题
完成实物的焊接后,接通电源,板子无法实现供电。
解决方案:首先检查了电源,考虑到电源本身可能存在故障,导致无法为板子提供稳定的供电。尝试更换一个新的电源后,发现依旧无法供电,因此可以排除电源本身的故障。随后,对电路焊接的检查。使用万用表对电源的接口焊接处进行检测,因为在焊接过程中,可能存在焊接不良或焊接短路的情况,这会导致电路无法正常工作。经过细致的检测,发现电源接口处存在虚焊的情况。针对这一问题,使用电烙铁对该焊点进行了重新焊接。再次接通电源后,系统供电恢复正常。
5.2.3 程序设计问题
将程序烧录到单片机中运行以后,温度传感器无法实现数据采集功能。
解决方法:经过仔细检查,确保了温度传感器的引脚与单片机的I/O口连接正常,排除了物理连接问题。随后深入程序,检查温度传感器的接口配置和初始化参数。但在程序设计过程中,温度传感器函数并未得到正确的定义和初始化,这是导致温度采集功能失效的关键所在。针对这一问题对程序进行修改,确保温度传感器函数得到适当的定义,并完成了必要的初始化步骤。修正后的程序重新编译并烧录到单片机中,经过测试,温度采集功能现已恢复正常运行。
5.3 系统调试
5.3.1 屏幕显示调试
OLED屏的作用是显示检测到的鱼缸内环境参数、设置的参数阈值以及在修改参数阈值时提供指示。为系统供电后,单片机初始化和环境参数检测完成后,会在OLED显示屏上显示检测数据。由此可以断定OLED显示屏正常工作。因环境参数过多,所以没有足够的位置显示汉字,其中顶部数字为“当前时间”、“L”表示“光照强度”、“T”表示“温度”、“PH”表示“PH值”、“S”表示“浊度”、“J”表示“距离”。显示内容如图5-1所示。
图5-1 屏幕显示效果图
5.3.2 传感器模块调试
在系统供电,单片机初始化完成后,单片机会立即控制温度、光照、水位、浊度、PH值传感器进行鱼缸内环境检测,检测到的数据经AD转换后将会在OLED显示屏上显示,因此可依据OLED显示屏上参数的变化来判定传感器是否正常工作。
对于温度传感器检测调试,将传感器置于温度不同的水中,OLED显示屏上温度参数随水温的变化而变化,断定温度传感器正常工作。温度参数变化情况如图5-2所示。
图5-2 温度参数变化情况图
调试光照传感器的时,先将光敏电阻置于强光下并记录显示屏上光照强度参数,后用手遮挡住光敏电阻并记录显示屏上光照强度参数,强光下的参数远大于遮挡后的参数,断定光照传感器正常工作。光照强度参数变化情况如图5-3所示。
图5-3 光照强度参数变化情况图
调试水位传感器时将障碍物置于传感器前并不断调整参照物与传感器之间的距离,观察到OLED显示屏上水位参数随参照物不断移动而变化则说明水位检测传感器正常工作。水位参数变化情况如图5-4所示。
图5-4 水位参数变化情况图
调试浊度传感器时将浊度传感器分别置于空气中和不透光包裹物中,观察OLED显示屏上浊度的参数,不透光包裹物中浊度参数大于空气中,说明浊度传感器正常工作。浊度参数变化情况如图5-5所示。
图5-5 浊度参数变化情况图
调试PH值传感器时将PH值传感器置于水中并滴加酸性溶液,OLED显示屏上PH值参数降低,说明PH值传感器正常工作。PH值变化情况如图5-6所示。
图5-6 PH值变化情况图
5.3.3 执行模块调试
检测到鱼缸水位参数低于设定阈值时,加水泵开启;检测到鱼缸内PH值超出设定阈值时,排水泵开启;检测到鱼缸内浊度参数超出设定阈值时,排水泵开启;检测到鱼缸内光照强度低于设定阈值时,LED灯开启;到达设定喂食时间,喂食步进电机启动,时间结束自动停止;到达设定增氧时间,增氧泵启动,时间结束停止。执行模块工作情况如图5-7所示。
图5-7 执行器工作情况图
5.3.4 阈值设置调试
阈值设置通过3个按键完成,分别为“设置”、“阈值加”、“阈值减”。当系统供电,单片机初始化完成后,按下“设置”,会切换到设置界面,屏幕上闪烁的数字就是可设置的阈值,此时按下“阈值加”则阈值数值增加一个单位,按下“阈值减”则阈值减小一个单位,按下“设置”则跳转到下一个阈值,所有阈值设置完毕后,自动退出设置界面返回参数显示界面。设置界面情况如图5-8所示。
图5-8 设置界面图
5.3.5 远程控制调试
远程通信功能由ESP8266-12F模块实现,主要实现远程控制功能和数据传输功能。具体表现在以下两个方面:
(1)当环境检测的数据发生变化时,手机APP端和OLED显示屏上的参数同步变化且可通过手机修改环境参数的阈值。
调试方法:改变某一环境参数,对比手机APP端环境参数是否与OLED显示屏上的环境参数同步变化,若同步变化,证明数据传输功能可以实现。
(2)可直接通过手机APP远程操控智能鱼缸控制系统调控鱼缸内部环境。
调试方法:在手机APP端控制任意执行器动作,若该被控执行器发生动作,证明远程控制功能可以实现。
六、结论与展望
6.1 结论
传统鱼缸养鱼的方式普遍存在鱼缸管理繁琐、养鱼参与感不强、鱼儿死亡率高等情况。随着现代社会的飞速发展,越来越多的人开始追求精神富足,因此养殖观赏鱼受到越来越多人的青睐,但是养鱼的门槛却不低,针对此类问题,设计一种操作简单、稳定可靠、可远程监控的智能鱼缸控制系统恰好可以解决这些问题。
本设计共采用5个传感器:超声波传感器、PH值传感器、温度传感器、浊度传感器、光敏电阻对鱼缸环境进行检测,通过单片机控制,采用Wi-Fi模块进行远程通信。在此基础上设计了实时显示功能、阈值设置功能、环境调节功能,可实现系统对鱼缸自动调节和用户通过手机APP控制系统的功能。在很大程度上解决了养鱼的管理问题。本设计预期需求功能基本实现,智能鱼缸控制系统有较大的研究意义和实用价值。
由于智能鱼缸控制系统具有自主设置环境参数阈值的功能,所以用户可以根据自己的喜好选择不同生存习性的观赏鱼进行饲养。且鱼缸自动调节环境、定时加氧和定时喂食的功能可保证用户一段时间内不必担心鱼儿的生存状况,使用户放心投入到工作、学习等活动中。
6.2 展望
智能鱼缸控制系统解决了传统鱼缸管理麻烦、不能实时检测实时干预等问题。但是智能鱼缸控制系统还存在一定的不足和需要优化的问题,主要有以下几个方面:
(1)智能鱼缸控制系统实现了Wi-Fi通信功能,但当智能鱼缸工作地点断网后,用户无法远程检测控制鱼缸,在不考虑成本的情况下可以给鱼缸的通信方式升级为移动网络通信。
(2)智能鱼缸控制系统实现了自我调节鱼缸内环境的功能,但当智能鱼缸工作地点发生长时间停电的事故时,智能鱼缸控制系统便无法调节鱼缸内的环境,可能会导致鱼缸内水质恶化、水位过低、水体缺氧和鱼儿缺食等问题,因此可以考虑给系统外加一个大容量的备用电源。
(3)智能鱼缸控制系统通过浊度传感器和PH值传感器实现了对鱼缸内水质的检测功能,用水泵实现了对水质的调节功能,但在实际养鱼的过程中,鱼缸内藻类的种群数量也是鱼缸内不可忽略的水质参数,未来设计的智能鱼缸控制系统应具备检测和控制藻类种群数量的功能