毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式

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

文章目录

  • 0 前言
  • 1 项目背景
  • 2 设计思路
  • 3 硬件设计
  • 4 软件设计
  • * 4.1 核心PID控制
    
    • 4.2 直立控制程序设计
    • 4.3 速度控制程序设计
    • 4.4 方向控制程序设计
    • 4.5 关键代码
  • 5 最后

0 前言

🔥
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 基于stm32的智能平衡小车

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:4分
  • 创新点:4分

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32

🥇 项目分享:见文末!

1 项目背景

随着机器人研究的进一步深入,在工业生产、安防系统、智能家居、物流网等领域的应用更加广泛,在实际应用中,可能遇到复杂的任务环境。相比多轮的轮式机器人,两轮自平衡机器人体积小,运动灵活,能够在比较狭窄、需要大转角的场合中运动[1]。这种机器人两轮共轴,可以通过运动保持自身平衡,能实现前进、后退、转向、原地静止等基本运动功能,由于其结构特殊,能适应不同的地形环境,研究两轮自平衡机器人,具有重要的意义。

其次,两轮自平衡车还可以作为代步交通工具。相比传统的代步工具如自行车、电动车等,两轮自平衡车体积大幅减小,重力大幅减。运动灵活,绿色环保。

2 设计思路

从控制的角度来看,电机是系统唯一的控制对象。车模运动控制任务可以分解成以下三个基本控制任务:

(1) 直立控制任务:车模的倾角作为控制的输入量,使用PD算法,控制车模稳定在平衡位置。

(2)
速度控制任务:直立车模的速度控制与普通的车模速度控制不同,在直立系统中,速度控制是通过改变车模倾角来完成的。具体实施思路是,对电机转速加入干扰,使车身偏离平衡位置,以此刺激直立控制任务,从而达到控制速度的目的,速度控制使用PI算法。

(3) 方向控制任务:通过控制两个电机的差速来达到转向的目的,方向控制使用PD算法,使用X轴的角速度作为微分项的因子,可以极大改善转向的动态性能,避免振荡。

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32

3 硬件设计

该小车学长采用一个主控电路板+一个电机驱动电路板的结构,将两者分开设计,一是可以避免电机驱动对主控的影响及电磁干扰,二是出于经济的考虑。

主控电路板主要包括以下部分:微控制器电路、电源管理电路、微控制器接口、按键电路、蜂鸣器电路。其中,电源管理电路分为3.3V电源管理电路和5V电源管理电路,5V管理电路使用LM2940三端线性稳压器,输入7.2V电池电压,输出5V电压。3.3V管理电路使用LM1117三端线性稳压器,输入接LM2940的5V电压,输出3.3V电压。考虑到本系统中器件、传感器较多,因此5V管理电路和3.3V管理电路均使用两个。微控制器接口主要包括:OLED接口、蓝牙接口、MMA7361传感器接口、L3G4200D传感器接口、编码器正交解码接口2个、四通道PWM接口、遥控器解码接口,以及预留IO,方便调试使用。

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32
原理图

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32

4 软件设计

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32

4.1 核心PID控制

在自动控制中,按照偏差(目标值与反馈值之差)的比例§、积分(I)、微分(D)的组合进行控制的方法称为PID控制算法,由于其原理简单、稳定性好、可靠性高、易于调整等优点,在自动控制领域应用最为广泛,已有近70年历史,现有的很多控制方法都是基于PID控制算法发展演变而来。当我们对目标系统和控制对象的模型不够了解,或者不能得到控制系统的参数时,PID控制算法尤为适用。

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32

1)比例控制部分:成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器立即产生控制作用以减小偏差,其控制作用最为明显。

2)积分控制部分:积分控制作用的强弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之则越强。积分控制主要用于消除静差,提高系统的无差度。

3)微分控制部分:微分控制的计算因子是偏差的变化率,能够抑制偏差的变化,并偏差的值变得太大之前,引入一个早期修正量,达到加快系统响应调节速度的目的。积分控制可以提高系统的动态性能,提高反应速度,克服振荡。

PID控制算法的计算结果是偏差信号的比例、积分、微分三部分的线性叠加,偏差值e(t)即目标值r(t)与反馈值c(t)的差,属于闭环控制系统,因此需要使用传感器构成反馈回路。

4.2 直立控制程序设计

车模平衡控制需要负反馈,就需要能够测量车体的倾角,构成反馈回路。在能够测量倾角的情况下,设定目标平衡角度,使用PID算法进行闭环控制。因为车体只会在一个的方向上运动,只存在一个维度的倾斜,因此只需要测量一个维度的倾角,然后控制轮子转动,抵消车体在该维度上的倾斜,就可以完成平衡控制

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32

算法流程

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32

关键代码


​ void Angle_Calculate()
​ {
​ int16_t AngleControlOut_P,AngleControlOut_D;
​ angle_Accel = (A_Z-AZ_ZERO);
​ angle_Accel*=0.0039f;
​ angle_Accel = asin(angle_Accel);
​ angle_Accel*=500;
​ Gyro_Now = (T_Y-TY_OFFSET) * TY_Ratio;
​ Erjie_Lvbo(angle_Accel,Gyro_Now);
​ if(FilterSwitch0) myfilter=QingHua_AngleCalaulate;
​ else if(FilterSwitch
1) myfilter=Yijie_Lvbo;
​ else if(FilterSwitch2) myfilter=Erjie_Lvbo;
​ else if(FilterSwitch
3) myfilter=Kalman_Filter;
​ if(FilterSwitch==3)
​ {
​ myfilter(angle_Accel,Gyro_Now);
​ ZL.error=angle_now_kal-(Balance_Point);
​ }
​ else
​ {
​ myfilter(angle_Accel,Gyro_Now);
​ ZL.error=angle_now-(Balance_Point);
​ }
​ AngleControlOut_P=-(int16_t)(ZL.PZL.error);
​ AngleControlOut_D=-(int16_t)(ZL.D
Gyro_Now);
​ if(AngleControlOut_D>500) AngleControlOut_D=500;//对微分项限幅
​ else if(AngleControlOut_D<-500) AngleControlOut_D=-500;
​ AngleControlOut=AngleControlOut_P+AngleControlOut_D;
​ if(AngleControlOut>800) AngleControlOut=800;
​ else if(AngleControlOut<-800) AngleControlOut=-800;
​ }

4.3 速度控制程序设计

直立车模的速度控制方法与普通车模的速度控制方法不同,因为普通车模的电机只需要控制转动,而直立车模的电机输出是平衡控制、速度控制、方向控制三部分之间的叠加。

因为直立系统的首要任务是保持直立,当车模倾角发生改变,车模就会在直立控制的作用下向倾斜方向运动。速度控制就是利用了直立系统的这种特性

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32


​ void Speed_Calculate()
​ {

​ SP.goal=(t1-t1_mid)/10;
​ if(SP.goal>50) SP.goal=50;
​ else if(SP.goal<-30) SP.goal=-30;

SpeedControlOut_Old=SpeedControlOut;
SP.error=(SP.goal)-(Speed_L+Speed_R)/2;
SP.error_sum+=SP.error;
if(SP.error_sum>200) SP.error_sum=200;//积分限幅
else if(SP.error_sum<-200) SP.error_sum=-200;
SpeedControlOut=-(int16_t)((SP.P)SP.error+SP.ISP.error_sum);
if(SpeedControlOut>300) SpeedControlOut=300;//速度环输出限幅
else if(SpeedControlOut<-300) SpeedControlOut=-300;
}

4.4 方向控制程序设计

直立车模的转向是通过两轮的差速来完成的,转向控制使用PD算法,本系统不具备自主识别路径的功能,因此PD算法的输入参数使用遥控器完成。为了改善转向的动态特性,避免振荡,对PD算法做了修改,微分项的因子不再使用传统的e(t)-e(t-1),而是使用陀螺仪的X轴,因为陀螺仪输出灵敏度更高

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32


​ void Direction_Calculate(int16_t bias)
​ {
​ DIR.last_error=DIR.error;
​ DIR.error=bias/6-dmp_yaw;
​ DIR.error_sum+=DIR.error;
​ if(DIR.error_sum>2000) DIR.error_sum=2000;
​ else if(DIR.error_sum<-2000) DIR.error_sum=-2000;
​ DirectionControlOut_Old=DirectionControlOut;
​ DirectionControlOut = DIR.PDIR.error
​ + DIR.I
DIR.error_sum
​ + DIR.D*(T_X-TX_OFFSET);


​ DirectionControlOut_Old=DirectionControlOut;
​ DirectionControlOut=bias*0.15f;
​ if(DirectionControlOut>300) DirectionControlOut=300;
​ else if(DirectionControlOut<-300) DirectionControlOut=-300;
​ }

互补滤波法调试结果

毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式,开源,单片机,stm32

4.5 关键代码


​ int main()
​ {
​ uint8_t dirswitchtemp,spswitchtemp;
​ SmartCar_Init();
​ while(1)
​ {
​ VisualScope_Out();
​ while(DMA_IsMajorLoopComplete(HW_DMA_CH2));

​ if(StandUp_Flag1&&IS_RUNNING0)
​ {
​ dirswitchtemp=DirectionControlSwitch;//保存之前的开关
​ spswitchtemp =SpeedControlSwitch;
​ DirectionControlSwitch=0;
​ SpeedControlSwitch=0;
​ ZL.P*=1.5f;
​ ZL.D*=1.5f;
​ DelayMs(500);
​ Motor_Enable();
​ IS_RUNNING=1;//将小车运行标志置位
​ DelayMs(500);
​ StandUp_Flag=0;
​ DelayMs(1000);
​ ZL.P/=1.5f;
​ ZL.D/=1.5f;
​ SpeedControlSwitch=dirswitchtemp;
​ DirectionControlSwitch=dirswitchtemp;
​ }
​ }
​ }

void PIT0_ISR()
{
static uint16_t FindZeroIndex=0;
systime_speed++;//速度控制节拍+1
systime_direction++;//方向控制节拍+1
ADC_GetDataAndFilter();
Angle_Calculate();
//Yaw_Calculate();
if(systime_direction5)
{
//HMC_angle=Get_Angle();
systime_direction=0;
Dr_Smooth=0.2;
Direction_Calculate(t2-t2_mid);
}
if(systime_speed
20)
{
systime_speed=0 ;
GPIO_ToggleBit(HW_GPIOE,26);//闪烁
Sp_Smooth=0.05;//重置平滑系数
Get_Speed();
Speed_Calculate();
}
if(FindZeroFlag)
{
FindZeroIndex++;
if(FindZeroIndex>=400)//说白了按下键之后两秒才开始记录数据
{
GYROY_SUM+=T_Y;
GYROX_SUM+=T_X;
if(FindZeroIndex>=499)
{
FindZeroFlag=0;//次数够了,清标志位
FindZeroIndex=0;
TY_OFFSET=GYROY_SUM0.01f;
TX_OFFSET=GYROX_SUM
0.01f;
GYROX_SUM=0;
GYROY_SUM=0;
}
}
}
Motor_Output();
}


​ void SmartCar_Init()
​ {
​ DelayInit();
​ /Debug_初始化/
​ /主要是DMP用到了printf**/
​ UART_QuickInit(UART3_RX_PE05_TX_PE04,115200);
​ UART_SelectDebugInstance(HW_UART3);
​ //LED初始化,用作系统运行指示*//
​ GPIO_QuickInit(HW_GPIOE,26,kGPIO_Mode_OPP);
​ GPIO_SetBit(HW_GPIOE,26);
​ /OLED初始化******/
​ OLED_Init();
​ //模拟加速度计陀螺仪初始化***/

​ GPIO_QuickInit(MMA7361_EN,kGPIO_Mode_OPP);
​ GPIO_SetBit(MMA7361_EN); //使能MMA7361
​ ADC_QuickInit(ADC_ACCEL_Z,kADC_SingleDiff10or11);//单端12位输入
​ //IIC及L3G4200D\HMC5883初始化****//
​ I2C_QuickInit(I2C0_SCL_PD08_SDA_PD09,I2C_SPEED);
​ L3G4200D_Init();


​ CT_IIC_Init();
​ while(mpu_dmp_init())
​ {
​ OLED_P8x16Str(0,0,“DMP Error”);
​ OLED_P8x16Num(0,0,mpu_dmp_init());
​ DelayMs(200);
​ }
​ OLED_P8x16Str(0,0,“DMP OK!”);
​ /**DMP数据输出中断/
​ GPIO_QuickInit(HW_GPIOE,4,kGPIO_Mode_IFT); //DMP输出输出中断
​ GPIO_CallbackInstall(HW_GPIOE,GPIOE_ISR);
​ GPIO_ITDMAConfig(HW_GPIOE,4,kGPIO_IT_FallingEdge,true);
​ /PWM初始化
/
​ FTM_PWM_QuickInit(FTM0_CH0_PC01,kPWM_EdgeAligned,10000);
​ FTM_PWM_QuickInit(FTM0_CH1_PC02,kPWM_EdgeAligned,10000);
​ FTM_PWM_QuickInit(FTM0_CH2_PC03,kPWM_EdgeAligned,10000);
​ FTM_PWM_QuickInit(FTM0_CH3_PC04,kPWM_EdgeAligned,10000);

​ FTM_PWM_ChangeDuty(FTM_PWM_LEFT,0);
​ FTM_PWM_ChangeDuty(FTM_PWM_LEFT_,0);
​ FTM_PWM_ChangeDuty(FTM_PWM_RIGHT,0);
​ FTM_PWM_ChangeDuty(FTM_PWM_RIGHT_,0);
​ /FTM正交解码初始化/
​ /*初始化位 脉冲-方向型编码器/
​ FTM_QD_QuickInit(FTM1_QD_PHA_PB00_PHB_PB01,kFTM_QD_NormalPolarity,kQD_CountDirectionEncoding);
​ FTM_QD_QuickInit(FTM2_QD_PHA_PB18_PHB_PB19,kFTM_QD_NormalPolarity,kQD_CountDirectionEncoding);

GPIO_QuickInit(DIR_LEFT,kGPIO_Mode_IFT);//左边编码器方向角设置为悬空输入
GPIO_QuickInit(DIR_RIGHT,kGPIO_Mode_IFT);//右边编码器方向角设置为悬空输入
//**************串口初始化/
UART_QuickInit(UART4_RX_PE25_TX_PE24,115200);
UART_ITDMAConfig(HW_UART4,kUART_DMA_Tx,true);
UART_DMASendConfig(HW_UART4,HW_DMA_CH2);
//**********按键中端配置/
GPIO_QuickInit(KEY_GPIO,KEY_OK,kGPIO_Mode_IPU);
GPIO_QuickInit(KEY_GPIO,KEY_UP,kGPIO_Mode_IPU);
GPIO_QuickInit(KEY_GPIO,KEY_DOWN,kGPIO_Mode_IPU);
GPIO_QuickInit(KEY_GPIO,KEY_LEFT,kGPIO_Mode_IPU);
GPIO_QuickInit(KEY_GPIO,KEY_RIGHT,kGPIO_Mode_IPU);

    GPIO_CallbackInstall(KEY_GPIO,GPIOA_ISR);//按键中断回调函数
    GPIO_ITDMAConfig(KEY_GPIO,KEY_OK,kGPIO_IT_FallingEdge,true);
    GPIO_ITDMAConfig(KEY_GPIO,KEY_UP,kGPIO_IT_FallingEdge,true);
    GPIO_ITDMAConfig(KEY_GPIO,KEY_DOWN,kGPIO_IT_FallingEdge,true);
    GPIO_ITDMAConfig(KEY_GPIO,KEY_LEFT,kGPIO_IT_RisingEdge,true);
    GPIO_ITDMAConfig(KEY_GPIO,KEY_RIGHT,kGPIO_IT_FallingEdge,true);
		    //*************解码通道配置****************/  
		GPIO_QuickInit(HW_GPIOD,12,kGPIO_Mode_IFT);				
 		GPIO_QuickInit(HW_GPIOD,13,kGPIO_Mode_IFT);
		GPIO_QuickInit(HW_GPIOD,14,kGPIO_Mode_IFT);
    
    GPIO_CallbackInstall(HW_GPIOD,GPIOD_ISR);
    GPIO_ITDMAConfig(HW_GPIOD,12,kGPIO_IT_RisingFallingEdge,true);
	  GPIO_ITDMAConfig(HW_GPIOD,13,kGPIO_IT_RisingFallingEdge,true);
		GPIO_ITDMAConfig(HW_GPIOD,14,kGPIO_IT_RisingFallingEdge,true);
    //*****************PIT定时中断初始化*****************/
    PIT_QuickInit(HW_PIT_CH0,3000);
    PIT_ITDMAConfig(HW_PIT_CH0,kPIT_IT_TOF,true);
    PIT_CallbackInstall(HW_PIT_CH0,PIT0_ISR);
    /*******************NVIC配置****************/
    NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2);  //中断优先级分成2组
		NVIC_SetPriority(PORTD_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 0, 0));//遥控器
    NVIC_SetPriority(PIT0_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 1, 0));//周期性中断优先级
		NVIC_SetPriority(PORTE_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 2, 0));//DMP
    NVIC_SetPriority(PORTA_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 3, 0));//按键中断
		OLED_P8x16Str(0,2,"Hello World!");
}

🥇 项目分享:见文末!文章来源地址https://www.toymoban.com/news/detail-835422.html

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

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

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

相关文章

  • 单片机毕设 基于STM32的智能药箱系统设计与实现

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

    2024年02月04日
    浏览(75)
  • 【毕业设计】基于超声波智能跟随小车 - 单片机 物联网 stm32 c51

    自动跟随小车系统由两部分组成:跟随小车和移动目标携带装置。 工作原理:跟随小车系统通过无线通信模块发送寻找信号,同时超声波接收器开始计时,如果移动目标接收到无线寻找信号,则立即发送超声波信号。这样小车的三角超声波接收器陆续收到超声波信号,CPU通过

    2023年04月08日
    浏览(69)
  • STM32毕设分享 - 基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

    Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计 基于单片机的智能鱼缸系统设计与实现 🔥 项目分享与指导: https://gitee.com/sinonfin/sharing 近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能

    2024年04月11日
    浏览(62)
  • 毕业分享 stm32智能平衡小车设计与实现

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

    2024年02月02日
    浏览(53)
  • stm32毕设项目-基于stm32的智能药箱(代码开源)含论文

    目录  1、功能解释 2、硬件清单 3.硬件连接 4.代码分析 简介:智能药箱是基于 UCOS-III 系统,通过 STM32F103ZET6 为主控芯片。使用 4.3 寸 TFTLCD 触摸屏实现人机交互,使用 EMWIN 设计出用户交互界面。通过 DHT11 温湿度传感器模块来实时检测环境数据,当环境不合适时通过蜂鸣器发

    2024年02月04日
    浏览(47)
  • 基于stm32的平衡小车

    目录 前言 一、电机驱动部分 1、TB6612FNG电机驱动模块接线方式: 2、代码使用定时器2的4路输出pwm 3、gpio引脚初始化,以及前进,后退引脚设置 二、MPU6050陀螺仪部分 三、编码器捕获部分 四、pid部分 1、直立环KD 2、速度环KI 3、转向环(PD) 五、蓝牙通信部分 总结 经过几天对

    2024年02月09日
    浏览(40)
  • 基于单片机STM32的智能衣柜设计(可以写进毕设与简历的项目)

    从智能家居服务生活的理念出发,针对目前传统衣柜在潮湿环境下不易贮存衣物的缺点,设计一款智能语音衣柜;如下图所示为基于stm32的智能衣柜设计,这个项目中有紫外线杀菌+除湿风扇+加温+语音助手+wifi模块+人体感应模块等,属于一个综合性项目,如果想从事嵌入式开

    2024年02月08日
    浏览(51)
  • 基于STM32-F401的平衡小车

    目录 一、控制系统设计 1.1机械结构设计 1.2传感系统设计 1.3执行器设计 1.4控制算法设计 二、控制系统的制作与调试 2.1机械结构的制作与调试 2.2电路系统的制作与调试 2.3控制程序的编写与调试 三、控制系统的测试与分析 3.1测试方法 3.2测试数据与现象 3.3结果分析 一个系统

    2024年02月06日
    浏览(50)
  • 移植FreeRTOS的STM32F103双轮平衡小车(开源,代码文末)

    耗时大概三四天吧,主要时间还是花在硬件方面上, 目录 引言 1、系统概述 1.1、设计任务 1.2、设计要求 1.3、硬件清单 2、方案设计与论证 2.1、芯片选择方案芯片 2.2 、系统概述 2.3、设计要求 2.4、系统总体设计 2.5、重要功能模块程序实现原理分析 2.5.1、MPU6050模块的介绍 小

    2024年01月20日
    浏览(45)
  • 物联网毕设 - 基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

    Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计 基于单片机的智能鱼缸系统设计与实现 🔥 项目分享与指导: https://gitee.com/sinonfin/sharing 近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能

    2024年02月03日
    浏览(79)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包