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


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显示湿度和报警数值
float Temp_Data=0;
uchar AlarmTemp[]={32,20}; //高低温度
unsigned char FeedTime[3]={0}; //喂食时间
unsigned char O2Time[3]={0};  //充氧气时间
unsigned char LoopTime[3]={0}; //水循环时间
sbit RELAY1 = P2^2; //加水继电器
sbit RELAY2 = P2^1; //加热继电器
sbit RELAY3 = P2^0; //放水继电器
sbit ENA=P3^2;
sbit ENB=P3^3;
void TimerInit(void);
void GetTemp(void);
void PageInit(void);
void PageDisplay(void);
void DataLoad(void); //数据加载
void TempInit(void); //
void HeatControl(void); //加热自动控制
void Timer1_Init(void);  //50毫秒@11.0592MHz
void IncO2Control(void);
void FeedControl(void);
void LoopControl(void);
unsigned char FeedSecond=0;
unsigned char O2Second=0;
unsigned int LoopSecond=0;
unsigned char CountTime[3]={0}; //水循环时间计时
void main(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);
} 
}
void Timer0_Serve(void) interrupt 1
{ 
TH0 = (65535-20000)/256; //20MS定时
TL0 = (65535-20000)%256;
LCD_Refresh(); //LCD刷新
KEY_Scan();
}
void Timer1_Serve(void) interrupt 3 //50ms定时
{ 
 static unsigned char T50MS=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--;
 }
 }
}
void HeatControl(void) //加热控制
{
/*------------------低于下限开始加热---------------------*/
 if(Temp_Data<AlarmTemp[1])
 {
RELAY1=0;
 }
/*------------------高于上限停止加热---------------------*/
if(Temp_Data>AlarmTemp[0])
 {
 RELAY1=1;
 }
}
void TimerInit(void)
{
 TMOD &= 0xF0;
 TMOD |= 0X01; //T1工作在定时模式, T0 工作在8位自动重载计数
 TL0 = (65535-20000) % 256; //T0工作在定时模式 50ms定时
TH0 = (65535-20000)  / 256;
 ET0 = 1;
 TR0 = 1;
 EA = 1;
}
void PageDisplay(void)
{
/*---------------------------------------------------------*/
if(KeyVal=='E')
{
KeyVal=0;
 PageNum++;
 if(PageNum>4)
{
 PageNum=0;
 }
 PageInit();
}
/*-------------------------------------------------------*/
switch(PageNum)
{
/*-------------------------------------------------------*/
case 0: //显示和设置实时时间
{
  LCD_DisplayDate(0,Date);
  LCD_DisplayTime(16,Time);
  if(KeyVal=='S')
  {
  KeyVal = 0;
  SetRTC();
 }
}break;
/*-------------------------------------------------------*/
case 1: //显示实时温度和上下限值
 {
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;
/*-------------------------------------------------------*/
 case 2:
 {
 LCD_DisplayTime(16,FeedTime);
  if(KeyVal=='S')
  {
  KeyVal=0;
  SetClockTime(FeedTime);
 WrToROM(FeedTime,20,3);
  } 
 }break;
/*-------------------------------------------------------*/
case 3:
{
 LCD_DisplayTime(16,O2Time);
  if(KeyVal=='S')
  {
  KeyVal=0;
  SetClockTime(O2Time);
 WrToROM(O2Time,25,3);
  } 
}break;
/*-------------------------------------------------------*/
case 4:
{
 LCD_DisplayTime(16,LoopTime);
  if(KeyVal=='S')
{
  KeyVal=0;
  SetClockTime(LoopTime);
  WrToROM(LoopTime,30,3);
  }
}break;
default: { PageNum=0; PageInit(); }break;
}
/*-------------------------------------------------------*/
}
void IncO2Control(void)
{
 if(1==CompareClock(O2Time,Time))
 {
 O2Second=60;
 }
 if(O2Second>0)
 RELAY2=0;
 else
 RELAY2=1;
}
void FeedControl(void)
{
 if(1==CompareClock(FeedTime,Time))
 {
FeedSecond=10;
 }
 if(FeedSecond>0)
 {
 ENA=0;
 ENB=1;
 }
 else
 {
 ENA=1;
 ENB=1; 
 }
}
void LoopControl(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 最后

包含内容

在这里插入图片描述
配套详细设计论文
在这里插入图片描述

🧿 项目分享:见文末!

基于单片机智能鱼缸的设计与实现毕业设计 目 录 摘 要 I Abstract II 1 绪论 1 1.1课题背景 1 1.2国内外研究现状 1 1.3研究目的 2 2 开发技术与原理简介 4 2.1嵌入式技术 4 2.2传感器技术 4 2.3 Android技术 4 2.3.1 Android智能手机平台概述 4 2.3.2 Android手机平台的特点 5 2.3.3 Android系统软件架构 5 3 需求分析 6 3.1功能需求 6 3.1.1系统的特点及功能描述 6 3.1.2系统流程分析 6 3.2用例分析 7 3.3 开发工具 11 3.3.1 底层硬件电路开发工具 11 3.3.2底层系统开发工具 12 3.3.3 Android客户端开发工具 12 4 概要设计 13 4.1系统总体方案与功能 13 4.1.1系统功能组成 13 4.1.2系统控制参数 14 4.2系统硬件结构 14 4.3系统的软件设计 15 5 详细设计 17 5.1单片机系统设计 17 5.1.1单片机选型 17 5.1.2单片机最小系统设计 18 5.1.3详细说明 21 5.2温度传感器模块设计 22 5.2.1温度传感器选型 22 5.2.2温度传感器电路设计 23 5.3蓝牙串口模块设计 23 5.3.1串口技术 23 5.3.2蓝牙串口电路设计 25 5.3.3系统通讯协议设计 25 5.3.4系统通讯详细说明 26 5.4时钟模块设计 27 5.4.1时钟芯片选型 27 5.4.2时钟模块电路设计 27 5.5 Android客户端设计 28 5.5.1 Android蓝牙通信设计 28 5.5.2 Android界面设计 29 6 系统实现 31 6.1 底层设备软件实现 31 6.1.1系统软件流程图 31 6.1.2底层系统算法设计 32 6.2手机端软件实现 35 6.2.1手机端软件流程图 35 6.2.2底手机端软件算法设计 36 6.3软硬件设备实物图 38 6.3.1硬件设备实物图 38 6.3.2手机端软件截图 40 7 系统测试 41 7.1LED灯光变换测试 41 7.2检测温度测试 42 7.3水循环控制系统测试 42 7.4充氧模块测试 43 结束语 44 致 谢 45 参 考 文 献 46 摘 要 近年来嵌入式发展迅速,智能家居也进入了人们的生活。智能鱼缸却没有快速发展。我 根据市场上相关设备现状的分析和研究,从系统集成角度进行设计和开发,提出了一套 多功能的智能观赏鱼缸控制系统的设计方案。 该控制系统以STC12C5A60S2单片机为控制核心,结合传感器技术,集多种控制功能于一 体,包括检测温度、自动充氧、自动换水、灯光变换和自动喂食等,同时在系统中设计 一个蓝牙通信模块,可实现对鱼缸的远程控制和管理。整个系统分为两个部分:第一部 分是以STC12C5A60S2为核心的控制部分,实现对各种控制参数的设置、存储、和处理。 第二部分是手机安卓部分,通过手机端APP可以对鱼缸进行实时控制、参数设置等,实现 人机交互。两个部分之间采用蓝牙通讯技术,将数据信息在上位机与下位机之间交互传 输。 该系统根据当前市场上的需求进行设计和开发,形成了一套自动充氧、自动换水、灯光 变换和自动喂食等功能为一体的集成控制系统。同时该系统设计灵活、成本低廉,便于 量产,可广泛用于家庭和宾馆等安装观赏鱼缸的场所。 关键词:鱼缸,自动控制,单片机,蓝牙通讯,APP Abstract In recent years, with the development of embedded, intelligent household also entered people's lives. The intelligent aquarium is not development. I according to the current market analysis and research status quo of related equipment, system integration from the perspective of design and development, a set of multi-functional intelligent fish tank control system design. The control system STC12C5A60S2 microcontroller core. Combined with sensor technology. Set a variety of control functions. Including temperature detection, a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值