1、功能介绍
蓝牙切换功能:智能小车内置了蓝牙模块,可以通过手机或其他蓝牙设备与之连接。用户可以通过手机发送指令控制小车的运动方向,实现远程控制。
循迹功能:智能小车配备了红外线传感器,可以实现循迹功能。通过检测地面上的黑线或白线,小车能够自动沿着线路行驶,实现自动导航功能。
1.硬件准备
小车底盘一个(两驱),5号4节电池盒一个,STM32f103c8t6最小系统板,红外光电反射传感器两个,ST-LINK下载器,HC-05蓝牙模块、CH340模块、L298N电机驱动模块,焊接设备、一些杜邦线、也可以再准备一个面包板。
硬件搭设
硬件及程序
1.电机驱动
1.主电源正极接12v,主电源负极接GND。
2.先将5V的跳线帽短接,这样不用额外通过5V输入端外加电源在给单片机供电,可直接有5V输入端连接导线直接给单片机供电,如不将跳线帽短接,则5V输入端输出的电压为12V,连接单片机会导致单片机烧毁
3.A相使能,B相使能是对输入1.2.3.4的控制,如果使能A和使能B加上跳线帽的话,则只需要通过控制输入1.2(一个电机),3.4(另外一个电机)分别给两个电机的两端0和1实现正反转,都给0或者都给1则电机不会转,如果使能A和使能B不加上跳线帽的话,当AB为低电平时,输入1.2.3.4都不会工作,所以可以通过控制使能A和使能B的开和关的周期来控制产生PWM波。
2.小车运动
- 当IN1、IN3为高电平,IN2、IN4为低电平时,电机正转
- 当IN1、IN3为低电平,IN2、IN4为高电平时,电机反转
- 都为高电平时,电机不转
- 电机的正转和反转与跟电机的接线不同而不同,注意自己调试
motor.c
#include "stm32f10x.h"
#include "pwm.h"
void motor_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//2.设置GPIO模式
//PB12~PB15 通用推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_8 |GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
PWM_Init();
}
void car_go()
{
//左轮
GPIO_SetBits( GPIOA, GPIO_Pin_6);
GPIO_ResetBits( GPIOA,GPIO_Pin_7);
TIM_SetCompare3(TIM3, 90 );
//右轮
GPIO_SetBits( GPIOA, GPIO_Pin_8);
GPIO_ResetBits( GPIOA,GPIO_Pin_11);
TIM_SetCompare4(TIM3, 90 );
}
void car_back()
{
//左轮
GPIO_ResetBits( GPIOA, GPIO_Pin_6);
GPIO_SetBits( GPIOA,GPIO_Pin_7);
TIM_SetCompare3(TIM3, 90 );
/