基于STM32C8T6的智能小车

有幸赶上了今年的电赛,赛前用了一周多的时间准备迷宫小车赛题,苦于摄像头刚刚入门并不能实际应用,只能用红外传感器做出个半成品。

制作小车的硬件清单:

(1)小车框架

小车底层版*1、顶层版*1、面包板*2、、车轮*2、万向轮*1

(2)小车设备

STM32C8t6核心板*1、TB6612电机驱动*1、0.96OLED、JDY-31蓝牙模块、TCRT5000红外摄像头*6、电池、电机(带编码器)*2

基于STM32C8T6的智能小车_第1张图片基于STM32C8T6的智能小车_第2张图片

 一、小车框架制作

底层:底层版淘宝上比较多 我用的是学校提供的两轮驱动板子  大致如下

基于STM32C8T6的智能小车_第3张图片

 根据板子可以直接完成电机+轮子的固定和万向轮的安装

顶层:我们只在顶层粘贴了面包板并安装了摄像头待用,安装并不是很严格,只需和底层能对应上并保证稳定即可

设备安装:主要集中在顶层表面的面包板上,主要包括OLED、TB6612、核心板,顶层底面也粘贴面包板,出于电池线长度问题,因此将电源模块插在底层

二、整体思路

(1)驱动电机

我们采用TB6612作为电机驱动模块,由单片机产生pwm波和I/O口正负电压来控制电机的转速与方向。

//PWM.C
void PWM_Init(int16_t arr ,int16_t psc )
{
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_TIM1 | RCC_APB2Periph_AFIO,ENABLE);//开启时钟

    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;        // 初始化GPIO--PA8、PA11为复用推挽输出
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8 | GPIO_Pin_11;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOA,&GPIO_InitStruct);
    
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
    TIM_TimeBaseStructInit(&TIM_TimeBaseInitStruct);  // 初始化定时器。
    TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
    TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;  //向上计数 0记到重装值
    TIM_TimeBaseInitStruct.TIM_Period=arr;
    TIM_TimeBaseInitStruct.TIM_Prescaler=psc;
    TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStruct);   // TIM1
    
    TI

你可能感兴趣的:(stm32,arm开发,单片机)