基于STM32的智能循迹小车

发布时间:2024-09-06  

1、小车架构

(1)车架:

车架是淘宝上买的双层亚克力的两轮小车,配备了两个直流电机,两个驱动轮,两个辅助万向轮,一个两节的电池盒,这些东西淘宝上很多都是打包售卖的。wKgZomY65L6AE7UEAAOeOacMLiA770.png

底部照片

wKgZomY65PyAPdVDAB-_uEJRGFo300.png

正面照片

(2)电源模块

wKgZomY65heAYmXPACNcHzwcYIk067.png

电源模块

电源模块采用的是两节高电压的5号可充电电池(没节电池3.2V),由于手上没有DC线,干脆直接将电池盒连上了两根飞线插在面包板上,然后又将DC接口下面的正负极引脚焊接了两根公对公的杜邦线然后插在面包板上,这样就可以直接利用电池给这块HW-131面包板供电模块供电了。这块供电模块内置稳压芯片可以输出多路的3.3V和5V的电压,这样就正好可以解决电机和循迹班5V供电的问题啦。

(3)驱动板

wKgaomY66LSAVnl1ACwkIYXU-zE030.png

驱动板

非常尴尬,不会利用画图软件画原理图,所以用的洞洞板焊接,用的是一块STM32F103C8T6、TB6612电机驱动模块,另外还预留了一块NRF24L01-2.4G无线通信模块想要后面做个遥控器,加上遥控功能。刚练习焊接,所以洞洞板的后面其实焊得跟块大便一样,就不做介绍了,核心思想就是用飞线各种飞。。。。。。好在利用万用表一直测,没有出现短路烧板子之类的坏现象,并且最后功能也都可以完成。

2、采用TCRT5000五路循迹模块实现循迹功能

wKgaomY66rmAN-A9ACV5yd0sYzM771.png

循迹模块

循迹模块用的是TCRT5000五路循迹模块,便宜好用,非常nice,至少自己用来玩玩是可以的,如果比赛要用的话应该需要哪种灰度循迹模块(太贵了舍不得买),循迹函数的话中规中矩。


void Track_Correct(uint8_t RoadwayData)

{

if(RoadwayData == 0x00)

{

Track_Flag=0;

Stop_Flag=1;

}else if(RoadwayData==0x1B)//11011

{

LSpeed=Car_Speed;

RSpeed=Car_Speed;

}else if(RoadwayData==0x1D)//11101

{

LSpeed=Car_Speed+20;

RSpeed=Car_Speed-20;

}else if(RoadwayData==0x19)//11001 有向右的大弯道

{

LSpeed=Car_Speed+20;

RSpeed=Car_Speed-40;

}else if(RoadwayData==0x18)//11000 有向右的直角弯道

{

LSpeed=Car_Speed;

RSpeed=-Car_Speed;

}else if(RoadwayData==0x1E)//11110

{

LSpeed=Car_Speed+40;

RSpeed=Car_Speed-40;

}else if(RoadwayData==0x17)//10111

{

LSpeed=Car_Speed-20;

RSpeed=Car_Speed+20;

}else if(RoadwayData==0x13)//10011 有向左的大弯道

{

LSpeed=Car_Speed-40;

RSpeed=Car_Speed+20;

}else if(RoadwayData==0x03)//00011 有向左的直角弯道

{

LSpeed=-Car_Speed;

RSpeed=Car_Speed;

}else if(RoadwayData==0x0F)//01111

{

LSpeed=Car_Speed-40;

RSpeed=Car_Speed+40;

}else 

{

LSpeed=Car_Speed;

RSpeed=Car_Speed;

}

if(Track_Flag != 0)

{

Track_Go(LSpeed,RSpeed);

}

}


3、超声波

超声波用的是一个HC-SR04超声波模块,实现了正向避障的功能,该模块有一个Trig引脚和Echo引脚,当给Trig触发引脚一个大于10us的高电平脉冲,则Echo会开始工作,模块会给出一个与距离等比的高电平脉冲信号,在Echo工作前清零计数器的计数值,并在电平重新变为低电平后获取计数值,就可以根据计数值的大小来计算距离。

wKgaomY7HU6AaW9SAACVkApngOA226.pngwKgaomY7HZKAZOagACBEYTyIvkU068.png

void Wave_TimerInit(void){ //超声波定时器初始化函数

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);

TIM_InternalClockConfig(TIM1);

TIM_TimeBaseInitTypeDef Timer_InitStructure;

Timer_InitStructure.TIM_ClockDivision=TIM_CKD_DIV1;

Timer_InitStructure.TIM_CounterMode=TIM_CounterMode_Up;

Timer_InitStructure.TIM_Period=10000-1;

Timer_InitStructure.TIM_Prescaler=7200-1;//7200Hz=0.0001s=0.1ms=10us

Timer_InitStructure.TIM_RepetitionCounter=0;

TIM_TimeBaseInit(TIM1,&Timer_InitStructure);

//TIM_Cmd(TIM3,ENABLE);

}


void Wave_Init(void){ //超声波中断初始化函数

Wave_TimerInit();


GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);


GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource11);

EXTI_InitTypeDef EXTI_InitStructure;

EXTI_InitStructure.EXTI_Line=EXTI_Line11;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;

EXTI_Init(&EXTI_InitStructure);

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;

NVIC_Init(&NVIC_InitStructure);

}


void Wave_Start(void){ //超声波开始函数

if(Wave_Flag==1){

GPIO_SetBits(GPIOA,GPIO_Pin_5);

Delay_us(50);

GPIO_ResetBits(GPIOA,GPIO_Pin_5);

}

}


void Wave_Check(void){ //超声波避障实现函数

if(Distance<=1300){

Car_Stop();Delay_ms(500);

Car_Back(60);Delay_ms(1000);

Car_Stop();Delay_ms(500);

Car_Left(40);

}else if(Distance >=2000){

Car_Go(Car_Speed);

}

}


void EXTI15_10_IRQHandler(void){ //外部中断处理函数

Delay_us(10);

if(EXTI_GetITStatus(EXTI_Line11)!=RESET){

TIM_SetCounter(TIM1,0);

TIM_Cmd(TIM1,ENABLE);

while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11));

TIM_Cmd(TIM1,DISABLE);

Distance=TIM_GetCounter(TIM1)*340/2.0;

OLED_ShowNum(2,6,Distance,5);

Wave_Check();

EXTI_ClearITPendingBit(EXTI_Line11);

}

}

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    来汽车发展的趋势[2]。智能小车是辆的微缩模型,具有自动寻迹、寻光、避障等功能[3]。 通过采用先进的电磁感应传感器技术,智能循迹小车控制系统可以实现精准的转向,并且可以通过闭环控制实现自动跟踪,以确......
    =333.337.search-card.all.click] **V3.3.0-STM32智能小车 ** V3:HAL库开发、功能:PID速度控制、PID循迹、PID跟随、遥控、避障、PID角度......
    控制、PID循迹、PID跟随、遥控、避障、PID角度控制、视觉控制、电磁循迹、RTOS等功能。 我们的智能小车用到了ADC测量电池电压的功能,这章节我们做一下。我们的一篇在这里[第一篇]什么是ADC 百度......
    行驶的动力,和循迹避障系统判断小车执行的行驶指令。 驱动系统硬件设计:根据本设计的思路,由单片机根据所检测的数据进行判断,然后执行对应的功能,实现对自动分拣小车的智能控制。在此过程中,动力系统为小车......
    一个基于STM32芯片设计的智能循迹往返小车;  智能车辆作为智能交通系统的关键技术之一,是许多高新技术综合集成的载体。它体现了车辆工程、人工智能、自动控制及计算机技术于一体的综合技术,是未......
    基于51单片机的智能小车系统设计;原理图: 程序运行图: 部分......
    基于STM32的智能循迹小车;1、小车架构 (1)车架: 车架是淘宝上买的双层亚克力的两轮小车,配备了两个直流电机,两个驱动轮,两个辅助万向轮,一个两节的电池盒,这些......
    准备 大家千万不要想着自己亲手去制作组装件,设计电路板之类的,不现实。 这个在某宝上有很多现成的方案。 我们的最终目的其实是要把这个智能小车的硬件原理和程序掌握。 我当时就吃了一个亏,想着......
    准备 大家千万不要想着自己亲手去制作组装件,设计电路板之类的,不现实。 这个在某宝上有很多现成的方案。 我们的最终目的其实是要把这个智能小车的硬件原理和程序掌握。 我当时就吃了一个亏,想着......
    腿机构设计与步态规划[D].济南:山东大学,2019. [4] 杨小博,胡强,苏玉香.基于STC12C5A60S2的循迹避障智能小车的设计[J].福建电脑,2017,33(11):19-20. [5] 候帅......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>