一、任务简述
主要介绍了一种采用四轮驱动的智能小车的设计方法,并对其进行了实验研究,各模块将采集到的相关数据传送至STM32控制器,之后利用红外传感器和超声波传感器进行实时检测路面状况,对数据进行分析、处理,可实现路径规划、实时避障等功能。本设计的创新点在于:通过运用红外传感器,实现指定路线的巡线避障。
关键词:STM32;STM32F103C8T6核心板;红外传感器;巡航避障
二、说明书目录
三、总体设计
四、软件设计
void app_IRAvoid(void)
{
int IRL1 = 1, IRR1 = 1;
bsp_GetIRavoid(&IRL1, &IRR1);//右侧检测到
if( IRL1 == HIGH && IRR1 == LOW)
{
Car_SpinLeft(3000, 3000);
}//左侧检测到
else if ( IRL1 == LOW && IRR1 == HIGH)
{
Car_SpinRight(3000, 3000);
}
//左右均未检测到
else if (IRL1 == HIGH && IRR1 == HIGH)
{
Car_Run(3000);
}
//左右均检测到
else if(IRL1 == LOW && IRR1 == LOW)
{
Car_SpinRight(3000, 3000);
delay_ms(500);
}
}
附录2
智能小车巡线功能代码:
void app_LineWalking(void)
{
int LineL1 = 1, LineL2 = 1, LineR1 = 1, LineR2 = 1;
bsp_GetLineWalking(&LineL1, &LineL2, &LineR1, &LineR2); //获取黑线检测状态
if( (LineL1 == LOW || LineL2 == LOW) && LineR2 == LOW) //左大弯
{
Car_SpinLeft(3500, 3500);
delay_ms(80);
}
else if ( LineL1 == LOW && (LineR1 == LOW || LineR2 == LOW)) //右大弯
{
Car_SpinRight(3500, 3500);
delay_ms(80);
}
else if( LineL1 == LOW ) //左最外侧检测
{
Car_SpinLeft(3000, 3000);
delay_ms(10);
}
else if ( LineR2 == LOW) //右最外侧检测
{
Car_SpinRight(3000,3000);
delay_ms(10);
}
else if (LineL2 == LOW && LineR1 == HIGH) //中间黑线上的传感器微调车左转
{
Car_Left(2500);
}
else if (LineL2 == HIGH && LineR1 == LOW) //中间黑线上的传感器微调车右转
{
Car_Right(2500);
}
else if(LineL2 == LOW && LineR1 == LOW) // 都是黑色加速前进
{
Car_Run(3000);
}
}
附录3
蓝牙串口的代码如下:
void app_bluetooth_deal(void)
{
if (newLineReceived)
{
Protocol();
} // 切换不同的功能模式,功能模式显示
switch (g_modeSelect)
{
case 1: break; //暂时保留
case 2: app_LineWalking(); break; //巡线模式
case 3: app_iravoid.(); break; //红外避障模式
default:break;
}
//让小车串口平均每秒发送收集的数据给收集手机蓝牙apk
//避免串口打印数据速度过快,造成apk无法正常运行
if (g_modeSelect == 0 && g_Boolfire == 0)
{
if (g_count >= 100000)
{
g_count = 0;
serial_data_postback();
}
}
}
有需要私聊,微信:lwfw123456789