物联网毕设 - 基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

这篇具有很好参考价值的文章主要介绍了物联网毕设 - 基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


1 简介

Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计

基于单片机的智能鱼缸系统设计与实现

🔥 项目分享与指导:https://gitee.com/sinonfin/sharing

1 课题背景意义

近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能家居不断问世并得到消费者的喜爱。因而各样的智能鱼缸作为装饰品和智能家居的合体应景入驻家庭、办公室、商场等场所。它不仅可以作为装饰品给我们带来视觉享受,缓解精神疲劳,而且将中国传统水文化引入日常生活,极大的丰富了人们的生活。但目前市面上各式鱼缸鱼龙混杂,格式各异,大多为非智能,需要手动操作实现温控,换水,充氧,投食等。这将造成诸多不便,浪费使用者的大量时间精力,且影响鱼缸的美观性。但现代社会生活节奏较快,人们没有足够的时间动手照顾鱼缸,导致鱼缸生物成活率低。因而,现阶段智能鱼缸具有一定的市场需求。

本课题设计的目的为实现鱼缸温控、换水、充氧、投食的一体化和智能化。 该设计具有科研和实用两重价值。

2 课题研究方法

本课题设计主要是利用单片机为主控芯片,结合嵌入式技术、传感器技术、C语言编程等技术设计出满足功能的智能鱼缸系统。总体上,我们首先要根据智能鱼缸的使用场合和工作环境明确我们所设计系统所需的总体功能。其次,我们构思出系统的总体框架,绘出硬件和软件流程框图,然后根据流程图着手设计。硬件方面考虑到市场现有的芯片、元器件种类繁多,我们需要斟酌选用满足系统功能且稳定实惠的元器件。系统软件编程我们采用模块化程序设计,先根据系统功能要求构思出出程序框图,再利用C语言对各个模块进行编程设计。最后利用KeiluVision5对源程序进行调试、查错和修改,最后导入硬件设备,总体运行系统,确保系统满足功能要求且能稳定的运行。

3 智能鱼缸系统功能要求

该智能鱼缸系统的设计是以日常生活中鱼缸的养护为背景, 根据当前市场上的需求, 智能鱼缸系统需要自动实现自动温控、 换水、 充氧、 投食等功能。

系统需要稳定运行尽可能避免发生故障, 且需要尽可能的降低成本, 具有实用价值。系统需要对鱼缸内部环境进行检测, 并保持环境参数保持在适宜鱼类生存的范围内。 首先是温度, 根据了解, 鱼类的适宜的生存环境一般都在 22~28℃, 当温度传感器检测到水温低于 22℃时, 系统启动加热器加热, 当温度达到 28℃时系统停止加热, 使温度在适宜鱼类生存的范围内波动。

其次是充氧, 目前生活中人们无法对充氧做到很好的把控, 长时间不充氧容易导致鱼类缺氧死亡, 而一直开启氧泵无疑是对资源的浪费, 因而, 利用定时控制氧泵开关,保证水中的一定的溶氧量将一定程度上解决上述问题。

鱼类的投食频率一般是 12 小时或者 24 小时, 最佳时间一般在中午这个时间段, 因而可以利用系统的时钟模块定时控制投食器。

水循环主要是为了除去水中的杂质, 改良水质, 可以利用利用系统定时模块定时开关水泵, 将水通过活性炭海绵等过滤完成净化, 为鱼类提供适宜生存的环境。

4 系统结构

鱼类生存的环境要素包含很多, 如光照、 水的温度、 营养物、杂质含量、 溶氧量、 PH 等等。 在此设计中, 我们主要考虑到鱼类生存的四大环境要素:水温、 水溶氧量、 水杂质含量、 营养物。 而各个要素对应的系统处理功能如下表所示

基于cc2530单片机实现智能鱼缸,单片机

学长设计的智能鱼缸控制系统主要实现自动加热、 自动水循环、 自动充氧、 自动投食四个功能, 选用 STC89C52 单片机作为系统核心芯片, 控制温控模块、 时钟模块和其他一些模块。 温度控制模块中 DS18B20 温度传感器负责采集温度参数传送至主控芯片,利用继电器控制加热器以实现恒温。 时钟模块通过继电器控制氧泵、 水泵的开关, 实现定时充氧、 定时水循环。 而自动投食功能利用时钟模块控制步进电机来模拟。 系统结构框图如下图所示。

基于cc2530单片机实现智能鱼缸,单片机

5 硬件模块

5.1 单片机最小系统

本设计采用的是STC89C52单片机芯片,…单片机最小系统电路如图所示。

基于cc2530单片机实现智能鱼缸,单片机

(1)复位电路:复位电路的作用就是在程…。

(2)晶振电路:晶振电路为单片…

5.2 温度检测模块

此温度模块为DS18B20,主要组成部分由一个…。

该芯片通过引脚2同单片机P1.7口进行对接。…温度检测模块如图3-3所示。

基于cc2530单片机实现智能鱼缸,单片机

5.3 继电器模块

在排水或者进行投食时均要启用电机装置,…继电器模块如图

基于cc2530单片机实现智能鱼缸,单片机
继电器一共有6个引脚,…引脚功能如下

基于cc2530单片机实现智能鱼缸,单片机

5.4 显示模块

电路中采用了LCD1602显示器。…LCD1602显示器如图所示。

基于cc2530单片机实现智能鱼缸,单片机

6 实现效果

将各个硬件部分组装后得到最终实物图

基于cc2530单片机实现智能鱼缸,单片机

其中, 1 是 USB 电源接口, 为系统提供 5V 的电源。 2 是按钮控制开关, 是系统的主开关。 3 是 LCD1602 显示器, 用于显示相关数据。 4 是 DS1302 时钟芯片。 5 是 24C02存储芯片。 6 是四个控制按键, 用于设置系统参数。 7 是 DS18B20 温度传感器, 与用于采集实时温度值。 8、 9、 10 依次是控制加热、 充氧、 水循环的三个继电器。 11 为用于模拟投食的步进电机。 12 为步进电机电源输入接口。

自动温控
基于cc2530单片机实现智能鱼缸,单片机

学长在演示中用手握住温度传感器来模拟加热器工作水温上升, 温度上升超过上限值 31℃时, 继电器 1 灯灭, 表示模拟加热器断电, 加热结束, 如图所示。 加热结束后温度逐渐降低, 直至温度再次低于下限温度值时, 继电器再次通电, 启动加热, 以维持鱼缸温度在一定范围内波动。

基于cc2530单片机实现智能鱼缸,单片机

自动投食

根据系统的需求, 投食频率大致为 24 小时一次, 通过定时开启投食器来实现。 但为了方便演示, 我们通过按键将 Feed Time 设置为系统时间的下一分钟, 当系统时间达到设定时间, 步进电机转动, 用于模拟投食。

基于cc2530单片机实现智能鱼缸,单片机

自动充氧

自动充氧与投食相似, 我们可以设置固定的时间, 为了演示方便, 我们也可以设置在系统时间的下一分钟, 当系统时间达到设定时间后, 继电器 2 亮灯开启, 进行模拟充氧。

基于cc2530单片机实现智能鱼缸,单片机

7 关键代码

#include"reg52.h"
#include "delay.h"
#include "typedef.h"
#include "1602.h"
#include "key.h"
#include "set.h"
#include "18b20.h"
#include "24c02.h"
#include "ds1302.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;
 }
}


8 最后

🔥 项目分享与指导:https://gitee.com/sinonfin/sharing文章来源地址https://www.toymoban.com/news/detail-768605.html

到了这里,关于物联网毕设 - 基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于单片机的智能鱼缸控制系统的设计与实现

    收藏和点赞,您的关注是我创作的动力   近几年,随着经济水平的发展,现在的居住环境也得到了质的飞跃,各个装饰业也在这些年悄然出现,鱼缸也成为我们国家很多家庭用于装饰居家环境的青睐物,但是在现在的中国,生活工作节奏越来越快,大多数的家庭拥有观赏鱼

    2024年02月02日
    浏览(44)
  • 【单片机毕设选题】 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(66)
  • 毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式

    文章目录 0 前言 1 项目背景 2 设计思路 3 硬件设计 4 软件设计 4.2 直立控制程序设计 4.3 速度控制程序设计 4.4 方向控制程序设计 4.5 关键代码 5 最后 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这

    2024年02月22日
    浏览(64)
  • 通信工程毕设 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月21日
    浏览(146)
  • 单片机毕设分享 基于STM32单片机的老人防摔倒报警系统 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(71)
  • stm32毕设分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(77)
  • 嵌入式毕设分享 基于单片机的智能音响设计与实现 -物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(60)
  • 毕设项目分享 基于单片机的智能盲人头盔系统 - 导盲杖

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年04月26日
    浏览(47)
  • 51单片机的智能鱼缸控制系统【proteus仿真+程序+报告+原理图】

    该系统由AT89C51单片机+LCD1602+DS18B20温度传感器+DS1302时间模块+ADC0832采集模拟水位、浑浊度信息+继电器控制电机和加热器模块+蜂鸣器模块构成。 可实现功能: 1、LCD1602显示各种信息 2、DS1302获取北京时间,用户通过按键设定1个喂食时间,默认时间12:30:00。到时间后自动喂食,

    2024年02月07日
    浏览(49)
  • 单片机毕设 基于STM32的智能药箱系统设计与实现

    Hi,大家好,今天向大家介绍一个学长做的单片机项目 基于STM32的智能药箱系统设计与实现 大家可用于 课程设计 或 毕业设计 照顾老人, 特别是提醒老人准时吃药已经成为了一个社会关心的问题。长期记录吃药种类、 吃药时间能为分析老人的病理提供有力的依据。 基于目

    2024年02月04日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包