当前位置: 首页 > news >正文

基于STM32的智能鱼缸水质净化系统设计

🤞🤞大家好,这里是5132单片机毕设设计项目分享,今天给大家分享的是智能鱼缸水质净化系统

目录

1、设计要求

2、系统功能

3、演示视频和实物

4、系统设计框图

5、软件设计流程图

6、原理图

7、主程序

8、总结


1、设计要求

本毕业设计以单片机作为控制核心芯片,设计出一款具有监测鱼缸水的温度、水位、浊度和PH值等参数,并且通过WIFI模块连接云平台用来实现数据上传和下发,

 2、系统功能

(1)基于STM32F103C8T6为主控制器的智能鱼缸的设计与实现。其中包括基于STM32F103C8T6单片机的最小系统的搭建,温度传感器、浑浊度传感器、水位传感器等相关器件模块的选型和原理图设计,在上述原理图的基础上搭建硬件平台并验证其功能的完善性。

(1)ESP8266-01Wifi模块。通过本模块单片机系统可以连接到机智云,手机APP就可以远程控制鱼缸的开关。

(2)水位传感器器。水位传感器用来检测鱼缸内的水位,是鱼缸的水位保持在一定的范围内,通过比较水位和水位的阈值来控制补水泵和排水泵。

(3)温度传感器,温度传感器用来检测鱼缸内的水温,使鱼缸保持恒温。

(4)PH传感器,用来检测鱼缸内的PH值。

(5)水泵继电器模块,用继电器来驱动两个水泵。

(6)时钟模块。利用时钟振荡电路产生时钟信号。单片机时钟可以提供一个固定的时钟频率,用于同步和控制各个模块的操作。通过时钟信号的控制,可以确保单片机系统中各个模块按照一定的时间序列进行操作,从而实现定时功能。

(7)OLED显示模块。OLED显示模块采用0.96寸液晶显示屏,该模块用来实时显示传感器数据及鱼缸工作状态

(8)按键模块。按键模块用来控制模式选择和控制鱼缸的开启与关闭。

(9)蜂鸣器模块。设备出现故障用来报警。

(10)舵机用来控制净水系统的开关。

3、演示视频和实物

基于STM32的鱼缸水质净化系统

4、系统设计框图

5、软件设计流程图

6、原理图

7、主程序

#include "sys.h"                //有定制和购买的,可以联系VX:lwfw123456789
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
#include "usart3.h"
#include "gizwits_product.h"
#include "Key.h"
#include "Buzzer.h"
#include "OLED.h"
#include "AD.h"
#include "MyRTC.h"
#include "Servo.h"
#include "ds18b20.h"
/***********************************************************************************************
同学好!我们是5132单片机设计,定制单片机设计,实物和说明书均可定制,欢迎大家咨询。VX:lwfw123456789
其他项目演示视频和说明请大家移步哔哩哔哩、CSDN和公众号等。
哔哩哔哩:5132单片机设计
CSDN:    5132单片机设计
公众号:  5132单片机设计
抖音  :  5132单片机设计
小红书:  5132单片机设计
咸鱼:    5132单片机设计
************************************************************************************************/uint8_t KeyNum;                               //存储按键值
uint32_t bufe[10];                     //存储传感器采集的数据
uint16_t AD0, AD1, AD2, AD3;             //存储5路ADC值uint32_t TempYu = 25;
uint32_t ShuiWeiYu_Xia = 10;
uint32_t ShuiWeiYu_Shang = 70;
uint32_t ZhuoYu = 70;
uint32_t PHYu = 5;
short temperature;                               //存放温湿度
u8 state, state2 = 2, state2_1, state2_2, state3;      //按键状态标志
u8 t = 0;                                     //传感器读取时间间隔
u8 flag;                               //远程控制标志
u8 flag2 = 0, flag1, flag3;
uint16_t RTC_Time[] = {0, 0, 0};
uint16_t RTC_Time1[] = {7, 0, 0};    //定时时间---开
uint16_t RTC_Time2[] = {19, 0, 0};   //定时时间---关
u8 T_state, T_state1, qingping = 1, state_dingshi_yu_guan, state_dingshi_yu_kai, state_dingshi_yu_switch, state3_1;
float PH;
extern void TimeSet(void);
extern void TimeRead(void);
extern void DingShiMoShi(void);
extern void YuZhiSet(void);
extern void ChuangGan(void);void MY_Gizwits_Init(void)              //机智云初始化函数
{TIM3_Int_Init(9, 7199); //1MS系统定时usart3_init(9600);//WIFI初始化memset((uint8_t *)&currentDataPoint, 0, sizeof(dataPoint_t)); //设备状态结构体初始化gizwitsInit();//环形缓冲区初始化gizwitsSetMode(2);   //设置模式userInit();
}
u16 Get_Adc_Average(u8 ADC_CHx, u8 times)
{u32 temp_val = 0;u8 t;for (t = 0; t < times; t++){temp_val += AD_GetValue(ADC_CHx);//SYSTICK_DelayMs(5);}return temp_val / times;
}void shoudong()
{TimeRead();if (KeyNum == 2)        //按键{delay_ms(20);if (KeyNum == 2){state2++;if (state2 > 1){state2 = 0;}}}if (state2 == 0){Servo_SetAngle(90);//外设操作}if (state2 == 1){Servo_SetAngle(0);//外设操作}if (KeyNum == 3)        //按键{delay_ms(20);if (KeyNum == 3){state2_1++;if (state2_1 > 2){state2_1 = 0;}}}if (state2_1 == 1){BuShuiBen_ON();//外设操作PaiShuiBen_OFF();}if (state2_1 == 0){BuShuiBen_OFF();//外设操作PaiShuiBen_OFF();}if (state2_1 == 2){BuShuiBen_OFF();//外设操作PaiShuiBen_ON();}if (KeyNum == 4)        //按键{delay_ms(20);if (KeyNum == 4){state2_2++;if (state2_2 > 1){state2_2 = 0;}}}if (state2_2 == 1){JiaRe_ON();//外设操作}if (state2_2 == 0){JiaRe_OFF();//外设操作}}
void zhidong()
{if (bufe[0] < ShuiWeiYu_Xia){BuShuiBen_ON();PaiShuiBen_OFF();}else if (bufe[0] > ShuiWeiYu_Shang){PaiShuiBen_ON();BuShuiBen_OFF();}else{			    PaiShuiBen_OFF();BuShuiBen_OFF();}if (bufe[3]/10 < TempYu){JiaRe_ON();}else{JiaRe_OFF();}if ((bufe[1]/10 < PHYu) || (bufe[2] > ZhuoYu)){Buzzer_Turn();}else{Buzzer_OFF();}}int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(9600);       //串口初始化为9600delay_init();      //延时函数初始化LED_Init();            //初始化与LED连接的硬件接口Buzzer_Init();             //下面为外设初始化OLED_Init();Key_Init();AD_Init();MyRTC_Init();Servo_Init();     //舵机初始化,并设置舵机初始角度while (DS18B20_Init()) //DS18B20初始化{printf("ds18b20 success!");delay_ms(200);}MY_Gizwits_Init();   //机智云初始化while (1){userHandle();    //数据上传gizwitsHandle((dataPoint_t *)&currentDataPoint);   //后台处理,必须放在while里if (t % 10 == 0){AD0 = AD_GetValue(ADC_Channel_0);    //水位传感器     PA0if (AD0 > 4000)AD0 = 4000;bufe[0] = (u8)(AD0 / 40);AD2 = Get_Adc_Average(ADC_Channel_2, 10);PH = (float)AD2 * (3.3 / 4096); //读取ADC通道4的值PH = -5.7541 * PH + 16.654; //输出电压范围0~3V3      因为STM32的ADC参考电压是3.3V//将ADC的原始值(adcx)转换为电压值。这里假设ADC的参考电压是3.3V,并且ADC的位数是12位(即最大值为4096)。bufe[1] = PH * 10;AD3 = AD_GetValue(ADC_Channel_3);    //浊度传感器     PA3if (AD3 > 4000)AD3 = 4000;bufe[2] = (u8)(100 - (AD3 / 40));temperature = DS18B20_Get_Temp();bufe[3] = temperature;}t++;KeyNum = Key_GetNum();if (KeyNum == 1){qingping = 0;state2 = 2,delay_ms(20);if (KeyNum == 1){state++;if (state > 3){state = 0;}}}if (state == 0)                                //远程模式{if (qingping == 0){OLED_Clear();qingping = 1;}           TimeRead();ChuangGan();OLED_ShowChinese(1, 7, 49);OLED_ShowChinese(1, 8, 50);}if (state == 2)                           //自动模式{OLED_ShowChinese(1, 7, 51);OLED_ShowChinese(1, 8, 52);TimeRead();zhidong();ChuangGan();}if (state == 1)                           //手动模式{OLED_ShowChinese(1, 7, 18);OLED_ShowChinese(1, 8, 52);ChuangGan();shoudong();}if (state == 3)                           //阈值设置{if (qingping == 0){OLED_Clear();qingping = 1;}YuZhiSet();}}
}void TimeSet()           //设置时间
{if (KeyNum == 2)    //PB10{delay_ms(20);if (KeyNum == 2){T_state++;if (T_state > 2){T_state = 0;}}}if (T_state == 0)    //时间显示模式{MyRTC_ReadTime();OLED_ShowNum(1, 5, MyRTC_Time[3], 2);    //时OLED_ShowString(1, 7, ":");OLED_ShowNum(1, 8, MyRTC_Time[4], 2);    //分OLED_ShowString(1, 10, ":");OLED_ShowNum(1, 11, MyRTC_Time[5], 2);   //秒RTC_Time[0] = MyRTC_Time[3];RTC_Time[1] = MyRTC_Time[4];RTC_Time[2] = MyRTC_Time[5];}if (T_state == 1)    //修改时间{if (KeyNum == 5){delay_ms(20);if (KeyNum == 5){T_state1++;if (T_state1 > 2){T_state1 = 0;}}}if (T_state1 == 0)  //修改时{if (KeyNum == 4)RTC_Time[0]++;if (KeyNum == 3)RTC_Time[0]--;if (RTC_Time[0] > 23 & RTC_Time[0] < 100)RTC_Time[0] = 0;if (RTC_Time[0] > 100)RTC_Time[0] = 23;OLED_ShowNum(1, 5, RTC_Time[0], 2);  //时}if (T_state1 == 1)  //修改分{if (KeyNum == 4)RTC_Time[1]++;if (KeyNum == 3)RTC_Time[1]--;if (RTC_Time[1] > 59 & RTC_Time[1] < 100)RTC_Time[1] = 0;if (RTC_Time[1] > 100)RTC_Time[1] = 59;OLED_ShowNum(1, 8, RTC_Time[1], 2);  //时}if (T_state1 == 2)  //修改秒{if (KeyNum == 4)RTC_Time[2]++;if (KeyNum == 3)RTC_Time[2]--;if (RTC_Time[2] > 59)RTC_Time[2] = 0;if (RTC_Time[2] > 59 & RTC_Time[2] < 100)RTC_Time[2] = 0;if (RTC_Time[2] > 100)RTC_Time[2] = 59;OLED_ShowNum(1, 11, RTC_Time[2], 2);  //时}}if (T_state == 2){MyRTC_Time[3] = RTC_Time[0];MyRTC_Time[4] = RTC_Time[1];MyRTC_Time[5] = RTC_Time[2];MyRTC_SetTime();T_state = 0;}
}void TimeRead()
{MyRTC_ReadTime();OLED_ShowNum(1, 5, MyRTC_Time[3], 2);    //时OLED_ShowString(1, 7, ":");OLED_ShowNum(1, 8, MyRTC_Time[4], 2);    //分OLED_ShowString(1, 10, ":");OLED_ShowNum(1, 11, MyRTC_Time[5], 2);   //秒
}void DingShiMoShi()
{TimeRead();//...............................定时模式..................................../if ((MyRTC_Time[3] == RTC_Time1[0]) && (MyRTC_Time[4] == RTC_Time1[1]) && (MyRTC_Time[5] == RTC_Time1[2])){//外设操作}if ((MyRTC_Time[3] == RTC_Time2[0]) && (MyRTC_Time[4] == RTC_Time2[1]) && (MyRTC_Time[5] == RTC_Time2[2])){//外设操作}//...............................修改定时时间..................................../OLED_ShowChinese(3, 1, 31);OLED_ShowString(3, 3, ":");OLED_ShowNum(3, 5, RTC_Time1[0], 2);OLED_ShowString(3, 7, ":");OLED_ShowNum(3, 8, RTC_Time1[1], 2);OLED_ShowString(3, 10, ":");OLED_ShowNum(3, 11, RTC_Time1[2], 2);OLED_ShowChinese(4, 1, 32);OLED_ShowString(4, 3, ":");OLED_ShowNum(4, 5, RTC_Time2[0], 2);OLED_ShowString(4, 7, ":");OLED_ShowNum(4, 8, RTC_Time2[1], 2);OLED_ShowString(4, 10, ":");OLED_ShowNum(4, 11, RTC_Time2[2], 2);if (KeyNum == 5){delay_ms(20);if (KeyNum == 5){state_dingshi_yu_switch++;if (state_dingshi_yu_switch > 2){state_dingshi_yu_switch = 0;}}}if (state_dingshi_yu_switch == 1)    //设置阈值开的时间{if (KeyNum == 2){delay_ms(20);if (KeyNum == 2){state_dingshi_yu_kai++;if (state_dingshi_yu_kai > 2){state_dingshi_yu_kai = 0;}}}if (state_dingshi_yu_kai == 0)    //时{if (KeyNum == 3) RTC_Time2[0]++;if (KeyNum == 4) RTC_Time2[0]--;}if (state_dingshi_yu_kai == 1)//分{if (KeyNum == 3) RTC_Time2[1]++;if (KeyNum == 4) RTC_Time2[1]--;}if (state_dingshi_yu_kai == 2)//秒{if (KeyNum == 3) RTC_Time2[2]++;if (KeyNum == 4) RTC_Time2[2]--;}}else{if (KeyNum == 2){delay_ms(20);if (KeyNum == 2){state_dingshi_yu_guan++;if (state_dingshi_yu_guan > 2){state_dingshi_yu_guan = 0;}}}if (state_dingshi_yu_guan == 0)    //时{if (KeyNum == 3) RTC_Time1[0]++;if (KeyNum == 4) RTC_Time1[0]--;}if (state_dingshi_yu_guan == 1)//分{if (KeyNum == 3) RTC_Time1[1]++;if (KeyNum == 4) RTC_Time1[1]--;}if (state_dingshi_yu_guan == 2)//秒{if (KeyNum == 3) RTC_Time1[2]++;if (KeyNum == 4) RTC_Time1[2]--;}}if (state3_1 == 0)    //时{if (KeyNum == 5) RTC_Time1[0]++;if (KeyNum == 6) RTC_Time1[0]--;}if (state3_1 == 1)//分{if (KeyNum == 5) RTC_Time1[1]++;if (KeyNum == 6) RTC_Time1[1]--;}if (state3_1 == 2)//秒{if (KeyNum == 5) RTC_Time1[2]++;if (KeyNum == 6) RTC_Time1[2]--;}
}void YuZhiSet()
{zhidong();OLED_ShowChinese(1, 3, 72);   //显示“阈值设置”OLED_ShowChinese(1, 4, 73);OLED_ShowChinese(1, 5, 74);OLED_ShowChinese(1, 6, 75);OLED_ShowString(2, 1, "S_W_X:");OLED_ShowNum(2, 7, ShuiWeiYu_Xia, 2);OLED_ShowString(3, 1, "S_W_S:");OLED_ShowNum(3, 7, ShuiWeiYu_Shang, 2);	OLED_ShowString(4, 10, "PH:");OLED_ShowNum(4, 13, PHYu, 2);OLED_ShowString(2, 10, "Temp:");OLED_ShowNum(2, 15, TempYu, 2);OLED_ShowString(3, 10, "Z_D:");OLED_ShowNum(3, 14, ZhuoYu, 2);if (KeyNum == 2)                          //自动模式下PB0按键控制阈值切换{delay_ms(20);if (KeyNum == 2){state3++;if (state3 > 4){state3 = 0;}}}if (state3 == 0){if (KeyNum == 3)ShuiWeiYu_Xia++;if (KeyNum == 4)ShuiWeiYu_Xia--;}if (state3 == 1){if (KeyNum == 3)ShuiWeiYu_Shang++;if (KeyNum == 4)ShuiWeiYu_Shang--;}if (state3 == 4){if (KeyNum == 3)PHYu++;if (KeyNum == 4)PHYu--;}if (state3 == 2){if (KeyNum == 3)TempYu ++;if (KeyNum == 4)TempYu --;}if (state3 == 3){if (KeyNum == 3)ZhuoYu ++;if (KeyNum == 4)ZhuoYu --;}
}void ChuangGan()
{OLED_ShowChinese(2, 1, 39);OLED_ShowChinese(2, 2, 40);OLED_ShowString(2, 5, ":");OLED_ShowNum(2, 6, bufe[0], 2);OLED_ShowString(2, 8, "%");OLED_ShowString(4, 8, "%");OLED_ShowString(2, 11, "PH:");OLED_ShowNum(2, 14, bufe[1] / 10, 1);OLED_ShowString(2, 15, ".");OLED_ShowNum(2, 16, bufe[1] % 10, 1);OLED_ShowChinese(3, 1, 26);OLED_ShowChinese(3, 2, 28);OLED_ShowString(3, 5, ":");if (temperature < 0){OLED_ShowString(3, 6, "-");     //显示负号temperature = -temperature;                 //转为正数}else OLED_ShowString(3, 6, "+");        //去掉负号OLED_ShowNum(3, 7, temperature / 10, 2);OLED_ShowString(3, 9, ".");OLED_ShowNum(3, 10, temperature % 10, 1);OLED_ShowChinese(4, 1, 78);OLED_ShowChinese(4, 2, 79);OLED_ShowString(4, 5, ":");OLED_ShowNum(4, 6, bufe[2], 2);
}

8、总结

本设计以单片机作为控制核心芯片,设计出一款具有监测鱼缸水的温度、水位、浊度和PH值等参数,并且通过WIFI模块连接云平台用来实现数据上传和下发。

相关文章:

基于STM32的智能鱼缸水质净化系统设计

&#x1f91e;&#x1f91e;大家好&#xff0c;这里是5132单片机毕设设计项目分享&#xff0c;今天给大家分享的是智能鱼缸水质净化系统。 目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 1、设计要求…...

python:csv文件批量导入mysql

1.导入sql文件到数据库中 mysql -u username -p要先创建一个空的数据库 CREATE DATABASE your_database_name;USE your_database_name;导入sql文件 source /path/to/your/file.sql;查看某个表格的结构&#xff0c;为后续数据插入做准备 DESCRIBE table_name;2.插入假数据到对应…...

第三十二周:Informer学习笔记

目录 摘要Abstract1 Informer1.1 预备知识1.2 模型框架1.3 实验分析 总结 摘要 本周学习的主要内容是Informer模型&#xff0c;Informer是一种专为长序列时间序列预测&#xff08;LSTF&#xff09; 设计的Transformer模型。相较于传统的Transformer&#xff0c;Informer采用Pr…...

计算机视觉核心任务

1. 计算机视频重要分类 计算机视觉的重要任务可以大致分为以下几类&#xff1a; 1. 图像分类&#xff08;Image Classification&#xff09; 识别图像属于哪个类别&#xff0c;例如猫、狗、汽车等。 应用场景&#xff1a;物品识别、人脸识别、医疗影像分类。代表模型&#…...

【python】matplotlib(animation)

文章目录 1、matplotlib.animation1.1、FuncAnimation1.2、修改 matplotlib 背景 2、matplotlib imageio2.1、折线图2.2、条形图2.3、散点图 3、参考 1、matplotlib.animation 1.1、FuncAnimation matplotlib.animation.FuncAnimation 是 Matplotlib 库中用于创建动画的一个…...

【Linux网络编程】之守护进程

【Linux网络编程】之守护进程 进程组进程组的概念组长进程 会话会话的概念会话ID 控制终端控制终端的概念控制终端的作用会话、终端、bash三者的关系 前台进程与后台进程概念特点查看当前终端的后台进程前台进程与后台进程的切换 作业控制相关概念作业状态&#xff08;一般指后…...

Vue.js如何根据访问路径切换页面

Vue Router 在前端工程中&#xff0c;路由指的是&#xff0c;根据不同的访问路径&#xff0c;展示不同组件的内容。 Vue Router是Vue.js的官方路由。 Vue Router介绍。 要使用vue Router&#xff0c;得先安装 npm install vue-router4这里的4&#xff0c;指的是第4个版本 在s…...

Vue与Konva:解锁Canvas绘图的无限可能

前言 在现代Web开发中&#xff0c;动态、交互式的图形界面已成为提升用户体验的关键要素。Vue.js&#xff0c;作为一款轻量级且高效的前端框架&#xff0c;凭借其响应式数据绑定和组件化开发模式&#xff0c;赢得了众多开发者的青睐。而当Vue.js邂逅Konva.js&#xff0c;两者结…...

collabora online+nextcloud+mariadb在线文档协助

1、环境 龙蜥os 8.9 docker 2、安装docker dnf -y install dnf-plugins-core dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sed -i shttps://download.docker.comhttps://mirrors.tuna.tsinghua.edu.cn/docker-ce /etc/yum.repos.…...

linux基础命令1

1、linux目录结构——树型结构 根目录&#xff1a;/ 用户主目录(家目录)&#xff1a;~或者 /home/edu 根目录下常见的文件夹: 2、常见的命令 1、pwd 查看当前目录 cd 切换目录 cd ~ 切换到家目录 2、ls 查看当前目录的文件信息 语法:ls [选项] [参…...

[LVGL] 在VC_MFC中移植LVGL

前言&#xff1a; 0. 在MFC中开发LVGL的优点是可以用多个Window界面做辅助扩展【类似GUIguider】 1.本文基于VC2022-MFC单文档框架移植lvgl8 2. gitee上下载lvgl8.3 源码&#xff0c;并将其文件夹改名为lvgl lvgl: LVGL 是一个开源图形库&#xff0c;提供您创建具有易于使用…...

Spring Boot整合MQTT

MQTT是基于代理的轻量级的消息发布订阅传输协议。 1、下载安装代理 进入mosquitto下载地址&#xff1a;Download | Eclipse Mosquitto&#xff0c;进行下载&#xff0c;以win版本为例 下载完成后&#xff0c;在本地文件夹找到下载的代理安装文件 使用管理员身份打开安装 安装…...

elasticsearch实战三 elasticsearch与mysql数据实时同步

一 介绍 elasticsearch数据不是一直不变的&#xff0c;需要与mysql、oracle等数据库的数据做同步。 本博客里涉及到的项目地址&#xff1a;https://www.aliyundrive.com/s/7bRWpTYsxWV 方案一&#xff1a; 同步调用&#xff0c;即操作mysql数据后&#xff0c;接着操作elastic…...

netcore openTelemetry+prometheus+grafana

一、netcore项目 二、openTelemetry 三、prometheus 四、grafana添加Dashborad aspire/src/Grafana/dashboards at main dotnet/aspire GitHub 导入&#xff1a;aspnetcore.json和aspnetcore-endpoint.json 效果&#xff1a;...

StochSync:可在任意空间中生成360°全景图和3D网格纹理

StochSync方法可以用于在任意空间中生成图像&#xff0c;尤其是360全景图和3D网格纹理。该方法利用了预训练的图像扩散模型&#xff0c;以实现零-shot生成&#xff0c;消除了对新数据收集和单独训练生成模型的需求。StochSync 结合了 Diffusion Synchronization&#xff08;DS&…...

MybatisPlus较全常用复杂查询引例(limit、orderby、groupby、having、like...)

MyBatis-Plus 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。以下是 MyBatis-Plus 中常用复杂查询&#xff08;如 LIMIT、ORDER BY、GROUP BY、HAVING、LIKE 等&#xff09;的引例&#xff1a; 1. 环境准备…...

大数据项目2:基于hadoop的电影推荐和分析系统设计和实现

前言 大数据项目源码资料说明&#xff1a; 大数据项目资料来自我多年工作中的开发积累与沉淀。 我分享的每个项目都有完整代码、数据、文档、效果图、部署文档及讲解视频。 可用于毕设、课设、学习、工作或者二次开发等&#xff0c;极大提升效率&#xff01; 1、项目目标 本…...

win10的Unet项目导入阿里云训练

win10配置文件 annotated-types0.7.0 certifi2024.12.14 charset-normalizer3.4.1 click8.1.8 colorama0.4.6 contourpy1.1.1 cycler0.12.1 docker-pycreds0.4.0 eval_type_backport0.2.2 filelock3.16.1 fonttools4.55.3 fsspec2024.12.0 gitdb4.0.12 GitPython3.1.44 idna3.…...

Linux(20)——调度作业

目录 一、调度延迟的用户作业&#xff1a; 1、延迟的用户作业&#xff1a; 2、查看延迟的用户作业&#xff1a; 3、从计划中删除作业&#xff1a; 二、调度周期性用户作业&#xff1a; 1、周期性用户作业&#xff1a; 2、调度周期性用户作业&#xff1a; 3、用户作业格…...

DeepSeek赋能Vue:打造超丝滑进度条开发指南

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。

题目&#xff1a;在CT107D单片机综合训练平台上&#xff0c;8个数码管分别单独依次显示0~9的值&#xff0c;然后所有数码管一起同时显示0~F的值&#xff0c;如此往复。 延时函数分析LED首先实现8个数码管单独依次显示0~9的数字所有数码管一起同时显示0~F的值&#xff0c;如此往…...

清除el-table选中状态 clearSelection

如何在Vue应用中使用Element UI的el-table组件&#xff0c;通过this.$refs.multipleTable.clearSelection()方法来清除所有选中行的状态。适合前端开发者了解表格组件的交互操作。 // el-table绑定ref<el-table selection-change"selsChange" ref"multipl…...

【算法】动态规划专题⑥ —— 完全背包问题 python

目录 前置知识进入正题模板 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 完全背包问题是动态规划中的一种经典问题&#xff0c;它与0-1背包问题相似&#xff0c;但有一个关键的区别&#xff1a;在完全背包问题中&#xff0c;每种物品都有无限的数量可用。…...

论文笔记-COLING2025-LLMTreeRec

论文笔记-COLING2025-LLMTreeRec: Unleashing the Power of Large Language Models for Cold-Start Recommendations LLMTreeRec: 释放大语言模型在冷启动推荐中的力量摘要1.引言2.框架2.1项目树构建2.2以LLM为中心的基于树的推荐2.2.1推荐链策略2.2.2检索策略 3.实验3.1实验设…...

c++ haru生成pdf输出饼图

#define PI 3.14159265358979323846 // 绘制饼图的函数 void draw_pie_chart(HPDF_Doc pdf, HPDF_Page page, float *data, int data_count, float x, float y, float radius) { float total 0; int i; // 计算数据总和 for (i 0; i < data_count; i) { tot…...

【‌Unity】Unity中物体的static属性作用

‌Unity中物体的static属性主要用于优化游戏性能和简化渲染过程。‌ Unity中物体的static属性的作用 优化渲染性能‌&#xff1a;当物体被标记为static时&#xff0c;Unity会在游戏运行时将其视为静止的物体&#xff0c;这意味着这些物体的渲染信息不会随着每一帧的更新而变化…...

Rust 测试指南:从入门到进阶

1. 测试基础&#xff1a;#[test] 属性 Rust 测试的基本单位是函数。只要在一个函数前面标注 #[test] 属性&#xff0c;那么在运行 cargo test 时&#xff0c;Rust 会自动识别并执行它。例如&#xff0c;新建一个库工程 adder&#xff0c;cargo new adder --lib&#xff0c;在 …...

Elasticsearch 生产集群部署终极方案

Elasticsearch 集群部署 1.集群部署1.1 新增用户1.2 优化操作系统1.3 JDK1.4 elasticsearch1.5 开机自启动 2.安全认证功能2.1 生成CA证书2.2 生成密钥2.3 上传至其他节点2.4 修改属主、属组2.5 配置文件添加参数2.6 各节点添加密钥库密码2.7 设置用户密码 1.集群部署 1.1 新增…...

电路笔记(元器件):AD 5263数字电位计(暂记)

AD5263 是四通道、15 V、256位数字电位计&#xff0c;可通过SPI/I2C配置具体电平值。 配置模式&#xff1a; W引脚作为电位器的抽头&#xff0c;可在A-B之间调整任意位置的电阻值。也可将W与A(或B)引脚短接&#xff0c;A-W间的电阻总是0欧姆&#xff0c;通过数字接口调整电位器…...

如何在电脑后台定时进行自动截图?自动截图后如何快捷保存?如何远程查看?

7-2 有时候需要对电脑的屏幕进行在后台连续性的截图保存&#xff0c;并且要可以远程查看&#xff0c;无界面&#xff0c;以达到对电脑的使用过程进行完全了解的目的&#xff0c;一般用于对小孩使用电脑的掌握&#xff0c;如果父母在外地&#xff0c;不方便就近管理&#xff0c…...

解决react中函数式组件usestate异步更新

问题&#xff1a;在点击modal组件确认后 调用后端接口&#xff0c;使用setstateone&#xff08;false&#xff09;使modal组件关闭&#xff0c;但是设置后关闭不了&#xff0c;在设置setstateone&#xff08;false&#xff09;前后打印出了对应的stateone都为true&#xff0c;但…...

skia-macos源码编译

1、下载git-hub 源码 2、下载依赖库 3、编译&#xff0c;注意选项 bin/gn gen out/release --args"is_official_buildfalse skia_use_system_expatfalse skia_use_system_icufalse skia_use_libjpeg_turbofalse skia_use_system_libpngfalse skia_use_system_libwebpfal…...

本地部署DeepSeek(Mac版本,带图形化操作界面)

一、下载安装&#xff1a;Ollama 官网下载&#xff1a;Download Ollama on macOS 二、安装Ollama 1、直接解压zip压缩包&#xff0c;解压出来就是应用程序 2、直接将Ollama拖到应用程序中即可 3、启动终端命令验证 # 输入 ollama 代表已经安装成功。 4、下载模型 点击模型…...

离线统信系统的python第三方库批量安装流程

一、关于UOS本机 操作系统&#xff1a;UOS&#xff08;基于Debian的Linux发行版&#xff09; CPU&#xff1a;海光x86 二、具体步骤 1、在联网的电脑上用控制台的pip命令批量下载指定版本的第三方库 方法A cd <目标位置的绝对路径> pip download -d . --platform many…...

群晖安装Gitea

安装Docker Docker运行Gitea 上传gitea包&#xff0c;下载地址&#xff1a;https://download.csdn.net/download/hmxm6/90360455 打开docker 点击印象&#xff0c;点击新增&#xff0c;从文件添加 点击启动 可根据情况&#xff0c;进行高级设置&#xff0c;没有就下一步 点击应…...

jmeter逻辑控制器9

1&#xff0c;简单控制器2&#xff0c;录制控制器3&#xff0c;循环控制器4&#xff0c;随机控制器5&#xff0c;随机顺序控制器6&#xff0c;if控制器7&#xff0c;模块控制器8&#xff0c;Include控制器9&#xff0c;事物控制器本文永久更新地址: 1&#xff0c;简单控制器 不…...

Spring统一修改RequestBody

我们编写RestController时&#xff0c;有可能多个接口使用了相同的RequestBody&#xff0c;在一些场景下需求修改传入的RequestBody的值&#xff0c;如果是每个controller中都去修改&#xff0c;代码会比较繁琐&#xff0c;最好的方式是在一个地方统一修改&#xff0c;比如将he…...

自动化xpath定位元素(附几款浏览器xpath插件)

在 Web 自动化测试、数据采集、前端调试中&#xff0c;XPath 仍然是不可或缺的技能。虽然 CSS 选择器越来越强大&#xff0c;但面对复杂 DOM 结构时&#xff0c;XPath 仍然更具灵活性。因此&#xff0c;掌握 XPath&#xff0c;不仅能提高自动化测试的稳定性&#xff0c;还能在爬…...

go-elasticsearch创建ik索引并进行查询操作

es-go client引入gomod go get github.com/elastic/go-elasticsearch/v8latest连接es服务器&#xff08;不经过安全校验) cfg : elasticsearch.Config{Addresses: []string{"http://localhost:9200",}, } es, err : elasticsearch.NewClient(cfg) if err ! nil {pa…...

【东莞常平】戴尔R710服务器不开机维修分享

1&#xff1a;2025-02-06一位老客户的朋友刚开工公司ERP服务器一台戴尔老服务器故障无法开机&#xff0c;于是经老客户介绍找到我们。 2&#xff1a;服务器型号是DELL PowerEdge R710 这个服务器至少也有15年以上的使用年限了。 3&#xff1a;客户反馈的故障问题为&#xff1a;…...

rebase和merge

rebase 和merge区别&#xff1a; rebase变基&#xff0c;改变基底&#xff1a;rebase会抹去提交记录。 git pull 默认merge&#xff0c;git pull --rebase 变基 rebase C、D提交属于feature分支&#xff0c;是基于master分支&#xff0c;在B提交额外拉出来的&#xff0c;当…...

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现 目录 SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来&#xff08;优…...

2025牛客寒假算法基础集训营5(补题)

C 小L的位运算 显然&#xff0c;如果两次反置的价格小于等于交换的价格&#xff0c;那么直接全部反置就好了。 反之&#xff0c;由于交换一定低于两次反置&#xff0c;我们尽可能用交换来消去不正确的位置。不正确的位置类型只有00&#xff0c;01&#xff0c;10&#xff0c;11&…...

Kotlin Android 环境搭建

Kotlin Android 环境搭建 引言 随着移动应用的日益普及,Android 开发成为了一个热门的技术领域。Kotlin 作为一种现代的编程语言,因其简洁、安全、互操作性强等特点,被越来越多的开发者所喜爱。本文将详细介绍 Kotlin Android 环境搭建的步骤,帮助您快速上手 Kotlin Andr…...

DeepSeek图解10页PDF

以前一直在关注国内外的一些AI工具&#xff0c;包括文本型、图像类的一些AI实践&#xff0c;最近DeepSeek突然爆火&#xff0c;从互联网收集一些资料与大家一起分享学习。 本章节分享的文件为网上流传的DeepSeek图解10页PDF&#xff0c;免费附件链接给出。 1 本地 1 本地部…...

Kafka中的KRaft算法

我们之前的Kafka值依赖于Zookeeper注册中心来启动的&#xff0c;往里面注册我们节点信息 Kafka是什么时候不依赖Zookeeper节点了 在Kafka2.8.0开始就可以不依赖Zookeeper了 可以用KRaft模式代替Zookeeper管理Kafka集群 KRaft Controller和KRaft Leader的关系 两者关系 Lea…...

C++20新特性

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 C20 是 C 标准中的一个重要版本&#xff0c;引入了许多新特性和改进&#xff0c;包括模块&#xff08;Modules&#xff09;、协程…...

[LUA ERROR] bad light userdata pointer

Cocos2d项目&#xff0c;targetSdkVersion30&#xff0c;在 android 13 设备运行报错: [LUA ERROR] bad light userdata pointer &#xff0c;导致黑屏。 参考 cocos2dx 适配64位 arm64-v8a 30 lua 提示 bad light userdata pointer 黑屏-CSDN博客的方法 下载最新的Cocos2dx …...

Maven 安装配置(完整教程)

文章目录 一、Maven 简介二、下载 Maven三、配置 Maven3.1 配置环境变量3.2 Maven 配置3.3 IDEA 配置 四、结语 一、Maven 简介 Maven 是一个基于项目对象模型&#xff08;POM&#xff09;的项目管理和自动化构建工具。它主要服务于 Java 平台&#xff0c;但也支持其他编程语言…...

JAVA:CloseableHttpClient 进行 HTTP 请求的技术指南

1、简述 CloseableHttpClient 是 Apache HttpComponents 提供的一个强大 HTTP 客户端库。它允许 Java 程序与 HTTP/HTTPS 服务交互&#xff0c;可以发送 GET、POST 等各种请求类型&#xff0c;并处理响应。该库广泛用于 REST API 调用、文件上传和下载等场景。 2、特性 Close…...