【电子系统综合实践】--2021电赛F题智能送药小车

这篇具有很好参考价值的文章主要介绍了【电子系统综合实践】--2021电赛F题智能送药小车。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


主要内容

    设计并制作智能送药小车,模拟完成在医院药房与病房间药品的送取作业。院区结构示意如图1所示。院区走廊两侧的墙体由黑实线表示。走廊地面上画有居中的红实线,并放置标识病房号的黑色数字可移动纸张。药房和近端病房号(1、2号)如图1所示位置固定不变,中部病房和远端病房号(3-8号)测试时随机设定。

2021年全国电子设计大赛题目智能送药小车需要什么材料,课设及大学课程学习,单片机,嵌入式硬件,其他


1、任务要求

  • (1)单个小车运送药品到指定的近端病房并返回到药房。要求运送和返回时间均小于40s,每超时1秒扣1分(40分)
  • (2)单个小车运送药品到指定的中部病房并返回到药房。要求运送和返回时间均小于40s,每超时1秒扣1分(10分)
  • (3)单个小车运送药品到指定的远端病房并返回到药房。要求运送和返回时间均小于40s,每超时1秒扣1分(10分)
  • (4)完成答辩环节(20分)
  • (5)按照要求完成课程设计报告的撰写(20分)。

2 、方案

2.1 硬件设计

2021年全国电子设计大赛题目智能送药小车需要什么材料,课设及大学课程学习,单片机,嵌入式硬件,其他
    如上图所示,(1)稳压供电模块:用于将双节锂电池18650的 7.4~8.4V输入电压转换为其他四个模块可用的5V工作电压,在调试过程中,发现第一路的LM7805稳压电路输出功率不足给整个小车供电,所以增加一路由稳压芯片LM2596搭成的DC-DC稳压模块给51最小系统模块和检测红线灰度传感器模块供电,而第一路的LM7805稳压电路单独只给电机PWM驱动模块供电。(2)按键及数码管模块:共两个按键(key_s2及key_s3)及一个共阴数码管,数码管显示将要送达的病房编号,两个按键则是用于病房数+1及确定是否要送达此编号的病房。(3)检测红线的灰度传感器模块:该传感器为5路光敏灰度传感器,其中灯亮为检测到地面(白色),对应引脚输出为1,而灯灭为检测到红线或黑线,对应引脚输出为0。(4)电机PWM驱动模块:采用L293D驱动芯片用于驱动直流减速电机的转动。(5)51最小系统模块:用于检测灰度传感器的五路引脚电平变化,及通过灰度传感器的五路引脚电平变化,进而控制直流减速电机。

2.2 软件设计

2021年全国电子设计大赛题目智能送药小车需要什么材料,课设及大学课程学习,单片机,嵌入式硬件,其他
    如上图所示,程序的设计中,(1)循迹程序设计:通过模块化思想将每种小车运动模型模块化,分为循直线函数、左转函数、右转函数、直线后退函数、旋转函数、停止函数。通过每个病房的路线中,含有的特定标志可以映射为特定的五路灰度传感器的引脚电平,进而我们可以通过程序实时检测五路传感器特定电平状态的变化来控制电机的运动状态,以此来实现小车到达特定病房的循迹。简而言之就是通过特定病房线路的特定标志来控制小车循迹。(2)小车速度程序设计思想:小车的速度则是通过单片机的定时器来控制电机占空比进而实现控制小车的转速。(3)确定病房程序设计:按键key_s2每按一次单片机将检测到低电平,定义变量Room_num 将+1(Room_num将0~9循环+1),数码管则会实时显示Room_num的值,而按键key_s3为确定键,只有当key_s3按下后,单片机才会继续往下执行循迹病房的程序,简而言之,就是按键key_s2让病房数+1,按键key_s3为确定是否要循迹该病房,数码管实时显示病房号,上述就是设计每个病房循迹的思想。

3、实物图

2021年全国电子设计大赛题目智能送药小车需要什么材料,课设及大学课程学习,单片机,嵌入式硬件,其他
   清翔51循迹智能小车。

4、源程序

car.h文件
#ifndef __CAR_H__
#define _CAR_H__

/*电机驱动IO定义*/
sbit IN1 = P1^2; //为1 左电机反转
sbit IN2 = P1^3; //为1 左电机正转
sbit IN3 = P1^6; //为1 右电机正转
sbit IN4 = P1^7; //为1 右电机反转
sbit EN1 = P1^4; //为1 左电机使能
sbit EN2 = P1^5; //为1 右电机使能

/*循迹小车IO口定义*/
sbit R_led2 = P3^6;// 右寻迹灯2 为0没有识别到红线 为1识别到红线
sbit R_led1 = P3^5;//右寻迹灯1 为0没有识别到红线 为1识别到红线
sbit M_led0 = P3^4;//中间寻迹灯0 为0没有识别到红线 为1识别到红线
sbit L_led1 = P3^3;//左寻迹灯1 为0没有识别到红线 为1识别到红线
sbit L_led2 = P3^2;//左寻迹灯2 为0没有识别到红线 为1识别到红线


/*按键定义*/
sbit key_s2 = P3^0;//+1
sbit key_s3 = P3^1;//确定键
sbit beep = P2^3;//蜂鸣器
sbit LE1 = P2^7;//数码管位选
sbit LE2 = P2^6;//数码管段选

#define left_motor_en		EN1 = 1	//左电机使能
#define right_motor_en		EN2 = 1	//右电机使能
#define left_motor_dis		EN1 = 0	//左电机不使能
#define right_motor_dis		EN2 = 0	//右电机不使能



#define left_motor_stops	IN1 = 0, IN2 = 0//左电机停止
#define right_motor_stops	IN3 = 0, IN4 = 0//右电机停止
#define left_motor_go		IN1 = 0, IN2 = 1//左电机正传
#define left_motor_back		IN1 = 1, IN2 = 0//左电机反转
#define right_motor_go		IN3 = 1, IN4 = 0//右电机正传
#define right_motor_back	IN3 = 0, IN4 = 1//右电机反转

typedef unsigned char  uchar;
typedef unsigned int  uint;

#endif
motor.c文件
#include<reg52.h>
#include<car.h>	 

/*毫秒级延时*/
void delay(uint z)
{
	uint x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--);
}	


/*小车前进*/
void forward()
{
	left_motor_go; //左电机前进
	right_motor_go; //右电机前进
}

/*小车左转*/
void left_run()
{
	left_motor_stops; //左电机停止
	right_motor_go; //右电机前进	
}
/*小车右转*/
void right_run()
{
	right_motor_stops;//右电机停止
	left_motor_go;    //左电机前进
}

/*小车后退*/
void backward()
{
	left_motor_back; //左电机后退
	right_motor_back; //右电机后退	
}

/*小车停止*/
void stop()
{
	right_motor_stops;
	left_motor_stops;
}

/*转向*/
void turn_roud()
{
	left_motor_go;
	right_motor_back;
}

/*直走*/
void go_straight()
{

  if(L_led1==0  && M_led0 ==1 &&  R_led1==0 )//识别红线直行
	{  
	   forward();
	  
	  
	
	}
	  else
		{
			
			
			if(L_led1 == 1 &&  R_led1 == 0)//小车右边出线,左转修正   1是红 0是白
			{
				left_run();//左转
			}
			
			if(L_led1 == 0 &&  R_led1 == 1)//小车左边出线,右转修正
			{
				right_run();//右转
			}	
			
			if(L_led2 == 1 && L_led1 == 0 &&  R_led2 ==0) //小车右边出线,左转修正
			{
				left_run();//左转
			}
			if(L_led1 == 0 &&  R_led1 == 0 &&  R_led2==1)//小车左边出线,右转修正
			{
				right_run();//右转
			
			}	
		
		}	

}

void chesi()
{
	stop();
	while(1);
}
main.c文件
/* 说明:
 (灯亮白0) (灯灭红1)
 */
#include<reg52.h>
#include<car.h>	 

extern void delay(uint z);
extern void forward();
extern void left_run();
extern void right_run();
extern void backward();
extern void stop();
extern void turn_roud();
extern void go_straight();
extern void chesi();
void key_exa();
void congif_T0();
uchar PWM_T = 0; //周期
uchar PWM_left_val = 110;//左电机占空比值 取值范围 95
uchar PWM_right_val = 110;//右电机占空比值取值范围 95

//共阴数码管(熄灭、1~9)表
uchar code leddata[]={0x00, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
uchar T1_H = 0xB8;
uchar T1_L = 0x00;
uchar Room_num = 0;
uchar EN_room = 0;

uchar flag_go = 0;
uchar flag_back = 0;



void congif_T0()
{
	EA = 1;
	TMOD = 0x02;
	TH0 = 183;
	TL0 = 183; //电机T = T1*256 = 20ms;
	TR0 = 1; 
	ET0 = 1;
	P0 = leddata[Room_num];
		
}


void key_exa()
{
	while(1)
	{
	   if(key_s2 == 0)
		{
			delay(20);
			if(key_s2 == 0)
			{
				Room_num++;
				if(Room_num > 9)
				{
					Room_num = 1;
				}
				 while(key_s2 == 0);
			}
		}
	   if(key_s3 == 0)
		{
			delay(20);
			if(key_s3 == 0)
			{
				EN_room++;	
				while(key_s3 == 0);
				break;
			}
		}
	}
}


void main()
{										 
	LE1 = 1;
	P0 = 0xfe;
	LE1 = 0;
	LE2 = 1;
	
	congif_T0();
	
	key_exa();
	
	while(1)
	{	 
		

		if( Room_num == 1 && EN_room == 1)
		{			
//			PWM_left_val = 108;
//			PWM_right_val = 108;
			go_straight();																		  
			if((uchar)L_led2 + (uchar)R_led2 >= 2)
			{
				backward();
				delay(50);
				left_run();
				delay(300);
				while((uchar)L_led1 != 1)
				{
					left_run();
				}
				while(1)
				{
					
					go_straight();
					if((L_led1 == 1 && M_led0 == 0 && R_led1 == 1)||(L_led1 == 1 && M_led0 == 0 && R_led1 == 1 && R_led2 == 1))
					{
						
						stop();
						delay(1000);
						backward();
						delay(200);
						while((uchar)R_led2 != 1)
						{
							turn_roud();
						}
						
						while(1)
						{
							go_straight();																		  
							if((uchar)L_led2 + (uchar)R_led2 >= 2)
							{
								backward();
								delay(50);
//								chesi();
								right_run();
								delay(300);
								while((uchar)L_led1 != 1)
								{
									right_run();
								}
								while(1)
								{
									go_straight();

									if((uchar)L_led1 + (uchar)R_led1 >= 2 )
									{
										stop();
										delay(1000);	
										while(1);
									}	
								}
							}
						}
					}
				}	
			}
		}
		
		//房2
		if( Room_num == 2 && EN_room == 1)
		{			
//			PWM_left_val = 105;
//			PWM_right_val = 105;
			go_straight();																		  
			if((uchar)L_led2 + (uchar)R_led2 >= 2)
			{
				backward();
				delay(50);
				right_run();
				delay(300);
				while((uchar)L_led1 != 1)
				{
					right_run();
				}
				while(1)
				{
					
					go_straight();
					if((L_led1 == 1 && M_led0 == 0 && R_led1 == 1)||(L_led1 == 1 && M_led0 == 0 && R_led1 == 1 && R_led2 == 1))
					{
						
						stop();
						delay(1000);
						backward();
						delay(200);
						while((uchar)R_led2 != 1)
						{
							turn_roud();
						}
						while(1)
						{
							go_straight();																		  
							if((uchar)L_led2 + (uchar)R_led2 >= 2)
							{
								backward();
								delay(50);
//								chesi();
								left_run();
								delay(300);
								while((uchar)L_led1 != 1)
								{
									left_run();
								}
								while(1)
								{
									go_straight();

									if((uchar)L_led1 + (uchar)R_led1 >= 2 )
									{
										stop();
										delay(1000);	
										while(1);
									}	
								}
							}
						}
					}
				}	
			}
		}
		
		
			
		//房3
		if( Room_num == 3 && EN_room == 1)
		{			
			
			go_straight();
			if((uchar)L_led2 + (uchar)R_led2 >= 2)
			{
				flag_go++;
				backward();
				delay(50);
				stop();
				delay(500);
				
			}	
			if(flag_go == 2)
			{
				backward();
				delay(50);
				left_run();
				delay(300);
				while((uchar)L_led1 != 1)
				{
					left_run();
				}
				while(1)
				{
					
					go_straight();
					if((uchar)L_led2 + (uchar)L_led1+ (uchar)R_led1 + (uchar)R_led2 >= 2)
					{
						
						stop();
						delay(1000);
						backward();
						delay(200);
						while((uchar)R_led2 != 1)
						{
							turn_roud();
						}
						while(1)
						{
							go_straight();																		  
							if((uchar)L_led2 + (uchar)R_led2 >= 2)
							{
								backward();
								delay(40);
								right_run();
								delay(300);
								while((uchar)L_led1 != 1)
								{
									right_run();
								}
								while(1)
								{
									go_straight();

									if((uchar)L_led1 + (uchar)R_led1 >= 2 )
									{
										
										flag_back++;
										stop();
										delay(500);	
										
									}
									if(flag_back==2)
									{
										stop();
										while(1);
										
									}
									
								}
							}
						}
					}
				}	
			}
		}
		
		//房4
		if( Room_num == 4 && EN_room == 1)
		{			
			
			go_straight();
			if((uchar)L_led2 + (uchar)R_led2 >= 2)
			{
				flag_go++;
				backward();
				delay(50);
				stop();
				delay(500);
				
			}	
			if(flag_go == 2)
			{
				backward();
				delay(50);
				right_run();
				delay(300);
				while((uchar)L_led1 != 1)
				{
					right_run();
				}
				while(1)
				{
					
					go_straight();
					if((uchar)L_led2 + (uchar)L_led1+ (uchar)R_led1 + (uchar)R_led2 >= 2)
					{
						
						stop();
						delay(1000);
						backward();
						delay(200);
						while((uchar)R_led2 != 1)
						{
							turn_roud();
						}
						while(1)
						{
							go_straight();																		  
							if((uchar)L_led2 + (uchar)R_led2 >= 2)
							{
								backward();
								delay(50);
								left_run();
								delay(300);
								while((uchar)L_led1 != 1)
								{
									left_run();
								}
								while(1)
								{
									go_straight();

									if((uchar)L_led1 + (uchar)R_led1 >= 2 )
									{
										
										flag_back++;
										stop();
										delay(500);	
										
									}
									if(flag_back==2)
									{
										stop();
										while(1);
										
									}
									
								}
							}
						}
					}
				}	
			}
		}
		
		
		
		//房5
		if( Room_num == 5 && EN_room == 1)
		{			
			
			go_straight();
			if((uchar)L_led2 + (uchar)R_led2 >= 2)
			{
				flag_go++;
				backward();
				delay(50);
				stop();
				delay(500);
				
			}	
			if(flag_go == 3)
			{
				backward();
				delay(50);
				left_run();
				delay(300);
				while((uchar)L_led1 != 1)
				{
					left_run();
				}
				while(1)
				{
					
					go_straight();
					if((uchar)L_led2 + (uchar)L_led1+ (uchar)R_led1 + (uchar)R_led2 >= 2)
					{
						backward();
						delay(40);
						stop();
						delay(500);
						while((uchar)R_led1 != 1)
						{
							left_run();
						}
						while(1)
						{
							go_straight();																		  
							if((uchar)L_led2 + (uchar)L_led1+ (uchar)R_led1 + (uchar)R_led2 >= 2)
							{
								stop();
								delay(500);
								backward();
								delay(200);
								while((uchar)R_led2 != 1)
								{
									turn_roud();
								}
								while(1)
								{
									go_straight();

									if( (uchar)R_led1 + (uchar)R_led2 >= 2 )
									{
										backward();
										delay(50);
										right_run();
										delay(300);
										while((uchar)L_led1 != 1)
										{
											right_run();
										}
										while(1)
										{
											go_straight();
											if( (uchar)R_led1 + (uchar)R_led2 >= 2 )
											{
												backward();
												delay(50);
												right_run();
												delay(300);
												while((uchar)L_led1 != 1)
												{
													right_run();
												}
												while(1)
												{
													go_straight();
													if((uchar)L_led1 + (uchar)R_led1 >= 2)
													{
														flag_back++;
														stop();
														delay(500);
														
													}	
													if(flag_back == 3)
													{
														stop();
														while(1);
													}
												}
											}
										}
									}
									
									
								}
							}
						}
					}
				}	
			}
		}
		
		
		//房6
		if( Room_num == 6 && EN_room == 1)
		{			
			
			go_straight();
			if((uchar)L_led2 + (uchar)R_led2 >= 2)
			{
				flag_go++;
				backward();
				delay(50);
				stop();
				delay(500);
				
			}	
			if(flag_go == 3)
			{
				backward();
				delay(50);
				right_run();
				delay(300);
				while((uchar)L_led1 != 1)
				{
					right_run();
				}
				while(1)
				{
					
					go_straight();
					if((uchar)L_led2 + (uchar)L_led1+ (uchar)R_led1 + (uchar)R_led2 >= 2)
					{
						backward();
						delay(40);
						stop();
						delay(500);
						while((uchar)R_led1 != 1)
						{
							right_run();
						}
						while(1)
						{
							go_straight();																		  
							if((uchar)L_led2 + (uchar)L_led1+ (uchar)R_led1 + (uchar)R_led2 >= 2)
							{
								stop();
								delay(500);
								backward();
								delay(200);
								while((uchar)R_led2 != 1)
								{
									turn_roud();
								}
								while(1)
								{
									go_straight();

									if( (uchar)L_led1 + (uchar)L_led2 >= 2 )
									{
										backward();
										delay(40);
										left_run();
										delay(300);
										while((uchar)L_led1 != 1)
										{
											left_run();
										}
										while(1)
										{
											go_straight();
											if( (uchar)L_led1 + (uchar)L_led2 >= 2 )
											{
												backward();
												delay(50);
												left_run();
												delay(300);
												while((uchar)L_led1 != 1)
												{
													left_run();
												}
												while(1)
												{
													go_straight();
													if((uchar)L_led1 + (uchar)R_led1 >= 2)
													{
														flag_back++;
														stop();
														delay(500);
														
													}	
													if(flag_back == 3)
													{
														stop();
														while(1);
													}
												}
											}
										}
									}
									
									
								}
							}
						}
					}
				}	
			}
		}
		
		
		//房7
		if( Room_num == 7 && EN_room == 1)
		{			
			
			go_straight();
			if((uchar)L_led2 + (uchar)R_led2 >= 2)
			{
				flag_go++;
				backward();
				delay(50);
				stop();
				delay(500);
				
			}	
			if(flag_go == 3)
			{
				backward();
				delay(50);
				left_run();
				delay(300);
				while((uchar)L_led1 != 1)
				{
					left_run();
				}
				while(1)
				{
					
					go_straight();
					if((uchar)L_led2 + (uchar)L_led1+ (uchar)R_led1 + (uchar)R_led2 >= 2)
					{
						backward();
						delay(40);
						stop();
						delay(500);
						while((uchar)R_led1 != 1)
						{
							right_run();
						}
						while(1)
						{
							go_straight();																		  
							if((uchar)L_led2 + (uchar)L_led1+ (uchar)R_led1 + (uchar)R_led2 >= 2)
							{
								stop();
								delay(500);
								backward();
								delay(200);
								while((uchar)R_led2 != 1)
								{
									turn_roud();
								}
								while(1)
								{
									go_straight();

									if( (uchar)L_led1 + (uchar)L_led2 >= 2 )
									{
										backward();
										delay(50);
										left_run();
										delay(300);
										while((uchar)L_led1 != 1)
										{
											left_run();
										}
										while(1)
										{
											go_straight();
											if( (uchar)R_led1 + (uchar)R_led2 >= 2 )
											{
												backward();
												delay(50);
												right_run();
												delay(300);
												while((uchar)L_led1 != 1)
												{
													right_run();
												}
												while(1)
												{
													go_straight();
													if((uchar)L_led1 + (uchar)R_led1 >= 2)
													{
														flag_back++;
														stop();
														delay(500);
														
													}	
													if(flag_back == 3)
													{
														stop();
														while(1);
													}
												}
											}
										}
									}
									
									
								}
							}
						}
					}
				}	
			}
		}
		
		
		
		//房8
		if( Room_num == 8 && EN_room == 1)
		{			
			
			go_straight();
			if((uchar)L_led2 + (uchar)R_led2 >= 2)
			{
				flag_go++;
				backward();
				delay(50);
				stop();
				delay(500);
				
			}	
			if(flag_go == 3)
			{
				backward();
				delay(50);
				right_run();
				delay(300);
				while((uchar)L_led1 != 1)
				{
					right_run();
				}
				while(1)
				{
					
					go_straight();
					if((uchar)L_led2 + (uchar)L_led1+ (uchar)R_led1 + (uchar)R_led2 >= 2)
					{
						backward();
						delay(40);
						stop();
						delay(500);
						while((uchar)R_led1 != 1)
						{
							left_run();
						}
						while(1)
						{
							go_straight();																		  
							if((uchar)L_led2 + (uchar)L_led1+ (uchar)R_led1 + (uchar)R_led2 >= 2)
							{
								stop();
								delay(500);
								backward();
								delay(200);
								while((uchar)R_led2 != 1)
								{
									turn_roud();
								}
								while(1)
								{
									go_straight();

									if( (uchar)R_led1 + (uchar)R_led2 >= 2 )
									{
										backward();
										delay(40);
										right_run();
										delay(300);
										while((uchar)L_led1 != 1)
										{
											right_run();
										}
										while(1)
										{
											go_straight();
											if( (uchar)L_led1 + (uchar)L_led2 >= 2 )
											{
												backward();
												delay(50);
												left_run();
												delay(300);
												while((uchar)L_led1 != 1)
												{
													left_run();
												}
												while(1)
												{
													go_straight();
													if((uchar)L_led1 + (uchar)R_led1 >= 2)
													{
														flag_back++;
														stop();
														delay(500);
														
													}	
													if(flag_back == 3)
													{
														stop();
														while(1);
													}
												}
											}
										}
									}
									
									
								}
							}
						}
					}
				}	
			}
		}
		
		
		
		
	}
}

void intter0() interrupt 1
{
	PWM_T++;
	if(PWM_T <= PWM_left_val)
	{
		left_motor_en;	
	}else{left_motor_dis;}

	if(PWM_T <= PWM_right_val)
	{
		right_motor_en;	
	}else{ right_motor_dis;}
	P0 = leddata[Room_num];
		
}


   代码方面的话,看懂一个病房的原理,就可以同理得出其他病房。


5、收获

   在本次电子综合实践中前前后后忙了差不多半个月时间,合起来也就五六天左右,因为想把绩点刷高的原因,车也不是自己画板子设计,也没准备用32做(主要32还不是很熟练),匆匆忙忙用清翔的51小车做,收获上觉得也不是很多,也就觉得做这车挺好玩的。

  遇到的困难也不是很多,也就小车底板的供电不足,一开始一直以为自己的代码逻辑上有毛病,导致两天左右都在调代码,最后通过同学指导了一下发现了问题所在,后通过再添加一个供电稳压模块很好的解决了这个问题,题主最后也拿到了优。

  最后挂上一句我喜欢的名言,“不耻最后,即使慢,驰而不息,纵会落后,纵令失败,但一定可以达到它所向往的地方“.----迅哥儿文章来源地址https://www.toymoban.com/news/detail-612311.html

到了这里,关于【电子系统综合实践】--2021电赛F题智能送药小车的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 分享21年电赛F题-智能送药小车-做题记录以及经验分享

    自己是今年准备电赛的同学一名,电赛结束了,想把自己之前刷过的题目,通过这篇文章,来分享一波做这道题的思路和调试方法 自己在做之前的电赛题目时,也苦苦没有思路,不知道该怎么去下手,面对题目的要求和限制,应该如何去分析和实现 由于我们主要是准备小车

    2024年02月13日
    浏览(26)
  • 全国电子设计竞赛-国二--智能送药小车

    不过这一次的比赛是真的很幸运,因为参加过比赛都知道,这一次没有了线下比赛,线上评审,不过拿到试题的那一天也是蛮紧张的,我们队伍做的是F题智能送药小车,现在的控制类的题目是真的越来越难了,相对于之前的控制类的题目。 还是讲一下比赛期间发生的一些事

    2024年02月14日
    浏览(63)
  • 单K210模块低成本实现21电赛题送药小车

    博主已经大三,想着暑假参加电赛,于是将21电赛的控制题尝试做了一下,由于成本有限,想着能不能仅使用一块k210完成这个项目,但是看网上查找资料都没人这样做,于是博主就按照自己的想法实现了这个,为了让更多和博主一样的小白能够简单制作这个项目,博主决定写

    2024年02月16日
    浏览(43)
  • 智能送药小车(一)——K210巡线

    这部分基本就是例程上的内容,添加了一点注释。关于相关的运用到的函数解释,可以参考K210颜色识别.

    2024年02月12日
    浏览(27)
  • 智能送药小车(二)——K210物体检测,训练模型与部署

    线上训练模型参考这篇: Maixhub模型训练平台整体流程 下面仅介绍利用Mx-yolov3训练模型并部署在k210上的整体流程。 利用K210采集数据集 使用说明:插上合适的SD卡(最大32GB),采集不同类别图像时要在代码相应位置进行修改(有注释提示),程序运行后按下KEY会进行图像采集

    2024年02月14日
    浏览(31)
  • 2022电赛小车跟随行驶系统(C题)复盘

    此次的电赛感觉结束的挺突然的,在找到方向准备细化地进行调试的时候却是没有足够时间来完成代码上的完善。想着此次遗憾,写一篇博客来记录一下自己的经历吧,总结总结此次的电赛时光。   电赛题目  首先便是题目的选择,由于我们之前校电赛时简单接触过小车的题

    2024年02月16日
    浏览(35)
  • 2021电赛D题:基于互联网的摄像测量系统 思路

    2021年全国电赛题目如下: 基于opencv,树莓派,以及网络交换机组成的摄像测量系统。由测量摄像 系统与网络传输系统组成。支持开机自启动,一键测量,声光提示结束测量,高帧率显 示图像的系统。其中摄像系统包括两组树莓派与摄像头组合,网络传输系统由网线,以 太

    2024年02月16日
    浏览(23)
  • 2022电赛小车开源代码讲解开源

    2022电赛小车我认为有主要是几个主要的问题,我将分这几个部分来讲解 目录 一、循迹 二、蓝牙通信,双车数据传输 三、起始路口的识别 四、分叉路口的识别 五、源码  2022电赛,双车稳定行驶_哔哩哔哩_bilibili 循迹我们组用的是五路灰度,灰度跟红外对管的作用是差不多的

    2024年02月09日
    浏览(33)
  • 2021电赛F题数字识别和巡线部分

    文章之前12月发了一次,但是我后来申请的免毕设后,用到了一些文字,所以删了这篇文章,但是还是查重了,于是我把一些程序讲解先删了,等毕设结束后再编辑加上。 这次电赛我没有准备多少东西,只提前准备了图像识别和坐标计算一类的。在20年的省赛帮过雪地调过k

    2024年02月07日
    浏览(43)
  • MSP430F5529循迹小车 2022电赛 C题

    编辑时间2022/8/21 选用材料:主控MSP430F5529、直流减速电机(带光电编码器)、TB6612电机驱动、超声波测距、灰度传感器、无线透传、OLED屏显示。 使用灰度传感器巡线,超声波检测前后车距作为位置环反馈,通过位置环调节前后车距离。 :MSP430   循迹    无线串口透

    2024年02月16日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包