电子信息毕设 stm32智能鱼缸监控投喂系统(源码+硬件+论文)

文章目录

  • 0 前言
  • 1 主要功能
  • 2 硬件设计(原理图)
  • 3 核心软件设计
  • 4 实现效果
  • 5 最后

0 前言

🔥
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩毕业设计 stm32智能鱼缸监控投喂系统(源码+硬件+论文)

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

🧿项目分享:见文末!

实物演示效果

毕业设计 stm32智能鱼缸监控投喂系统 - 单片机 嵌入式 物联网

1 主要功能

题设计的目的为实现鱼缸换水、投食、远程监控,实时数据显示、远程操控的一体化和智能化。该设计具有科研和实用两重价值。

  • 1 自动加水,当水位过低时自动启动水泵,向鱼缸内自动加水

  • 2 自动放水,当水位过低时启动放水阀(用继电器模拟),当水位达到标准时停止防水

  • 3 换水启动,当监测到水质过于浑浊,自动开始防水,并触发自动加水逻辑

  • 4 自动投食,每日固定时间投食(用继电器模拟)

  • 5 状态显示,传感器数据实时显示于OLED屏上

  • 6 远程交互,传感器数据通过wifi模块远程上传到上位机客户端上

  • 7 远程控制,上位机可通过wifi模块,向单片机发送远程指令,控制其换水,投食

2 硬件设计(原理图)

3 核心软件设计

对于本次智能鱼缸的系统设计,如果需要实现其理想的功能,需要对温度采集模块、OLED显示模块、继电器控制模块、按键控制模块、WIFI模块等进行模块化编程,最后通过主程序的系统结合,实现智能鱼缸的主要功能需求。其主程序控制流程如下图

上位机部加粗样式分设计

上位机界面通过Python程序语言进行开发,通过无线传输数据的方式即可实现无线监控。当用户输入正确的IP地址以及指定端口登录后,后台系统开始运行。

应用界面设计主要由Python应用程序完成,以连接STM32和ESP8266模块,使用适合的GUI框架,例如Tkinter,PyQt等。再设计主窗口的大小、标题、背景颜色等基本属性,并使用Tkinter提供的组件,诸如Frame、Label、Entry、Button等组件来构建界面,同时为相应的组件设置属性。在这个应用程序中,Label组件可以用于添加提示语句,Entry组件可以接受用户输入的串口号、波特率等参数,Button组件在设计时应该能够实现连接和断开操作等。

在代码中,需要使用pySerial模块实现串口通信,来连接STM32和ESP8266模块。首先,需要导入pySerial模块,并通过串口的设定创建Serial对象,设置好相关参数,然后使用open()方法打开串口。构建和设置基本属性,通过pySerial模块实现串口通信的过程,连接STM32和ESP8266模块,并保证良好的用户交互和异常处理机制。连接通讯流程图如图

篇幅有限,不过多复述详细设计细节,详细的设计分享在论文中。。。

关键代码

#include"stm32.h"uchar PageNum=0;//0显示温湿度 1显示温度和报警数值2显示湿度和报警数值floatTemp_Data=0;uchar AlarmTemp[]={32,20};//高低温度unsignedcharFeedTime[3]={0};//喂食时间unsignedcharO2Time[3]={0};//充氧气时间unsignedcharLoopTime[3]={0};//水循环时间sbit RELAY1=P2^2;//加水继电器sbit RELAY2=P2^1;//加热继电器sbit RELAY3=P2^0;//放水继电器sbit ENA=P3^2;sbit ENB=P3^3;voidTimerInit(void);voidGetTemp(void);voidPageInit(void);voidPageDisplay(void);voidDataLoad(void);//数据加载voidTempInit(void);//voidHeatControl(void);//加热自动控制voidTimer1_Init(void);//50毫秒@11.0592MHzvoidIncO2Control(void);voidFeedControl(void);voidLoopControl(void);unsignedcharFeedSecond=0;unsignedcharO2Second=0;unsignedintLoopSecond=0;unsignedcharCountTime[3]={0};//水循环时间计时voidmain(void){Delay_1ms(100);LCD_Init();TimerInit();PageInit();DataLoad();TempInit();Timer1_Init();while(1){GetTemp();DS1302_Read();FeedControl();HeatControl();IncO2Control();PageDisplay();LoopControl();Delay_1ms(50);}}voidTimer0_Serve(void)interrupt1{TH0=(65535-20000)/256;//20MS定时TL0=(65535-20000)%256;LCD_Refresh();//LCD刷新KEY_Scan();}voidTimer1_Serve(void)interrupt3//50ms定时{staticunsignedcharT50MS=0;TL1=0x00;//设置定时初值TH1=0x4C;//设置定时初值T50MS++;if(T50MS>=20){T50MS=0;CountTime[2]++;if(CountTime[2]>=60){CountTime[2]=0;CountTime[1]++;if(CountTime[1]>=60){CountTime[1]=0;CountTime[0]++;if(CountTime[0]>23)CountTime[0]=0;}}if(FeedSecond>0)FeedSecond--;if(O2Second>0)O2Second--;if(LoopSecond>0){LoopSecond--;}}}voidHeatControl(void)//加热控制{/*------------------低于下限开始加热---------------------*/if(Temp_Data<AlarmTemp[1]){RELAY1=0;}/*------------------高于上限停止加热---------------------*/if(Temp_Data>AlarmTemp[0]){RELAY1=1;}}voidTimerInit(void){TMOD&=0xF0;TMOD|=0X01;//T1工作在定时模式, T0 工作在8位自动重载计数TL0=(65535-20000)%256;//T0工作在定时模式 50ms定时TH0=(65535-20000)/256;ET0=1;TR0=1;EA=1;}voidPageDisplay(void){/*---------------------------------------------------------*/if(KeyVal=='E'){KeyVal=0;PageNum++;if(PageNum>4){PageNum=0;}PageInit();}/*-------------------------------------------------------*/switch(PageNum){/*-------------------------------------------------------*/case0://显示和设置实时时间{LCD_DisplayDate(0,Date);LCD_DisplayTime(16,Time);if(KeyVal=='S'){KeyVal=0;SetRTC();}}break;/*-------------------------------------------------------*/case1://显示实时温度和上下限值{TempDisplay(5,Temp_Data);DisplayU8(18,AlarmTemp[0]);//DisplayU8(26,AlarmTemp[1]);//if(KeyVal=='S'){KeyVal=0;SetTempHigLow(AlarmTemp);WrToROM(AlarmTemp,5,2);//温度存储地址0}}break;/*-------------------------------------------------------*/case2:{LCD_DisplayTime(16,FeedTime);if(KeyVal=='S'){KeyVal=0;SetClockTime(FeedTime);WrToROM(FeedTime,20,3);}}break;/*-------------------------------------------------------*/case3:{LCD_DisplayTime(16,O2Time);if(KeyVal=='S'){KeyVal=0;SetClockTime(O2Time);WrToROM(O2Time,25,3);}}break;/*-------------------------------------------------------*/case4:{LCD_DisplayTime(16,LoopTime);if(KeyVal=='S'){KeyVal=0;SetClockTime(LoopTime);WrToROM(LoopTime,30,3);}}break;default:{PageNum=0;PageInit();}break;}/*-------------------------------------------------------*/}voidIncO2Control(void){if(1==CompareClock(O2Time,Time)){O2Second=60;}if(O2Second>0)RELAY2=0;elseRELAY2=1;}voidFeedControl(void){if(1==CompareClock(FeedTime,Time)){FeedSecond=10;}if(FeedSecond>0){ENA=0;ENB=1;}else{ENA=1;ENB=1;}}voidLoopControl(void){if(1==CompareClock(LoopTime,CountTime)){CountTime[0]=CountTime[1]=CountTime[2]=0;LoopSecond=60;}if(LoopSecond>0){RELAY3=0;}else{RELAY3=1;}}

4 实现效果

下位机

上位机实现效果

实物演示效果

毕业设计 stm32智能鱼缸监控投喂系统 - 单片机 嵌入式 物联网

5 最后

包含内容


配套详细设计论文

🧿项目分享:见文末!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1191688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十五章 KUKA机器人与S7-1200进行Profinet通讯

1、概述 KUKA机器人与S7-1200进行Profinet通讯实战案例解析。 2、硬件配置 2.1硬件配置 名称 型号 数量 PLC

godot引擎基础学习笔记9(C#)

一、游戏界面在创建界面场景的时候&#xff0c;会有一个专门用于用户界面的场景&#xff0c;点击创建会生成一个control节点相关常用属性&#xff1a;ClipContents&#xff1a;能够进行子节点的裁剪&#xff0c;启用会将当前节点外的子节点内容隐藏掉custom_minimum_size&#…

专为细菌吞噬研究设计的智能荧光工具

了解细胞如何吞噬细菌&#xff1f;现在可以看得更清楚&#xff01;Protonex™ Red 670-大肠杆菌结合物是一种即用型试剂&#xff0c;让您实时观察活细胞内的细菌吞噬和酸化过程。产品亮点&#xff1a;新型pH敏感荧光团在中性环境中"静默"&#xff0c;进入吞噬体酸性环…

GPEN输出文件命名规则?自定义保存路径实战说明

GPEN输出文件命名规则&#xff1f;自定义保存路径实战说明 GPEN人像修复增强模型镜像 本镜像基于 GPEN人像修复增强模型 构建&#xff0c;预装了完整的深度学习开发环境&#xff0c;集成了推理及评估所需的所有依赖&#xff0c;开箱即用。 1. 镜像环境说明 组件版本核心框架…

OCR未来方向:cv_resnet18_ocr-detection支持动态输入尺寸

OCR未来方向&#xff1a;cv_resnet18_ocr-detection支持动态输入尺寸 1. 引言&#xff1a;为什么动态输入尺寸是OCR的关键突破 你有没有遇到过这种情况&#xff1f;一张高分辨率的工程图纸&#xff0c;文字密密麻麻&#xff0c;但用常规OCR模型一检测&#xff0c;小字全丢了&…

Java Web 人口老龄化社区服务与管理平台系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

&#x1f4a1;实话实说&#xff1a;CSDN上做毕设辅导的都是专业技术服务&#xff0c;大家都要生活&#xff0c;这个很正常。我和其他人不同的是&#xff0c;我有自己的项目库存&#xff0c;不需要找别人拿货再加价。我就是个在校研究生&#xff0c;兼职赚点饭钱贴补生活费&…

Java SpringBoot+Vue3+MyBatis 宠物领养系统系统源码|前后端分离+MySQL数据库

摘要 随着社会经济的快速发展和人们生活水平的提高&#xff0c;宠物已成为许多家庭的重要成员&#xff0c;宠物领养需求也随之增长。然而&#xff0c;传统的宠物领养方式存在信息不对称、流程繁琐等问题&#xff0c;导致许多流浪动物难以找到合适的家庭。为了解决这一问题&…

HeartMuLa - 用AI创作歌曲 输入歌词即可创作音乐 支持50系显卡 一键整合包下载

HeartMuLa 是一个开源的“音乐大模型工具库”&#xff0c;它能把歌词和标签转化为完整的音乐作品&#xff0c;还能做歌词转录、音乐编码和跨模态检索。它的特点是多语言支持&#xff08;中、英、日、韩、西班牙语等&#xff09;、高保真音频生成&#xff0c;以及和文字描述的紧…

基于SpringBoot+Vue的华强北商城二手手机管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 随着互联网技术的快速发展&#xff0c;电子商务已成为现代商业活动的重要组成部分。二手手机市场因其高性价比和环保特性&#xff0c;吸引了大量消费者&#xff0c;但传统的线下交易模式存在信息不对称、交易效率低等问题。华强北作为中国最大的电子产品集散地&#xff0c…

性价比高的半自动穿管机企业

性价比高的半自动穿管机企业如何选择&#xff1f;行业深度解析与实用指南在电线电缆、汽车线束、光纤光缆等制造业中&#xff0c;半自动穿管机作为提升生产效率、降低人工成本的关键设备&#xff0c;其市场需求持续增长。对于众多采购企业而言&#xff0c;如何在众多供应商中找…

三轴MEMS加速度计感知万物运动,精准赋能无限可能

在智能化的浪潮中&#xff0c;精确感知物理世界的运动与姿态&#xff0c;是无数设备从“机械执行”迈向“自主决策”的第一步。三轴MEMS加速度计&#xff0c;正是实现这一跨越的核心感官。而ER-3MA-09&#xff0c;以其卓越的低噪声、低温漂和长期稳定性&#xff0c;正成为高精度…

动态住宅IP是什么呢?都有什么用途?

随着互联网技术的发展&#xff0c;代理 IP 已成为跨境电商、数据采集、海外社媒运营等业务的核心基础设施&#xff0c;而动态住宅 IP 代理凭借其贴合真实用户的特性&#xff0c;在各类跨境场景中展现出独特的应用价值。不同业务对代理 IP 的需求差异显著&#xff0c;本文将为大…

基于SpringBoot+Vue的夕阳红公寓管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 随着人口老龄化趋势加剧&#xff0c;老年人的居住需求日益受到社会关注。传统的养老院管理模式存在信息化程度低、管理效率不足等问题&#xff0c;无法满足现代养老服务的精细化需求。夕阳红公寓管理系统旨在通过信息化手段提升老年公寓的管理效率和服务质量&#xff0c;为…

4款免费低代码工具推荐:中小企业数字化转型的零成本解决方案

在企业数字化转型浪潮中&#xff0c;低代码工具凭借“可视化搭建、降本提效”的核心优势&#xff0c;成为中小企业及创业团队的刚需工具。尤其是免费版低代码软件&#xff0c;既能满足基础业务需求&#xff0c;又能规避前期投入风险。本文给大家找到几款口碑出众、实用性强的免…

从初级测试工程师进阶中级测试岗,一篇避开弯路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 普通程序员 35 岁…

GPEN判别器训练技巧?学习率与epoch数调参经验分享

GPEN判别器训练技巧&#xff1f;学习率与epoch数调参经验分享 GPEN&#xff08;GAN-Prior based Enhancement Network&#xff09;作为当前人像修复领域表现突出的模型之一&#xff0c;凭借其在细节恢复、肤色自然度和五官一致性上的优异表现&#xff0c;被广泛应用于老照片修…

2026年 GIS工具精选:从专业级到轻量化的5款实用软件

地理信息系统&#xff08;GIS&#xff09;说白了就是衔接空间数据和实际业务的关键工具&#xff0c;如今正朝着“更专业、更轻便易用、更智能融合”的方向快速发展。不管是国土规划的精准测算、智慧城市的数字孪生搭建&#xff0c;还是应急救援的实时调度&#xff0c;都得靠适配…

基于PLC的六部十层电梯控制系统设计

目 录1 引言 11.1 电梯控制系统的研究意义 11.2 电梯控制系统发展现状 11.3 控制器和相关仿真软件 22 电梯控制系统框架及原理 22.1 电梯控制系统的组成部分 22.2 六部十层电梯系统结构及工作原理 32.2.1 电梯结构 32.2.2 电梯工作原理 52.2.3 电梯设定参数 63 单步电梯控制程序…

GPT-OSS与RAG结合:知识库问答系统搭建案例

GPT-OSS与RAG结合&#xff1a;知识库问答系统搭建案例 在当前大模型快速发展的背景下&#xff0c;如何将强大的语言模型与实际业务场景深度结合&#xff0c;成为越来越多开发者关注的核心问题。本文将以 GPT-OSS-20B-WEBUI 为基础模型&#xff0c;结合 RAG&#xff08;Retriev…

Go语言对接天远车辆二要素核验API接口调用代码流程、接入方法以及应用场景

一、构建高性能的出行身份核验系统 在网约车平台、共享汽车租赁以及汽车金融科技等高并发业务场景中&#xff0c;毫秒级的身份核验是保障业务流畅度与安全性的关键。面对海量的车辆准入请求&#xff0c;如何快速、准确地核实车辆所有人信息与登记信息的一致性&#xff0c;是架构…