xiaocaihong 发表于 2020-3-31 15:20:08

STM32多功能智能小车制作(循迹+壁障+遥控)源码

分享一个STM32 自巡逻避障小车。 共勉
多功能智能小车http://c.51hei.com/a/huq/a/a/8/32/32.001.jpg
http://c.51hei.com/a/huq/a/a/8/32/32.002.jpg

功能:
循迹+避障+遥控

制作难点:
1.超声波,舵机,电机三者的协调。
2.实时快速反应,整个过程的程序要流畅,不能停留在某一处。
3.STM32超声波捕获也是一个亮点。

程序的亮点:



蓝牙HC-06模块使用STM32 DMA控制器,使小车在循迹+避障+遥控功能的切换中运行流畅,解决了蓝牙串口发送数据延迟问题。


超声波,舵机,电机三者的协调得比较好。

总结:
刚开始软硬件搭配不挡,没有按照科学的方法一步一步排除遇到的问题。让很容易解决的问题拖了很久,浪费了很多时间。同时,由于没考虑到stm32这块主控点点taptap安卓的电压安全问题,烧了几块点点taptap安卓。这是我们得到的教训。总的来说,功能全部实现。

单片机源程序如下:
/**
******************************************************************************
* @file    main.c
* @authorMCD Application Team
* @version V3.5.0
* @date    08-April-2011
* @brief   Main program body
**/
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "usart1.h"
#include "SysTick.h"
#include "motor_control.h"
#include "UltrasonicWave.h"
#include "TIM3.h"
#include "pwm_output.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
vu32 Onward_flag=0;
vu8 RxBuffer;
vu32 PWM_flag=0;
vu32 Left_flag=0;
vu32 Right_flag=0;
vu32 Backward_flag=0;
vu32 Stop_flag=0;
vu32 Xunji_flag=0;
vu32 Auto_flag=0;
vu8count=0;

/* Private function prototypes -----------------------------------------------*/
void NVIC_Configuration(void);

/* Private functions ---------------------------------------------------------*/

/*******************************************************************************
* 函数名         : main
* 描述         : 主函数
* 输入         : 无
* 输出         : 无
* 返回         : 无
*******************************************************************************/
int main(void)
{
   /* NVIC configuration */
   NVIC_Configuration();
   /* Configure the Usart1 */
   USART1_Config();
   /* Configure the DMA1 */
   DMA_Configuration();
   /* Configure the GPIO */
   GPIO_Configuration();
   /* Configure the TIM2 */
   TIM2_Configuration();
   /* Configure the TIM3 */
   TI***_Configuration();
   /* Configure the TI*** */
      Control_GPIOE_Config();/*配置传感器输入信号管脚*/
//   TI***_Configuration();
          TIM3_GPIO_Config();
   /* Configure the systick */
   SysTick_Init();
   /* Configure the UltrasonicWave */
   UltrasonicWave_Configuration();

   Degree(85,1);


//         Delay_ms(1500);

   while (1)
{

                //      Auto_run();

         IF(Onward_flag==1)
          {
            Forward_run();                         //前进
          }
         else if(Backward_flag==1)
          {
            Backward_run();                  //后退
          }
         else if(Left_flag==1)
          {
            Left_turn();                     //左转
          }
         else if(Right_flag==1)
          {
            Right_turn();                  // 右转
          }
          else if(Auto_flag==1)
          {
            Auto_run();                                       //自动避障行驶
          }
                else if(Xunji_flag==1)
          {
            Xunji_run();                                       //自动循迹行驶
          }
          else
          {
         Stop();                           //暂停
          }
      }
}





/*******************************************************************************
* 函数名         : NVIC_Configuration
* 描述         : 初始化NVIC
* 输入         : 无
* 输出         : 无
* 返回         : 无
*******************************************************************************/
void NVIC_Configuration(void)
{
   NVIC_InitTypeDef NVIC_InitStructure;

   /* Configure the Priority Group to 2 bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel5_IRQn ;                // Enable the DMA_Channel5 Interrupt
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = TI***_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}



/******************* (C) COPYRIGHT 2011 STmicroelectronics *****END OF FILE****/
**** Hidden Message *****

只!下!载!不!顶!帖!的!都!是!坏!银!


heheng 发表于 2025-6-17 17:51:26

谢谢

ken032310 发表于 2025-2-15 12:19:22


感谢分享

eefocus_4017865 发表于 2024-7-28 12:44:50

谢谢分享

eefocus_4014825 发表于 2024-7-19 15:42:50

11111111

eefocus_3968093 发表于 2024-5-3 15:41:43

感谢分享!!!!

宵憧、 发表于 2024-4-17 16:01:14

学习学习,谢楼主!

YoungJune_e9704 发表于 2023-12-9 15:40:01

学习了

天空.~~ 发表于 2023-11-24 22:35:34

谢谢分享

飞翔195 发表于 2023-9-18 08:58:03

不错 谢谢分享
页: [1] 2 3 4 5 6 7 8
查看完整版本: STM32多功能智能小车制作(循迹+壁障+遥控)源码

Baidu
map