项目资料已经上传到网盘,可以直接下载。
https://pan.quark.cn/s/145a9b3f7f53
随着现代生活节奏的加快和人们对于生活质量追求的提高,越来越多的家庭选择养鱼作为放松心情、增添生活乐趣的方式之一。 传统的鱼缸维护往往需要定期的人工干预,包括水质检测、温度调节、喂食等,这不仅耗时费力,而且对专业知识有一定要求,使得很多潜在爱好者望而却步。随着物联网技术的发展以及智能家居概念的普及,市场对于更加智能、便捷的家居设备需求日益增长。
在此背景下,开发一款基于STM32单片机控制的智能鱼缸系统显得尤为重要。本项目利用先进的嵌入式技术和无线通信手段,结合传感器技术,打造一个能够自动监测并调节鱼缸内环境参数的智能化解决方案。通过集成水质检测、温度控制、过滤循环、自动喂食及光照管理等多项功能,该系统简化用户操作流程,降低维护难度,同时提升鱼类及其他水生生物的生活质量。考虑到当今社会智能手机的高度普及率及其强大的计算能力,本方案还特别强调了与移动终端的良好兼容性,允许用户通过专门设计的应用程序无线监控和调整鱼缸状态,真正实现了随时随地的便捷管理。
这款智能鱼缸项目的提出是基于当前市场需求和技术发展趋势的综合考量。它不仅响应了消费者对于更高质量生活的向往,同时也为推动智能家居领域创新应用提供了新的思路。通过实现对传统鱼缸管理方式的根本变革,我们希望能够为广大养鱼爱好者带来前所未有的使用体验,并促进整个行业的进一步发展。
水质监测与报警:
温度监控:
高效过滤及循环系统:
自动喂食机制:
光照控制:
信息展示:
手机管理与配置:
本项目的智能鱼缸系统由多个硬件模块组成,每个模块都承担着特定的功能,共同协作以实现系统的智能化管理。
以下是该项目的主要硬件模块组成:
1. 主控模块 - STM32F103RCT6微控制器
2. 显示模块 - OLED显示屏
3. 水质检测模块 - 浑浊度传感器
4. 温度检测模块 - 防水式温度传感器
5. 过滤与循环模块 - 过滤装置+循环水泵
6. 自动喂食模块 - 定时投喂装置
7. 照明模块 - LED灯光控制系统
8. 无线通信模块 - HC05蓝牙模块
9. 报警提示模块 - LED指示灯
10. 电源模块
本项目的设计思路围绕着提供一个全面、智能且用户友好的鱼缸管理系统展开。考虑到传统养鱼过程中常见的问题,如水质监控不足、温度控制不精确以及定期喂食和清洁的繁琐,决定采用先进的传感器技术和自动化解决方案来解决这些问题。通过集成浑浊度传感器、防水式温度传感器等设备,系统能够实时监测鱼缸内的关键环境参数,并将这些信息清晰地展示在OLED显示屏上,让用户一目了然。
为了进一步提升用户体验,引入了自动化的概念,包括过滤系统的智能化管理以及自动喂食功能。过滤装置与循环水泵协同工作,不仅净化水质,还能促进水体循环,提高氧气溶解率,从而创造更加健康的生活环境。同时,定时投喂机制允许用户根据鱼类的具体需求设定合理的喂食计划,确保营养供给的规律性。此外,照明控制系统也经过精心设计,模拟自然光照变化,不仅美化观赏效果,还促进了水生植物的光合作用,间接增加了水中溶解氧含量,有利于整个生态系统的平衡发展。
考虑到现代人对移动互联的需求,注重手机APP与鱼缸系统的无缝连接。通过HC05蓝牙模块,实现了数据的无线传输,使得用户可以通过智能手机远程查看鱼缸状态并调整设置。基于Qt框架开发的Android应用程序提供了直观易用的界面,让用户可以轻松配置水质和温度阈值、查看历史数据记录及接收异常警报通知,极大地方便了日常管理。这样的设计不仅满足了用户对于便捷性的追求,也为长期维护提供了可靠的技术支持。
本项目的整体设计思路是结合当前先进的嵌入式技术、传感技术和物联网通信手段,打造一个集水质监测、温度控制、自动喂食、光照调节等功能于一体的智能鱼缸系统。通过优化用户体验,简化操作流程,最终目标是为用户提供一种更为高效、舒适的家庭养鱼体验。
序号 | 功能模块 | 描述 | 实现方式/技术 |
---|---|---|---|
1 | 水质检测 | 通过浑浊度传感器实时监测水质,当水质数值超过预设最大值时,LED灯亮红警示。 | 浑浊度传感器、红色LED灯、STM32F103RCT6 |
2 | 温度检测 | 使用防水式温度传感器监测水温,并在OLED显示屏上显示当前水温。 | 防水温度传感器、OLED显示屏、STM32F103RCT6 |
3 | 过滤系统 | 采用高效的过滤装置净化水质,去除有害物质,配合循环水泵工作,减少换水频率。 | 过滤装置、循环水泵、STM32F103RCT6 |
4 | 水泵系统 | 保持水体循环,促进氧气溶解,维持水质清洁。 | 循环水泵、STM32F103RCT6 |
5 | 自动喂食 | 支持设定定时投喂计划,确保鱼类获得规律的食物供应。 | 定时器、自动喂食器、STM32F103RCT6 |
6 | 照明灯光 | 可调节的LED灯光模拟昼夜周期,促进植物生长,增加水中溶解氧含量。 | LED灯光控制系统、STM32F103RCT6 |
7 | 显示屏信息展示 | OLED显示屏展示水质百分比、水温、光照强度等关键参数,并提供设置页面。 | OLED显示屏、STM32F103RCT6 |
8 | 手机监测与控制 | 通过蓝牙将数据上传至Android手机APP,用户可以远程查看状态并调整设置。 | HC05蓝牙模块、Qt开发的Android APP |
STM32的编程语言选择C语言,C语言执行效率高,大学里主学的C语言,C语言编译出来的可执行文件最接近于机器码,汇编语言执行效率最高,但是汇编的移植性比较差,目前在一些操作系统内核里还有一些低配的单片机使用的较多,平常的单片机编程还是以C语言为主。C语言的执行效率仅次于汇编,语法理解简单、代码通用性强,也支持跨平台,在嵌入式底层、单片机编程里用的非常多,当前的设计就是采用C语言开发。
开发工具选择Keil,keil是一家世界领先的嵌入式微控制器软件开发商,在2015年,keil被ARM公司收购。因为当前芯片选择的是STM32F103系列,STMF103是属于ARM公司的芯片构架、Cortex-M3内核系列的芯片,所以使用Kile来开发STM32是有先天优势的,而keil在各大高校使用的也非常多,很多教科书里都是以keil来教学,开发51单片机、STM32单片机等等。目前作为MCU芯片开发的软件也不只是keil一家独大,IAR在MCU微处理器开发领域里也使用的非常多,IAR扩展性更强,也支持STM32开发,也支持其他芯片,比如:CC2530,51单片机的开发。从软件的使用上来讲,IAR比keil更加简洁,功能相对少一些。如果之前使用过keil,而且使用频率较多,已经习惯再使用IAR是有点不适应界面的。
本项目中使用的Qt开发环境是一个跨平台的应用程序开发框架,它允许开发者使用C++语言来创建高性能的图形用户界面(GUI)应用程序。Qt不仅支持桌面操作系统如Windows、macOS和Linux,还广泛应用于嵌入式系统和移动设备,包括Android和iOS平台。对于本项目的智能鱼缸系统而言,我们选择了Qt 5.12.6版本来开发与鱼缸硬件通信的Android手机应用程序。
跨平台能力:
Qt的一个重要特点是其强大的跨平台能力。这意味着同一个代码库可以被编译成不同操作系统的可执行文件,极大地提高了开发效率并简化了维护工作。在本项目中,虽然主要目标是Android平台,但未来如果需要扩展到其他平台,Qt的这一特性将提供极大的便利。
丰富的API和工具集:
Qt提供了大量的类库和API,涵盖了从网络通信、数据库访问到多媒体处理等多个方面。对于本项目而言,Qt的网络模块尤为重要,因为它支持通过蓝牙协议进行数据传输,使得手机APP能够无缝地与基于STM32单片机的鱼缸控制系统连接。此外,Qt Quick和QML等技术也便于快速构建现代化的用户界面,为用户提供直观的操作体验。
集成开发环境 - Qt Creator:
Qt自带了一个功能齐全的集成开发环境(IDE),即Qt Creator。它集成了项目管理、代码编辑、UI设计、调试等多种功能于一体,极大地简化了软件开发流程。在开发过程中,我们可以利用Qt Designer来可视化地设计应用程序界面,同时借助Qt Creator的强大调试工具快速定位并解决代码中的问题。
社区支持与文档资源:
Qt拥有一个活跃且庞大的开发者社区,这意味着当遇到技术难题时,可以很容易找到相关的解决方案或获得帮助。此外,Qt官方提供的详尽文档和示例代码也为新手开发者提供了一个很好的学习起点,有助于快速上手并深入理解Qt的各项特性和最佳实践。
选择Qt作为本项目Android应用程序的开发环境,主要是看中了它的跨平台能力、丰富的功能库以及高效的开发工具。这些优势结合在一起,为实现一个既美观又实用的智能鱼缸管理应用奠定了坚实的基础。通过Qt开发的手机APP,用户不仅可以方便地监控鱼缸状态,还能轻松调整各项设置,真正享受到智能家居带来的便捷生活。
在本项目中,浑浊度传感器用于实时监测鱼缸内的水质状况。浑浊度是指水体中悬浮颗粒物的数量和大小,这些颗粒物可以是泥土、藻类、微生物或其他有机和无机物质。浑浊度的增加通常意味着水质的恶化,可能对鱼类和其他水生生物的健康产生不利影响。
浑浊度传感器的工作原理基于光的散射效应。具体来说,传感器内部有一个光源(通常是红外LED或激光二极管)和一个光电探测器。光源发出的光线穿过水样时,会与水中的悬浮颗粒发生相互作用,导致光线被散射。散射的程度取决于水中悬浮颗粒的数量和大小。光电探测器则用来检测散射光的强度。
当水中的悬浮颗粒较多时,更多的光线会被散射,光电探测器接收到的散射光强度也会相应增加。反之,如果水中的悬浮颗粒较少,散射光强度则会降低。通过测量光电探测器接收到的散射光强度,传感器可以间接地推算出水样的浑浊度。
传感器输出的信号通常是模拟电压信号,这个信号与水样的浑浊度成正比。在实际应用中,该模拟信号会被送入STM32单片机的模数转换器(ADC),转换为数字信号进行进一步处理。单片机会根据预设的阈值来判断水质是否超标,并采取相应的控制措施,如点亮红色LED灯提醒用户需要清理过滤系统。
浑浊度传感器具有响应速度快、精度高、易于集成等优点,非常适合用于实时监测水质变化。通过使用这种传感器,本项目能够及时发现水质问题并采取措施,从而确保鱼缸内环境的清洁和稳定,提升鱼类及其他水生生物的生活质量。
在智能鱼缸项目中,添加照明灯不仅提升了观赏效果,还对鱼类和水生植物的健康生长起到了重要作用。
以下是照明灯在鱼缸中的主要含义和作用:
系统设计
基于物联网技术
STM32单片机作为核心
传感器采集数据
数据处理与分析
云平台通信
功能实现
自动温控
自动喂食
水质监测
自动换水
光照调节
用户交互
手机APP远程控制
短信报警功能
实时数据查看
应用场景
家用观赏鱼缸
物联网家居系统集成
智能生态水族箱
技术优势
成本低廉,操作简便
可靠性高,稳定运行测试表明稳定可靠
未来发展方向
智能化饲养管理系统扩展
随着现代生活节奏的加快和人们对于生活质量要求的提高,养鱼作为一种休闲活动越来越受到欢迎。然而,传统的鱼缸维护工作繁琐且需要定期的人工干预,这不仅耗时费力,还要求一定的专业知识。智能鱼缸系统的开发能够显著简化这些维护任务,提升用户体验,使更多人能够轻松享受养鱼的乐趣。通过集成多种传感器和自动化装置,智能鱼缸系统可以实时监测水质、温度等关键参数,并自动执行必要的操作,如过滤、增氧和定时喂食。这种自动化管理不仅提高了鱼缸内环境的稳定性,还能确保鱼类和其他水生生物的健康。
本项目的研究意义不仅仅在于提供一个便捷的养鱼解决方案,还在于推动智能家居技术的发展。随着物联网(IoT)技术的普及,越来越多的家庭设备实现了智能化管理。智能鱼缸系统作为智能家居的一个重要组成部分,展示了如何将先进的传感技术、嵌入式系统和无线通信技术结合在一起,为用户提供更加高效、舒适的生活体验。通过蓝牙模块实现与智能手机的连接,用户可以远程监控和控制鱼缸状态,这种远程管理能力极大地提升了系统的灵活性和便利性。
此外,本项目还具有重要的经济和社会价值。一方面,智能鱼缸系统的开发可以带动相关产业链的发展,包括传感器制造、嵌入式系统开发、移动应用开发等多个领域,促进技术创新和产业升级。另一方面,智能鱼缸系统的推广和应用可以减少传统养鱼过程中因人工干预不足导致的资源浪费和环境污染问题,有助于实现可持续发展。同时,智能鱼缸系统还可以应用于教育和科研领域,为学生和研究人员提供一个直观的教学和实验平台,增强他们对生态环境保护的认识。
从长远来看,本项目的成功实施不仅可以为用户提供一个高效、便捷且易于管理的养鱼解决方案,还能为智能家居领域的其他应用提供宝贵的经验和技术支持。通过对智能鱼缸系统的研究和开发,我们希望能够激发更多的创新思维,推动智能家居技术的进一步发展,为未来智慧生活的实现奠定坚实的基础。
- 1. 张胜男,杨荣国.物联网鱼缸智能控制系统设计[J].现代商贸工业,2020.
- 2. 朱炯健,张喜洋,杨树辉等.基于STM32的远程无线智能鱼缸控制系统设计[J].科技风,2019.
- 3. 向镍锌,郭平,曹旬.基于STM32智能鱼缸监控系统的设计[J].科技视界,2020.
- 4. 张志辉,张小花,王嘉辉等.基于物联网的智能鱼缸远程控制系统设计及开发[J].电子技术与软件工程,2019.
- 5. 彭炫.基于STM32单片机的智能鱼缸设计与研究[J].电子世界,2020.
- 6. 柳春林.基于ONENET云平台的智能鱼缸研究报告[J].科学技术创新,2019.
- 7. 刘伟,林开司,刘安勇.基于物联网的鱼缸智能控制系统设计与实现[J].淮海工学院学报(自然科学版),2016.
- 8. 邱义.基于STM32的智能鱼缸远程控制系统设计[J].信息技术与信息化,2020.
- 9. 何锋,兰慧.基于手机遥控的智能鱼缸控制系统的设计 附视频[J].电脑知识与技术,2024.
- 10. 白春雨,吴红海,赵怀冬等.基于GSM的可调节智能鱼缸生态系统[J].科技风,2017.
- 11. 张胜男,杨荣国.一种基于STM32物联网家居控制的鱼缸监控系统[J].现代商贸工业,2022.
- 12. 郭宇豪,朱宵月,田晨阳等.基于STM32的家用智慧鱼缸系统设计[J].新型工业化,2021.
- 13. 吴海青,何满塘,周朝阳等.基于STM32单片机的智能鱼缸控制系统设计[J].机械工程与自动化,2022.
- 14. 宋英路,张玉薇,李政林等.基于物联网的鱼缸智能控制系统[J].数字技术与应用,2019.
- 15. 王宇鑫,胡晓华,黄淑燕等.基于STM32的智能生态鱼缸系统设计与实现[J].冶金管理,2021.
- 16. 无锡学院自动化学院.基于STM32的智能鱼缸的设计与实现[J].微处理机,2023.
- 17. 华蕊,单超颖,赵凯等.基于物联网的智能鱼缸[J].湖北农机化,2020.
- 18. 徐汉林,丁国超,孙殿棋等.基于STM32的智能鱼缸养殖系统[J].现代化农业,2022.
- 19. 赵春波,李超,侯学梅等.智能生态水族箱的设计与实现[J].电子技术与软件工程,2019.
- 20. 徐喆.一款家用鱼缸智能控制系统设计[D].西南交通大学,2017.
- 21. WANG Yun-lei,QI Yu-ming.Design of Intelligent Aquarium System based on Embedded System[J].International Journal of Plant Engineering and Management,2017.
- 22. 梁顺可,黄志明,徐奕森等.基于4G的物联鱼缸系统设计[J].现代制造技术与装备,2021.
- 23. You Luo, Jiajun Ren et al. “Design and Realization of Intelligent Fish Tank System based on STM32 Microcontroller.” Journal of Big Data and Computing(2024).
- 24. 张云达.智能生态鱼缸系统设计与实现[D].浙江海洋大学,2023.
- 25. 基于STM32与FreeRTOS的物联网鱼缸.
- 26. Zihao Wu, Lin Zhong et al. “A multi-functional fish tank remote monitoring system based on STM32.” International Journal of Frontiers in Engineering Technology(2022).
- 27. 1. 山西农业大学信息科学与工程学院2. 山西农业大学工学院.基于STM32的水下自主巡游机器鱼的设计与实现[J].山西电子技术,2019.
- 28. Xi Xie, Wei-zhong Jiang. “Intelligent Fishpond Monitoring System Based on STM32 and Zigbsee.” Research Journal of Applied Sciences, Engineering and Technology(2016).
- 29. Improvement of Smart Farm by using IoT for Ornamental Fishes and Aquatic Animals Store.International Journal of Innovative Technology and Exploring Engineering(2020).
- 30. Ananto Indra Nugraha, Yesy Diah Rosita et al. “PROTOTIPE SMART AKUARIUM BERBASIS IOT DENGAN PEMANFAATAN ESP32.” SEMINAR NASIONAL FAKULTAS TEKNIK(2023).
-
为了方便查看设备上传的数据,接下来利用Qt开发一款Android手机APP
Qt的中文官网: https://www.qt.io/zh-cn/
QT5.12.6的下载地址:https://download.qt.io/archive/qt/5.12/5.12.6
打开下载链接后选择下面的版本进行下载:
qt-opensource-windows-x86-5.12.6.exe 13-Nov-2019 07:28 3.7G Details
软件安装时断网安装,否则会提示输入账户。
安装的时候,第一个复选框里勾选一个mingw 32编译器即可,其他的不管默认就行,直接点击下一步继续安装。
选择MinGW 32-bit 编译器: (一定要看清楚了)
说明: 我这里只是介绍PC端,也就是Windows系统下的Qt环境搭建。 Android的开发环境比较麻烦,如果想学习Android开发,想编译Android程序的APP,需要自己去搭建Android环境。
Android环境搭建的链接: https://www.cdsy.xyz/computer/programme/android/20201130/cd16067529525182.html
前面2讲解了需要用的API接口,接下来就使用Qt设计上位机,设计界面,完成整体上位机的逻辑设计。
【1】新建工程
【2】设置项目的名称。
【3】选择编译系统
【4】选择默认继承的类
【5】选择编译器
【6】点击完成
【7】工程创建完成
打开默认的界面如下:
根据自己需求设计界面。
点击软件左下角的绿色三角形按钮进行编译运行。
如果想编译Android手机APP,必须要先自己配置好自己的Android环境。(搭建环境的过程可以网上找下教程学习配置)
然后才可以进行下面的步骤。
创建完成。
Qt本身是跨平台的,直接选择Android的编译器,就可以将程序编译到Android平台。
然后点击构建。
成功之后,在目录下可以看到生成的apk文件,也就是Android手机的安装包,电脑端使用QQ发送给手机QQ,手机登录QQ接收,就能直接安装。
生成的apk的目录在哪里呢? 编译完成之后,在控制台会输出APK文件的路径。
知道目录在哪里之后,在Windows的文件资源管理器里,找到路径,具体看下图,找到生成的apk文件。
- D:/linux-share-dir/QT/build-app_Huawei_Eco_tracking-Android_for_arm64_v8a_Clang_Qt_5_12_6_for_Android_ARM64_v8a-Release/android-build//build/outputs/apk/debug/android-build-debug.apk
-
- #include "stm32f10x.h"
-
- void USART1_Init(void) {
- // 1. 开启时钟
- RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // 开启GPIOA时钟
- RCC->APB2ENR |= RCC_APB2ENR_USART1EN; // 开启USART1时钟
-
- // 2. 配置PA9(TX)为复用推挽输出,PA10(RX)为浮空输入
- GPIOA->CRH &= ~(GPIO_CRH_MODE9 | GPIO_CRH_CNF9); // 清除之前配置
- GPIOA->CRH |= (GPIO_CRH_MODE9_1 | GPIO_CRH_CNF9_1); // 配置PA9为50MHz复用推挽输出
- GPIOA->CRH &= ~(GPIO_CRH_MODE10 | GPIO_CRH_CNF10); // 清除之前配置
- GPIOA->CRH |= GPIO_CRH_CNF10_0; // 配置PA10为浮空输入
-
- // 3. 设置波特率
- // 波特率计算: BaudRate = Fck / (16 * USARTDIV)
- // 假设Fck为72MHz,设定波特率为115200:
- // USARTDIV = 72MHz / (16 * 115200) = 39.0625
- // 将39.0625拆分为39整数部分(0x27)和1/16小数部分(0x1)
- USART1->BRR = (39 << 4) | 1;
-
- // 4. 配置USART1
- USART1->CR1 |= USART_CR1_TE; // 使能发送功能
- USART1->CR1 |= USART_CR1_RE; // 使能接收功能
- USART1->CR1 |= USART_CR1_UE; // 使能USART
-
- // 5. 使能RXNE中断
- USART1->CR1 |= USART_CR1_RXNEIE;
- NVIC_EnableIRQ(USART1_IRQn); // 开启USART1中断
- }
-
- void USART1_IRQHandler(void) {
- if (USART1->SR & USART_SR_RXNE) {
- uint8_t data = USART1->DR; // 读取接收到的数据
- // 这里可以添加数据处理逻辑
- }
- }
-
- void USART1_SendChar(char c) {
- while (!(USART1->SR & USART_SR_TXE)); // 等待发送缓冲区空
- USART1->DR = c;
- }
-
- void USART1_SendString(char* str) {
- while (*str) {
- USART1_SendChar(*str++);
- }
- }
-
HC05蓝牙模块的基本配置通常是在串口上进行简单的AT命令配置。在初始化完成后,可以发送AT指令来配置蓝牙模块。
- void HC05_Init(void) {
- USART1_SendString("AT\r\n"); // 发送AT指令,测试蓝牙是否响应
- // 添加延时或等待响应
-
- USART1_SendString("AT+UART=115200,0,0\r\n"); // 设置蓝牙波特率为115200, 无校验位,1个停止位
- // 等待蓝牙返回OK
-
- USART1_SendString("AT+ROLE=0\r\n"); // 将蓝牙设置为从机模式
- // 等待蓝牙返回OK
-
- USART1_SendString("AT+NAME=SmartFishTank\r\n"); // 设置蓝牙设备名称为"SmartFishTank"
- // 等待蓝牙返回OK
- }
-
这段代码可以用于实现HC05蓝牙模块的初始化与通信,之后可以通过Android手机APP通过蓝牙与STM32进行通信。
下面是项目的主函数里的项目逻辑代码(其他子模块的代码太多,文档无法全部贴出)。
可以去网盘里下载传感器模块的代码:https://pan.quark.cn/s/145a9b3f7f53
以下是智能鱼缸项目的 main.c 逻辑代码框架,所有子模块(如水质检测、温度检测、OLED显示、自动喂食、蓝牙通信等)已经编写好之后,可以根据项目需求直接调用相应的函数。
- #include "stm32f10x.h"
- #include "usart.h" // 假设这里有串口驱动
- #include "oled.h" // OLED显示屏驱动
- #include "bluetooth.h" // 蓝牙模块驱动
- #include "sensor.h" // 传感器(如水质、温度传感器等)
- #include "feeder.h" // 自动喂食模块
- #include "pump.h" // 水泵系统
-
- // 阀值设定
- #define MAX_WATER_QUALITY 40 // 水质最大值(%)
- #define MAX_WATER_TEMP 23 // 水温最大值(摄氏度)
-
- // 全局变量,存储当前水质、水温等状态
- float water_quality = 0;
- float water_temp = 0;
- uint8_t light_intensity = 0;
- uint32_t next_oxygen_time = 0; // 下次增氧时间
-
- void SystemClock_Config(void);
- void Update_OLED_Display_Page1(void);
- void Update_OLED_Display_Page2(void);
-
- int main(void) {
- // 初始化系统时钟
- SystemClock_Config();
-
- // 初始化相关模块
- USART1_Init(); // 初始化串口用于蓝牙通信
- OLED_Init(); // 初始化OLED显示
- Sensor_Init(); // 初始化水质、温度传感器等
- Feeder_Init(); // 初始化自动喂食系统
- Pump_Init(); // 初始化水泵系统
- HC05_Init(); // 初始化蓝牙模块
-
- // 主循环
- while (1) {
- // 1. 获取传感器数据
- water_quality = Get_Water_Quality(); // 获取水质数据
- water_temp = Get_Water_Temperature(); // 获取水温数据
- light_intensity = Get_Light_Intensity(); // 获取光照强度
-
- // 2. 更新OLED显示屏
- Update_OLED_Display_Page1(); // 更新显示屏第一页内容
- // 可根据具体按键切换到第二页显示
- // Update_OLED_Display_Page2();
-
- // 3. 检查水质,超过阀值时报警(例如点亮红色LED)
- if (water_quality > MAX_WATER_QUALITY) {
- LED_SetColor(RED); // 假设存在LED驱动模块
- } else {
- LED_SetColor(GREEN);
- }
-
- // 4. 自动增氧(根据设定的增氧间隔时间执行)
- if (Check_Oxygen_Time(next_oxygen_time)) {
- Pump_Oxygen(); // 启动增氧水泵
- next_oxygen_time = Get_Next_Oxygen_Time(); // 设定下次增氧时间
- }
-
- // 5. 自动喂食
- if (Check_Feeding_Time()) {
- Feeder_Start(); // 触发喂食动作
- }
-
- // 6. 蓝牙通信,将当前状态通过蓝牙发送到手机APP
- Send_Bluetooth_Data(water_quality, water_temp, light_intensity, next_oxygen_time);
-
- // 延时一段时间,减少循环频率
- Delay_ms(1000);
- }
- }
-
- // 更新OLED第1页显示内容
- void Update_OLED_Display_Page1(void) {
- OLED_Clear();
- OLED_ShowString(0, 0, "物联网智能鱼缸");
-
- OLED_ShowString(0, 2, "水质 ");
- OLED_ShowNum(64, 2, water_quality, 3);
- OLED_ShowString(90, 2, "%");
-
- OLED_ShowString(0, 3, "水温 ");
- OLED_ShowNum(64, 3, water_temp, 3);
- OLED_ShowString(90, 3, "C");
-
- OLED_ShowString(0, 4, "光强 ");
- OLED_ShowNum(64, 4, light_intensity, 3);
- OLED_ShowString(90, 4, "lux");
-
- OLED_ShowString(0, 5, "下次增氧时间");
- OLED_ShowTime(64, 5, next_oxygen_time); // 自定义的时间显示函数
- }
-
- // 更新OLED第2页显示内容
- void Update_OLED_Display_Page2(void) {
- OLED_Clear();
- OLED_ShowString(0, 0, "物联网智能鱼缸");
-
- OLED_ShowString(0, 2, "水温阀值 ");
- OLED_ShowNum(90, 2, MAX_WATER_TEMP, 3);
- OLED_ShowString(120, 2, "C");
-
- OLED_ShowString(0, 3, "水质阀值 ");
- OLED_ShowNum(90, 3, MAX_WATER_QUALITY, 3);
- OLED_ShowString(120, 3, "%");
-
- OLED_ShowString(0, 4, "增氧间隔 ");
- OLED_ShowNum(90, 4, 3); // 假设增氧间隔为3分钟
- OLED_ShowString(120, 4, "min");
- }
-
- // 系统时钟配置
- void SystemClock_Config(void) {
- // 配置系统时钟为72MHz
- RCC->CFGR |= RCC_CFGR_SW_PLL; // 使用PLL作为系统时钟
- RCC->CR |= RCC_CR_PLLON; // 打开PLL
- while (!(RCC->CR & RCC_CR_PLLRDY)); // 等待PLL稳定
- }
-
- // 其他可能用到的辅助函数
- uint32_t Get_Next_Oxygen_Time(void) {
- // 假设返回下次增氧时间,增加3分钟
- return Get_Current_Time() + 180; // 180秒 = 3分钟
- }
-
- uint8_t Check_Oxygen_Time(uint32_t next_time) {
- // 检查是否到了设定的增氧时间
- return Get_Current_Time() >= next_time;
- }
-
本项目开发一款基于STM32F103RCT6单片机控制的智能鱼缸系统,集成水质监测、温度控制、自动喂食以及光照调节等多种功能于一体。该系统利用先进的传感器技术来实时监控鱼缸内的环境参数,通过直观的OLED显示屏向用户展示这些信息。系统采用浑浊度传感器进行水质检测,当水质指标超过预设阈值时,将通过红色LED灯提醒用户需要清理过滤系统;防水式温度传感器用于测量水温并在主面板上显示当前数值,确保鱼类生活在适宜的温度条件下。高效的过滤系统与循环水泵协同工作,不仅能够净化水质去除有害物质,还能延长换水周期至半年一次,显著减少维护成本。
为了进一步增强用户体验,项目包括了自动喂食机制,允许用户设定定时投喂计划,从而保证鱼类获得规律的食物供应。照明方面,设计考虑到了植物生长的需求,设置了可调节强度和模拟昼夜变化的灯光,促进光合作用,增加水中溶解氧含量,有利于整个生态系统的健康稳定。所有这些关键数据都将通过一块易于阅读的OLED屏幕呈现给用户,其中包括水质百分比、实际水温和光照强度等重要指标。
智能鱼缸还支持蓝牙通信,通过HC05蓝牙模块实现与Android手机APP的数据交换。借助于Qt框架开发的应用程序,用户可以在智能手机上远程查看鱼缸状态并调整各项设置,比如水质及水温阈值、增氧间隔时间等。这样既简化了日常管理流程,也使得养鱼变得更加便捷有趣。整体而言,这一综合解决方案致力于提供一个更加智能化且易于管理的家庭养鱼体验。