赞
踩
主要介绍了一种采用四轮驱动的智能小车的设计方法,并对其进行了实验研究,各模块将采集到的相关数据传送至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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。