基于STM32的温室大棚环境检测及自动浇灌系统设计

news2024/11/16 21:38:27

需要全部资料请私信我!

基于STM32的温室大棚环境检测及自动浇灌系统设计

    • 一、绪论
      • 1.1 研究背景及意义
      • 1.2 研究内容
      • 1.3 功能设计
    • 二、系统方案设计
      • 2.1 总体方案设计
    • 三、系统硬件设计
      • 3.1 STM32单片机最小系统
      • 3.2 环境温度检测电路设计
      • 3.3 土壤湿度检测电路设计
      • 3.4 光照强度检测电路设计
      • 3.5 水泵控制电路设计
      • 3.6 风扇控制电路设计
      • 3.7 灯光控制电路设计
    • 四、系统软件设计
      • 4.1 主程序设计
    • 五、系统调试
      • 5.1 系统硬件调试
      • 5.2 系统运行测试
    • 六、总结
    • 七、附录

一、绪论

1.1 研究背景及意义

在传统农业灌溉模式下,监测系统通常分为两种,一是通过人工检测获得,二则是通过有线检测系统获得,前者的人工成本高、劳动强度大,而效率却相对较低,后者则会面临有线传输时信号衰减、架设线路困难等问题。同时,传统的人工灌溉不仅浪费人力资源,而且无法精准把握土壤温湿度,一定程度上造成了灌溉不均匀与水资源的浪费。而智能灌溉系统的出现有效的解决了这一系列问题。

智能灌溉系统是将物联网技术与农业技术这两者相结合,其具有现代化的田间数据采集系统,对农田中的空气温度、土壤湿度、光照强度等环境参数做到工业级的精准捕获,更高效地管理农业流程,同时该系统具备一个自动的灌溉系统,该系统根据所收集的数据做出响应,大大提高了水资源的利用和农作物的产量和品质,实现了农业生产的智能化、网络化和精准化。为此,本文给出一种基于物联网的自动浇灌系统。

1.2 研究内容

随着物联网技术蓬勃发展,对传统的农业带来巨大的挑战和机遇,基于物联网的智能农业越受到关注。本课题针对智能农业自动浇灌问题,基于嵌入式处理器平台,利用传感器技术和物联网通信技术,设计一种基于物联网的自动浇灌系统。在设计中:
(1)运用电路、传感器、物联网通信等相关工程原理,对植物生长环境参数采集、处理和分析,结合经济、安全等非技术因素,给出系统设计解决方案;
(2)根据解决方案,实现环境参数的信号检测、水阀及光强控制、无线通信电路、嵌入式处理器最小系统以及人机交互接口电路等系统硬件设计;
(3)对数据处理、数据传输及信息显示等功能进行嵌入式代码化编程,实现系统软件设计和整体调试;

1.3 功能设计

本课题采用传感器技术和物联网技术,并结合嵌入式开发平台设计了一种自动浇灌系统。可以实现对农作物生长环境的实时监控,并通过收集光照、环境温度、土壤湿度等数据,结合设置好的适宜农作物生长的环境阈值,实现自动灌溉、补光、通风等功能,达到省工省水的目的,切实实现农业灌溉智能化,本课题具有很强的实用性及巨大的市场空间。
① 监测植物生长的土壤温湿度、光照强度、环境温度;
② 控制水阀、风扇、补光灯等设备工作;
③ 可用手机APP显示数据并控制设备。

二、系统方案设计

2.1 总体方案设计

本课题针对智能农业自动浇灌问题,基于嵌入式处理器平台,利用传感器技术和物联网通信技术,设计一种基于物联网的自动浇灌系统,系统总体方案框图如图:
在这里插入图片描述
浇灌系统由三个传感器模块、单片机最小系统、三个外部设备和蓝牙模块组成,其中单片机最小系统以STM32F103C8T6单片机为核心控制器,STM32单片机实现对各个外设模块总体控制,负责处理从传感器采集到的数据信息,从而对各类不同信息进行相关操作,控制各个外设实现相关的功能。
外设模块其中包含温度检测模块,用于检测当前环境的温度;土壤湿度检测模块,用于获取当前土壤湿度;供电电路,给整个主机部分供电;水泵继电器,若土壤湿度小于湿度阈值,水泵继电器闭合,若土壤湿度小于土壤温度阈值,水泵继电器打开;风扇模块,继电器控制步进电机控制风扇闭合;显示模块,显示检测到的环境温度、土壤湿度、光照强度和设置的阈值;蓝牙模块,将检测到的数据通过该模块发送给移动端,也可通过该模块在移动端设置阈值。

三、系统硬件设计

3.1 STM32单片机最小系统

本次浇灌系统设计中,STM32单片机最小系统由单片机芯片STM32F103C8T6、晶振电路、复位电路、电源电路等部分组成。其原理图设计如图3.1所示。
单片机芯片选用STM32F103C8T6,该芯片是一款基于ARM Cortex-M内核STM32系列的32位的微控制器,其程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。计算性能方面卓越,出错率小、具有灵活的中断管理功能,价格适中。STM32F103C8T6广泛应用于电子设备中,具有复杂控制和算法的处理器。它的主要功能包括模拟数字转换(ADC)、定时器和中断控制器(TIM)、串行通信接口(USART)等功能。此外,它还拥有许多具有创新性和高性能的特性,如高速I/O端口、嵌入式硬件分支预测等,是一款成本低、功能强大的单片机芯片。
在这里插入图片描述

3.2 环境温度检测电路设计

环境温度传感器DS18B20模块测量农田周围环境的温度,模块具有3个引脚,其中两个分别接VCC和GND,最后一个引脚与单片机I/O口相连,传输数据。其原理图设计如图:
在这里插入图片描述
DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如不锈钢套管封装、TO-92封装和小轴DIP封装等,本次系统设计采用小轴DIP封装,此封装可适用于露天环境中温度较高的情况,契合农田环境的温度测量应用。本设计中封装后的DS18B20可用于检测农田环境的温度,工作精度较高,耐磨耐碰,体积小,使用方便,适用于各种狭小空间设备数字测温和控制领域。

3.3 土壤湿度检测电路设计

土壤湿度传感器YL-69模块检测盆栽的土壤湿度。YL-69是一个简单的土壤湿度传感器,是一种电容式传感器,主要使用的是湿敏电容。当环境的湿度发生改变时,会使得湿敏电容存在的环境中的介质发生改变,导致湿敏电容中的电容数值产生变化,电容的数值正比于湿度值。由于湿敏电容的灵敏度高、响应速度快、滞后量小,此外微小的体积、极低的功耗,使得湿敏电容很容易小型化和集成化。YL-69 采用CMOS工艺,可以确保其低功耗,同时还具有很高的可靠性和稳定性。传感器内部含有一个电容性聚合体湿度敏感元件和一个用能隙材料做成的温度传感器,在同一芯片上,与A/D转换器及串行接口电路实现连接。其原理图设计如图
在这里插入图片描述

3.4 光照强度检测电路设计

光照强度传感器模块检测农田中农作物所受到的光照强度。该模块选用光敏电阻5528,其原理图设计如图:
在这里插入图片描述
5528光敏电阻是一种基于半导体材料的光敏元件,其工作原理是通过外界光照强度对器件内部半导体材料的电荷载流子密度进行影响,从而改变器件的电阻值。当光照强度增加时,载流子密度增加,电阻值降低;反之,当光照强度减小时,载流子密度减小,电阻值升高。即通过不同阻值的电流来检测光照强度,测量光照强度范围为0-65535lx。

3.5 水泵控制电路设计

本系统的浇灌部分由一个JDQ-5继电器、小型抽水泵与驱动电路组成。在这个电路中,继电器JDQ-5用于控制外部高功率电器或电磁设备。将JDQ-5的控制电压与单片机的工作电压保持一致,即将JDQ-5的控制电压引脚与单片机的5V电源相连。当单片机输出的IO口电流较小时,无法直接驱动继电器,需要使用三极管等驱动器件进行缓冲放大,此时三极管型号选用S8050三极管,其是一款小功率NPN型硅管,集电极-基极电压最大可为40V,集电极电流为0.5A。当GPIO输出高电平时,NPN三极管导通,继电器线圈得到5V的供电,继电器吸合,触点闭合;当GPIO输出低电平时,NPN三极管截止,继电器线圈断电,继电器释放,触点断开。其原理图设计如图3.5所示。
在这里插入图片描述

3.6 风扇控制电路设计

本系统风扇模块部分由JDQ-5继电器、风扇和驱动电路组成,步进电机带动风扇旋转,其工作原理与上述水泵控制电路相似,原理图设计如图
在这里插入图片描述

3.7 灯光控制电路设计

本系统灯光模块部分由JDQ-5继电器、补光灯和驱动电路组成,继电器控制农田环境是否需要补光,其工作原理与上述水泵控制电路相似,原理图设计如图
在这里插入图片描述

四、系统软件设计

自动浇灌系统软件设计通过单片机核心控制,将采集到的环境温度、土壤湿度、光照强度实时显示在LCD1602液晶屏上,并将农田环境中的各项参数设定正常范围值,单片机核心控制器对数据进行分析处理后,若环境参数超出设定范围,则控制各模块运行;同时将检测到的数据通过无线通信模块传送到手机APP上,使手机也可以实时显示农田环境的数据,同时也可通过手机APP进行远程控制。

4.1 主程序设计

本次设计的自动浇灌系统将实现以下功能:采集农田生长环境中的温度、土壤湿度、光照强度,将采集到的数据显示在屏幕上,并通过无线通信模块将数据传输到手机APP上。若环境温度高于所设置的阈值,则打开风扇制冷,降低环境温度;若土壤湿度低于阈值,则打开水泵模块,抽水增加土壤湿度,使农作物处于适宜的土壤环境中;若光照强度低于阈值,则打开补光灯对环境进行补光。系统主程序设计流程图如图
在这里插入图片描述

五、系统调试

5.1 系统硬件调试

通过对浇灌系统的硬件进行调试,来检验系统的硬件电路能否正确地工作,具体包括以下五个部分:
(1)检查电路:组装好的电路要在通电之前仔细检查电路连线是否有错误,对照原理图按一定的顺序逐级检查。特别要注意电源与地是否有短路问题,集成电路和晶体管的引脚是否接错,轻轻拨动元器件观察其是否焊接牢固,以及能否实现期望的性能。确认后可以进行下一步骤。
(2)通电观察:上电前一定要调试好所需要的电源电压值,并确定电路板电源端没有短路现象后给电路通电,上电后先观察是否有异常现象,如冒烟、放电的声光、元器件发烫、异常气味等,如果有以上情况要立即切断电源,待排除故障后重新接通电源,随后测量每个集成块的电源引脚电压是否正常,以保证集成电路是否已通电工作。
在这里插入图片描述
(3)静态调试:不加入输入信号的情况下测量各级直流工作电压和电流是否正常。一般对晶体管和集成电路进行静态工作点调试。
(4)动态调试:加入输入信号观察电路输出信号是否符合要求,即各个传感器模块是否能正常工作。
(5)整体指标测试:对本次课题设计要求的计数指标进行测试并对测试数据进行分析,最后得出测试结论,以确定电路的技术指标是否符合设计要求。

5.2 系统运行测试

系统运行测试的目的在于处理整个系统在实际操作中发生的一些问题,如逻辑上的差错,以及对最后的结果与所期望的结果的一致性进行判定。在完成了硬件和软件的测试之后,就可以将该程序放入 MCU 进行调试。程序通电后,每个传感器模块开始正常工作,无线传输模块、LCD1602显示模块、风扇模块以及补光灯模块的工作现象如图5.7,5.8,5.9,5.10所示。
无线传输模块:单片机将数据通过蓝牙模块传输到手机APP上,此时手机APP可以实时监测农田的环境参数(光照强度5%,环境温度25℃,土壤湿度57%),且手机APP所显示的数据与LCD1602液晶显示屏中的数据一致。由下图APP界面可见,可通过手机APP设置农田环境参数的初始阈值,并可以控制或切换外部设备的工作状态,实现远程操控。
在这里插入图片描述
显示模块:单片机将传感器采集到的农田环境数据进行分析和处理后显示在LCD1602液晶屏上,实现农田环境参数的实时显示。
在这里插入图片描述
风扇模块:单片机将温度传感器DS18B20采集到的数据经过分析和处理后与提前设定的阈值相比,下图显示的是传感器捕获到的环境温度高于设定的阈值,此时风扇打开进入工作状态,当环境温度下降到适宜农作物生长的阈值时,风扇自动关闭。
在这里插入图片描述
补光灯模块:单片机将光敏电阻5528采集到的数据经过分析和处理后与提前设定的阈值相比,下图显示的是通过光敏电阻捕获到的光照强度低于设定的阈值,此时补光灯打开进入工作状态,当光照强度达到阈值时,补光灯会自动关闭。
在这里插入图片描述

六、总结

本次自动浇灌系统通过传感器对农作物生长环境中的环境温度、土壤湿度、光照强度等信息进行收集,通过单片机核心控制器对采集到的数据进行分析和处理,实现对农作物生长环境的实时监测,并判断是否需要开启控制模块来将农田环境调整到农作物生长最适宜的环境条件。最后,蓝牙HC-06模块将传感器采集到的环境参数发送到手机APP上,在手机APP上实时显示数据,也可以通过手机APP实现对各控制模块的远程操控。
本次设计的自动浇灌系统虽然已普遍实现了所需的功能,但仍在较多方面存在不足,例如极寒露天环境时无法使农田环境升温来保证农作物处在适宜的生长条件下,且系统捕获的农田环境参数会存在误差,进而影响浇灌效果。另外浇灌系统与移动端的连接不是非常稳定,可能会导致系统故障或停机。针对以上问题,我会在之后的时间里挑选合适的加热设备投入应用,对比其他传感器选取更为精准的来替换,保证数据的准确性。并精进自己的无线传输技术,实现浇灌系统与移动端的稳定连接。

七、附录

PCB设计:
在这里插入图片描述
部分代码:

#include "sys.h"
#include "adc.h"
#include "delay.h"
#include "lcd1602.h"
#include "ds18b20.h"
#include "timer.h"
#include "gpio.h"
#include "usart1.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

#define STM32_RX1_BUF       Usart1RecBuf 
#define STM32_Rx1Counter    RxCounter
#define STM32_RX1BUFF_SIZE  USART1_RXBUFF_SIZE

unsigned int  light=0;
unsigned char temperature=0;
unsigned char setTempValue=35;        //温度设置值
unsigned int  setSoilMoisture=10;
unsigned char setLightValue=20;       //光照设置值
unsigned int  soilMoisture;           //土壤湿度

bool usart_send_flag = 0;
bool mode = 0;               //0是自动模式,1是手动模式
bool shuaxin  = 0;
bool shanshuo = 0;
bool sendFlag = 1;

unsigned char setn=0;//记录设置键按下的次数

void displayLight(void)//显示光照
{
		u16 test_adc=0;
	
	  /获取光线值
	  test_adc = Get_Adc_Average(ADC_Channel_8,10);//读取通道9的5次AD平均值
		light = test_adc*99/4096; //转换成0-99百分比
		light = light >= 99? 99: light; //最大只能到百分之99
	  if(light<=setLightValue && shanshuo)
		{
			  LCD_Write_Char(3,1,' '); 
				LCD_Write_Char(4,1,' '); 
		}
		else
		{
				LCD_Write_Char(3,1,light/10+'0'); 
				LCD_Write_Char(4,1,light%10+'0'); 
		}
}

void displaySoilMoisture(void)//显示土壤湿度
{

	   soilMoisture =100- (Get_Adc_Average(ADC_Channel_9,10)*100/4096);

		if(soilMoisture > 99)soilMoisture = 99;        //最大取百分之99

		 if(soilMoisture<=setSoilMoisture && shanshuo)
		{
			 LCD_Write_Char(9,0,' '); 
			 LCD_Write_Char(10,0,' ');
		}
		else
		{
			 LCD_Write_Char(9,0,soilMoisture/10+'0'); 
			 LCD_Write_Char(10,0,soilMoisture%10+'0');
		}
}

void displayTemperature(void)//显示温度
{
		temperature=ReadTemperature();
	  if(temperature>=setTempValue && shanshuo)
		{
			 LCD_Write_Char(12,1,' '); 
			 LCD_Write_Char(13,1,' ');
		}
		else
		{
			 LCD_Write_Char(12,1,temperature/10+'0'); 
			 LCD_Write_Char(13,1,temperature%10+'0');
		}
}

void displaySetValue(void)
{
		if(setn == 1)
		 {
				LCD_Write_Char(7,1,setSoilMoisture/10+'0'); 
			  LCD_Write_Char(8,1,setSoilMoisture%10+'0');
		 }
		 if(setn == 2)
		 {
				LCD_Write_Char(7,1,setTempValue/10+'0'); 
			  LCD_Write_Char(8,1,setTempValue%10+'0');
		 }
		 if(setn == 3)
		 {
				LCD_Write_Char(7,1,setLightValue/10+'0'); 
			  LCD_Write_Char(8,1,setLightValue%10+'0');
		 }
}

void keyscan(void)
{
	if(KEY1 == 0) //模式切换按键
	{
	 	delay_ms(10); //消抖
		if(KEY1 == 0)
		{
		 	while(KEY1 == 0); //等待按键松开
			BEEP=0;
			setn ++;
			 if(setn == 1)
			 {
					LCD_Write_String(0,0,"set the Moisture");//显示字符串
					LCD_Write_String(0,1,"       00%      ");
			 }
			 if(setn == 2)
			 {
					LCD_Write_String(0,0,"  set the Temp  ");//显示字符串
					LCD_Write_String(0,1,"       00 C     ");
				  LCD_Write_Char(9,1,0xdf);
			 }
			 if(setn == 3)
			 {
					LCD_Write_String(0,0,"  set the Light ");//显示字符串
					LCD_Write_String(0,1,"       00%      ");
			 }
			 if(setn == 4)
			 {
					LCD_Write_String(0,0,"  set the mode  ");//显示字符串
					LCD_Write_String(0,1,"       ZD       ");
				  if(mode==0)LCD_Write_String(7,1,"ZD");else LCD_Write_String(7,1,"SD");
			 }
			 displaySetValue();
			 if(setn >= 5)
			 {
					setn = 0;
				  LCD_Write_String(0,0,"Moisture:  %    ");//显示字符串
					LCD_Write_String(0,1,"Gx:  % Temp:   C");
					LCD_Write_Char(14,1,0xdf);
				  if(mode==0)LCD_Write_String(13,0,"ZD");else 

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

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

相关文章

MySQL的事务机制

一、事务机制简述 事务机制,避免写入直接操作数据文件&#xff1b;利用日志来实现间接写入&#xff0c;与事务有关的, redo日志与undo日志&#xff1b;sql语句操作记录复制到undo日志然后增删改查操作的结果会记录在redo日志&#xff0c;如果操作没有什么问题就把数据同步到数…

Linux 抓包还不会?这篇文章赶紧收藏!

前言 什么是TCPDUMP TCPdump&#xff0c;全称dump the traffic on a network&#xff0c;是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具。 tcpdump可以支持的功能&#xff1a; 1、在Linux平台将网络中传输的数据包全部捕获过来进行分析 …

k8s-调度 13

调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。 kube-scheduler 是 Kubernetes 集群的默认调度器&#xff0c;并且是集群控制面的一部分。 如果你真的希望或者有…

分享一款刚开源的音乐人声分离工具!无需联网!页面化操作!

前言 人声分离 是一项重要的音频处理技术&#xff0c;它可以将混合音频中的 人声和背景音乐 分离出来&#xff0c;为音频处理和后期制作提供了便利。 随着人声分离技术的发展&#xff0c;越来越多的开源工具被开发出来&#xff0c;为音频处理领域带来了新的发展机遇。小编之前…

C# 图解教程 第5版 —— 第21章 异步编程

文章目录 21.1 什么是 异步21.2 async/await 特性的结构21.3 什么是异步方法21.3.1 异步方法的控制流21.3.2 取消一个异步操作21.3.3 在调用方法中同步地等待任务21.3.4 在异步方法中异步地等待任务21.3.5 Task.Delay 方法 21.4 GUI 程序中的异步操作&#xff08;*&#xff09;…

倒L天线设计

λ/4单极子天线具有工作带宽较宽&#xff0c;辐射效率较高的优点&#xff0c;但是其体积较大&#xff0c;随着无线终端设备的体积越来越小&#xff0c;对天线空间的要求也越来越严格&#xff0c;于是为了适应终端设备的发展&#xff0c;单极子天线开始出现一些变形&#xff0c;…

基于Python实现身份证信息识别

目录 前言身份证信息识别的背景与意义自动识别身份证的需求 实现环境与工具准备Python编程语言OpenCV图像处理库Tesseract OCR引擎 身份证信息识别算法原理图像预处理步骤(图像裁剪、灰度化 、二值化、去噪)信息提取与解析 Python代码实现通过OCR提取身份证号码代码解析身份证信…

SQL-修改数据

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

计算机毕业设计 | SSM 校园线上订餐系统(附源码)

1&#xff0c; 概述 1.1 项目背景 传统的外卖方式就是打电话预定&#xff0c;然而&#xff0c;在这种方式中&#xff0c;顾客往往通过餐厅散发的传单来获取餐厅的相关信息&#xff0c;通过电话来传达自己的订单信息&#xff0c;餐厅方面通过电话接受订单后&#xff0c;一般通…

【博士每天一篇论文-综述】Brain Inspired Computing : A Systematic Survey and Future Trends

阅读时间&#xff1a;2023-11-17 1 介绍 年份&#xff1a;2023 作者&#xff1a;李国琪 期刊&#xff1a;TechRxiv 引用量&#xff1a;2 这篇论文主要介绍了脑启发计算&#xff08;Brain Inspired Computing&#xff0c;BIC&#xff09;以及其在人工智能&#xff08;Artifici…

MySQL安装服务启动失败解决方案

在安装MySQL中&#xff0c;应用配置阶段&#xff0c;显示服务启动失败 查看日志说服务启动失败 我的电脑是win764位 新装的操作系统&#xff0c;之前出现过权限不足的提示&#xff0c;首先定位故障为权限问题。由于MySQL80服务在 计算机管理->服务 里面显示户别为&#xff…

ubuntu20固定串口名称

查看串口的详细信息 udevadm info --name/dev/ttyUSB0结果&#xff1a; P: /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0/tty/ttyUSB0 N: ttyUSB0 L: 0 S: serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UAR…

机器人持续学习基准LIBERO系列4——robosuite最基本demo

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新 1.robosuite的相关资料 是基于MuJoCo的机器人学习方针环境&#xff0c;提供一套基准环境…

2024.1.8 Day04_SparkCore_homeWork

目录 1. 简述Spark持久化中缓存和checkpoint检查点的区别 2 . 如何使用缓存和检查点? 3 . 代码题 浏览器Nginx案例 先进行数据清洗,做后续需求用 1、需求一&#xff1a;点击最多的前10个网站域名 2、需求二&#xff1a;用户最喜欢点击的页面排序TOP10 3、需求三&#x…

2024年最好用的简历编辑工具,助你腾飞职业生涯!

随着科技的不断发展&#xff0c;求职竞争也愈发激烈。在2024年&#xff0c;如何在众多求职者中脱颖而出成为关键问题。为了帮助大家在职业生涯中取得更好的机会&#xff0c;特别推荐一款在2024年最为出色的简历编辑工具——芊芊简历。 1. 创新的编辑功能 芊芊简历拥有直观易用…

Matlab 使用 DH table 建立的 robot 和实际不符

机器人仿真 想借助 matlab robotics toolbox 来仿真机器人&#xff0c;但是直接输入自己的 DH table 显示出来的 robot 和实际不情况不符。 DH table 建立 robot Build Manipulator Robot Using Kinematic DH Parameters 主要使用 setFixedTransform&#xff0c;DH table 中…

YOLOV7剪枝流程

YOLOV7剪枝流程 1、训练 1&#xff09;划分数据集进行训练前的准备&#xff0c;按正常的划分流程即可 2&#xff09;修改train.py文件 第一次处在参数列表里添加剪枝的参数&#xff0c;正常训练时设置为False&#xff0c;剪枝后微调时设置为True parser.add_argument(--pr…

POI:对Excel的基本写操作 整理1

首先导入相关依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><!--xls(03)--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version></depend…

鸿蒙Harmony--状态管理器-@Observed装饰器和@ObjectLink装饰器详解

经历的越多&#xff0c;越喜欢简单的生活&#xff0c;干净的东西&#xff0c;清楚的感觉&#xff0c;有结果的事&#xff0c;和说到做到的人。把圈子变小&#xff0c;把语放缓&#xff0c;把心放宽&#xff0c;用心做好手边的事儿&#xff0c;该有的总会有的! 目录 一&#xff…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)在TcpConnection 中接收并解析Http请求消息

一、在TcpConnection 中多添加和http协议相关的request和response struct TcpConnection {struct EventLoop* evLoop;struct Channel* channel;struct Buffer* readBuf;struct Buffer* writeBuf;char name[32];// http协议struct HttpRequest* request;struct HttpResponse* r…