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

news2024/11/24 15:26:12

系统功能:

(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三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

各功能模块资料:

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

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

相关文章

初学者应该掌握的MySQL数据库的基本组成部分及概念

MySQL数据库作为一种开源的关系型数据库管理系统,被广泛应用于Web应用开发和数据存储。它具有高性能、易用性和可靠性等特点,是开发者们的首选之一。在本篇文章中,我们将详细介绍MySQL数据库的核心组成部分,帮助你深入理解这个强大…

杀疯了!PerfXCloud-AI大模型夏日狂欢来袭,向基石用户赠送 ∞ 亿Token!

【澎峰科技重磅消息】 在全球范围内大模型正逐渐成为强大的创新驱动力。在这个充满激情的夏日,PerfXCloud为开发者和企业带来了前所未有的福利: 1. 零成本亲密、深度体验大模型,提供大量示范案例。 2. 向基石用户赠送∞亿Token的激励计划。…

展讯-QMI8658和气压传感器驱动调试

1.调试QMI8658 参考demo,添加QMI8610相关内容 当前驱动路径位于:bsp/modules/input/misc/qmi8610/qmi8610.c 编译使用make sockoimage 用fastboot烧录 1.确定驱动被正常加载 代码添加之后,首先确定有没有进入当前驱动文件 dmesg |grep …

Gradle 自动化项目构建-Gradle 核心之 Project

一、前言 从明面上看,Gradle 是一款强大的构建工具,但 Gradle 不仅仅是一款强大的构建工具,它更像是一个编程框架。Gradle 的组成可以细分为如下三个方面: groovy 核心语法:包括 groovy 基本语法、闭包、数据结构、面…

C#调用OpenCvSharp实现图像的直方图均衡化

本文学习基于OpenCvSharp的直方图均衡化处理方式,并使用SkiaSharp绘制相关图形。直方图均衡化是一种图像处理方法,针对偏亮或偏暗的图像,通过调整图像的像素值来增强图像对比度,详细原理及介绍见参考文献1-4。   直方图均衡化第…

计算机组成原理笔记-第1章 计算机系统概论

第一章 计算机系统概论 笔记PDF版本已上传至Github个人仓库:CourseNotes,欢迎fork和star,拥抱开源,一起完善。 该笔记是最初是没打算发网上的,所以很多地方都为了自我阅读方便,我理解了的地方就少有解释&a…

如何恢复 Mac 数据?适用于 Mac 的免费磁盘恢复软件

对于大多数 Mac 电脑用户来说,丢失数据是他们最不想遇到的噩梦之一。然而,无论我们多么小心地使用 Mac,多么有条理地存储重要文件,我们仍然有可能丢失 Mac 上的数据。某些硬件故障更有可能导致您意外丢失文件。除此之外&#xff0…

在WordPress上添加亚马逊联盟链接的三种方法

在互联网快速发展的今天,很多人都希望通过网络来增加收入,而加入亚马逊联盟计划(Amazon Associates)无疑是一个不错的选择。如果你有一个WordPress网站,那么在文章中添加亚马逊联盟链接是个很好的变现方式。今天&#…

IDEA services模块无法启动springboot服务(添加了springboot但是为空白)

https://blog.csdn.net/m0_54042402/article/details/117918995 https://blog.csdn.net/qq_46550964/article/details/122235235 Alt8 显示services模块 发现有springboot启动模块,点一下springboot之后,这个模块就消失了 会自动在.idea文件夹下的work…

Android平台下VR头显如何低延迟播放4K以上超高分辨率RTSP|RTMP流

技术背景 VR头显需要更高的分辨率以提供更清晰的视觉体验、满足沉浸感的要求、适应透镜放大效应以及适应更广泛的可视角度,超高分辨率的优势如下: 提供更清晰的视觉体验:VR头显的分辨率直接决定了用户所看到的图像的清晰度。更高的分辨率意…

AI全栈之coze的logo生成

前言 前几日体验了国产的AI-Agents产品coze 它是一种能够自主执行任务、与环境进行交互并根据所获取的信息做出决策和采取行动的软件程序 并且可以自己去创建属于自己的AIBot,还是很有意思的,大家可以去体验体验 在体验过程中,我发现在创…

Zygote进程的理解

Zygote进程是安卓系统的一个重要进程,由init进程创建而来;另外系统里的重要进程(system_server等)都是由zygote进程fork的,所有的app进程也是由zygote进程fork的。 一、C 里的fork函数 fork是Linux里面创建子进程的函…

【Apache Doris】如何实现高并发点查?(原理+实践全析)

【Apache Doris】如何实现高并发点查?(原理实践全析) 一、背景说明二、原理介绍三、环境信息四、Jmeter初始化五、参数预调六、用例准备七、高并发实测八、影响因素九、总结 本文主要分享 Apache Doris 是如何实现高并发点查的,以…

Virtualbox主机和虚拟机之间文件夹共享及双向拷贝

在VirtualBox这样的虚拟化环境中,实现主机与虚拟机之间的文件夹共享与双向文件传输是一个常见的需求。下面,我们将详细讲解如何在VirtualBox中实现这一功能。 一、安装与准备 首先,确保你已经安装了VirtualBox,并在其上成功创建…

图像处理与视觉感知复习--三维重建基础

文章目录 完整的摄像机模型(摄像机内外参数)理解三个参考系齐次坐标系中的投影变换 摄像机标定单视图几何无穷远点、无穷远线、无穷远平面影消点、影消线 三维重建基础与极几何极几何、本质矩阵与基础矩阵 双目立体视觉视差或深度的推导过程 完整的摄像机…

微信小程序毕业设计-餐厅点餐系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

单机小游戏好上架的应用市场有哪些?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

长尾式差分放大电路调零

长尾式放大电路用了两个参数相同的三极管,但实际上并没有完全相同的三极管,所以为了提高差分放大电路的对称性(一边电流增加多少,另一边电流减小多少,即能在电阻Re上产生的压降不变(后面做虚地处理)),在下图中加入可调…

【CT】LeetCode手撕—143. 重排链表

目录 题目1- 思路2- 实现⭐143. 重排链表——题解思路 3- ACM 实现 题目 原题连接:143. 重排链表 1- 思路 模式识别:重排链表 ——> 逆向 ——> ① 找到中间节点 ——> ②逆置 mid.next 链表——> ③遍历 2- 实现 ⭐143. 重排链表——题解…

Vue72-路由传参1

一、需求 点击哪个消息,就展示哪个消息的详情 这是一个三级路由! 给路由组件:detail.vue传递消息数据。 二、代码步骤 2-1、编写路由组件 从$route.query属性里面获取传参 2-2、编写路由规则 2-3、编写路由标签,传参 1、to的字…