【单片机毕业设计选题24020】-全自动鱼缸的设计与应用

系统功能:

(1)检测并控制鱼缸水温,水温低于22℃后开启加热,高于28℃后关闭加热。

(2)定时喂食,每天12点和0点喂食一次,步进电机开启后再关闭模拟喂食。

(3)定时开启水循环,每隔一个小时开启水循环水泵一分钟。

(4)OLED显示时间,水温,加热喂食和水循环的状态。

(5)手机蓝牙显示系统状态及控制加热喂食和水循环(手动状态下)。

(6)系统分手动和自动状态,手动状态下可以通过按键和蓝牙开启加热喂食和

水循环,自动状态下根据水温自动控制加热,根据时间定时控制喂食和水循环

主要功能模块原理图:

电源时钟烧录接口:

单片机和按键输入电路:

传感器采集电路:

继电器电路:

资料获取地址

系统主要功能模块代码

初始化代码:

  /* USER CODE BEGIN 1 */


  /* USER CODE END 1 */


  /* MCU Configuration--------------------------------------------------------*/


  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

  HAL_Init();


  /* USER CODE BEGIN Init */

    InitVar();


  /* USER CODE END Init */


  /* Configure the system clock */

  SystemClock_Config();


  /* USER CODE BEGIN SysInit */


  /* USER CODE END SysInit */


  /* Initialize all configured peripherals */

  MX_GPIO_Init();

  MX_USART1_UART_Init();

  /* USER CODE BEGIN 2 */

    HAL_Delay(100);

    SetUart1RxToInput();

    HAL_Delay(50);

//uart1打开接收中断

    HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1);


    InitOled();

    InitOledDisp();

//测试写DS1302时间

//    TestSetTime();

    DS1302_Read_Time();

    if(InitDS18B20()==0)

    {

//        printf("%s", "DS18B20初始化成功");

//DS18B20在上电第一次读取时显示温度为85℃,这是正常的。

//85℃是DS18B20在上电复位后在温度寄存器内的对应数字量,

//这里DS18B20初始化成功后读一次值,避免出现85℃

        DS18B20GetTemp_SkipRom();

}

系统控制代码:

//系统信息更新

void SystemControl(void)

{

    UpdateTempData();

    UpdateBleData();

    GetSystemTime();

    GetSensorState();

    FeedControl();

    PumpControl();

}

蓝牙模块上报系统数据:

void UpdateBleData(void)

{

    static uint8_t bleCnt = 0;


//自动模式下每隔10S上报蓝牙模块   

    if(sysMode==SYS_MODE_MANU)

    {

        return;

    }

   

    bleCnt++;

    if(bleCnt>=BLE_UPDATE_INTER)

    {

        bleCnt = 0;


//打印系统时间 

        printf("SysTime:%02d:%02d\r\n", getHourVal, getMinVal);   

//打印温度值

        printf("getTempVal:%2d\r\n", getTempVal);

//打印系统模式

        if(sysMode==SYS_MODE_MANU)

        {

            printf("sysMode:Manual\r\n");

        }

        else if(sysMode==SYS_MODE_AUTO)

        {

            printf("sysMode:Auto\r\n");

        } 

    }

}

此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

各功能模块资料:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

路由器基础配置以及静态路由配置

1、搭建网络 搭建网络拓扑、分配IP地址、划分网段、连接端口 2、配置路由器 路由器基础配置 //进入全局配置模式 Router#enable Router#conf t Enter configuration commands, one per line. End with CNTL/Z.//配置高速同步串口serial2/0 Router(config)#int ser2/0 Route…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-27含并行连结的网络GoogLeNet

27含并行连结的网络GoogLeNet import torch from torch import nn from torch.nn import functional as F import liliPytorch as lp import matplotlib.pyplot as pltclass Inception(nn.Module):# c1--c4是每条路径的输出通道数def __init__(self, in_channels, c1, c2, c3, …

JDK19特性

JDK19特性 一、JAVA19概述 JDK 19 2022 年 9 月 20 日正式发布以供生产使用,非长期支持版本。不过,JDK 19 中有一些比较重要的新特性值得关注。 JDK 19 只有 7 个新特性: JEP 405: Record Patterns(记录模式)[1] (预览)JEP 422: Linux/RISC-V Port[2]JEP 424: Foreign …

Eclipse快捷键大全

CtrlK 参照选中的Word快速定位到下一个 CtrlE 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示) Ctrl/(小键盘) 折叠当前类中的所有代码 Ctrl(小键盘) 展开当前类中的所有代码 CtrlSpace 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的…

Open WebUI – 本地化部署大模型仿照 ChatGPT用户界面

Open WebUI介绍: Open WebUI 是一个仿照 ChatGPT 界面,为本地大语言模型提供图形化界面的开源项目,可以非常方便的调试、调用本地模型。你能用它连接你在本地的大语言模型(包括 Ollama 和 OpenAI 兼容的 API)&#xf…

牛顿迭代法(求解整数的近似平方根)

情景再现 面试官:给你一个整数怎样最快求解他的近似平方根? 小白:可以用while循环呀! 面试官:有没有更好的方法? 小白:可以从这个数的左右两边开始迭代。 面试官:除了这个呢&#xf…

Flutter第十二弹 Flutter多平台运行

目标: 1.在多平台调试启动Flutter程序运行 一、安卓模拟器 1.1 检查当前Flutter适配的版本 flutter doctor提供了Flutter诊断。 $ flutter doctor --verbose /Users/zhouronghua/IDES/flutter/bin/flutter doctor --verbose [✓] Flutter (Channel master, 2.1…

操作系统:高效、稳定的承上启下

标题:操作系统:高效、稳定的承上启下 水墨不写bug (图片来源于网络) 目录 一、初识操作系统 第一个操作系统:Uinx Uinx的商业化 Linux:横空出世 二、如何在Windows上使用Linux 正文开始:…

打工人的PPT救星来了!用这款AI工具,10秒生成您的专属PPT

今天帮同事解决了一个代码合并的问题。其实问题不复杂,要把1的代码合到2的位置: 这个处理方式其实很简单,使用 “git cherry-pick hash值” 就可以。 同事直接对我赞许有加,不曾想被领导看到了,对我说了一句&#xff…

Tampermonkey油猴 跨域请求下载图片示例

Tampermonkey油猴 跨域请求下载图片示例 前言项目目标网站代码编写 运行效果 前言 需要用油猴采集并下载一个网站的图片,直接下下不了,搜了一下,是禁止跨域,使用CORS Unblock也不行,所以使用油猴自带的GM_xmlhttpRequ…

The First项目报告:解读互链操作协议LayerZero

随着 DeFi 项目的兴起,跨链互操作性成为区块链领域的热门话题,在众多的跨链平台中,Layer Zero 凭借其创新技术和设计备受关注,近期Layer Zero发布代币空投方案,引发社区热议,随着其代币上线The First平台&a…

【STM32入门学习】学习嵌入式实时操作系统(RTOS)移植uc/OS到stm32F103上

目录 一、建立STM32HAL库工程 1.1实时操作系统 1.2基于HAL库创建工程 二、获取uC/OS-III源码 三、移植准备 3.1复制uC/OS-III文件到工程文件夹 3.2添加工程组件和头文件路径 四、移植修改代码 4.1.启动文件修改: 4.2.app_cfg.h &a…

【数据结构】线性表之《栈》超详细实现

栈 一.栈的概念及结构二.顺序栈与链栈1.顺序栈2.链栈1.单链表栈2.双链表栈 三.顺序栈的实现1.栈的初始化2.检查栈的容量3.入栈4.出栈5.获取栈顶元素6.栈的大小7.栈的判空8.栈的清空9.栈的销毁 四.模块化源代码1.Stack.h2.Stack.c3.test.c 一.栈的概念及结构 栈:一种…

Azure vs. AssemblyAI:深度解析语音转文本服务的对决

在技术飞速发展的今天,API已成为连接不同软件和服务的关键桥梁。对于需要语音转文本功能的应用,我们对比了两个广受欢迎的API接口:Azure 语音转文本和AssemblyAI AI语音转文本。 Azure 语音转文本 Azure 语音转文本提供快速、准确的语音转文本…

ArrayList知识点(面试)

上一篇我们说了hashmap的相关知识点,这一篇我们再说一些ArrayList的相关知识,因为ArrayList也是我们项目中比较常用的。 ArrayList(底层是数组) 底层工作原理 首先,在构造ArrayList的时候会先看有没有指定容量,如果没有&#xf…

音视频开发29 FFmpeg 音频编码- 流程以及重要API,该章节使用AAC编码说明

此章节的一些参数,需要先掌握aac的一些基本知识:​​​​​​aac音视频开发13 FFmpeg 音频 --- 常用音频格式AAC,AAC编码器, AAC ADTS格式 。_ffmpeg aac data数据格式-CSDN博客 目的: 从本地⽂件读取PCM数据进⾏AAC格…

FL论文专栏|设备异构、异步联邦

论文:Asynchronous Federated Optimization(12th Annual Workshop on Optimization for Machine Learning) 链接 实现Server的异步更新。每次Server广播全局Model的时候附带一个时间戳,Client跑完之后上传将时间戳和Model同时带回…

【办公类-50-01】20240620自主游戏观察记录表19周内容打乱

背景需求: 又到了期末,各种班级资料需要提交。 有一份自主游戏观察记录需要写19周(每周2次)的观察记录,并根据参考书填写一级、三级、五级的评价指标。 去年中六班的时候,我很认真的手写了21周的户外游戏…

基于CST的连续域束缚态(BIC)设计与机制研究

关键词:太赫兹,超表面,连续域束缚态,CST,高Q 束缚态的概念最先出现于量子力学中,当粒子被势场约束在特定的区域内运动,即在无限远处波函数等于零的态叫束缚态,例如势阱中的粒子就处…

Map集合之HashMap细说

最近在看面试题,看到了hashmap相关的知识,面试中问的也挺多的,然后我这里记录下来,供大家学习。 Hashmap为什么线程不安全 jdk 1.7中,在扩容的时候因为使用头插法导致链表需要倒转,从而可能出现循环链表问…