基于STM32C8T6的智能蓝牙小车(毕业设计)

基于stm32最小系统的蓝牙小车

硬件部分(成本
stm32最小系统(10r)型号具体为STM32F103C8T6
jdy-31蓝牙模块(10r)
L298N继电器模块(10r)直流步进电机版 直插电解
小车底座 50-70r(套装包括 四个直流电机 四个车轮 两块亚克力板车身)
40p 排线 2r 公对公
一共为 82元
下面放出部分硬件图

直流电机

车轮

电机驱动模块
(说一下接法,VCC GND 接12v电源 5V接单片机供电 左右接电机 注意电机没有正负 下面附一张电机输io控制图)

基于STM32C8T6的智能蓝牙小车(毕业设计)_第1张图片
四个信号角 根据代码来接单片机io口

蓝牙模块
说下接法 VCC GND接5V的源 TXD接单片机RXD RXD接单片机TXD

部分程序(参考于csdn一位大佬 修炼ing)
简单说下他的思路 蓝牙产生中断 串口通讯识别状态位 拉高/拉低io口电平
贴出主函数 全部代码留邮箱 我有空会发出

#include "MOTOR.h"
#include "stm32f10x.h"         
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_it.h"
#include 





#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif  
u8 i;
u8 flag;  
void USART1_IRQHandler(void)  
  
{
       
     if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)      
      {
      
			 USART_ClearITPendingBit(USART1, USART_IT_RXNE);   
			 GPIO_ResetBits(GPIOC,GPIO_Pin_13);                 
			 i=  USART_ReceiveData(USART1);                   
		
		   if(i=='0')
				{
                      
					 flag=0;
				}
				
			if(i=='1')
				{
     
					 flag=1;
				}
				
			if(i=='2')
			   {
     
					 flag=2;
				}
			   
			if(i=='3')
			   {
     
								 
					flag=3;
			   }
			   
			if(i=='4')
			  {
     
					flag=4;
			  }
			  
			if(i=='5')
			  {
     
					flag=5;
			  }
			  
			if(i=='6')
			 {
     
					flag=6;
			 }

		  }
		  

      }
	  
	  
int main(void)
{
     
	
	
	
	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);	
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	
    GPIO_Init(GPIOA, &GPIO_InitStructure); 
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);      
	
	 
   
	USART_InitStructure.USART_BaudRate = 9600;
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	USART_InitStructure.USART_Parity = USART_Parity_No;
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

	USART_Init(USART1, &USART_InitStructure);
	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

    
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			
	NVIC_Init(&NVIC_InitStructure);	
    USART_Cmd(USART1, ENABLE);                    
	MotorInit();
	  
	  
	
	while(1)
	  {
     
		  GPIO_ResetBits(GPIOC,GPIO_Pin_13);
		  switch(flag)
              {
      
					case 0:  Stop();         break  ;
					case 1:  Turnleft();     break  ;
					case 2:  Turnright();    break  ;
					case 3:  Turnback();     break  ;
					case 4:  Turnfront();    break  ;
					case 5:  Leftaround();   break  ;
					case 6:  Rightaround();  break  ;
                    default: Stop();         break  ;                                                                                                
	          }	
       

									
	  }
	  
}

PUTCHAR_PROTOTYPE
{
     
 
 USART_SendData(USART1, (uint8_t) ch);
 while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  {
     
}
  return ch;
}

小贴士

C8T6下载代码 要把部分代码屏蔽一下
基于STM32C8T6的智能蓝牙小车(毕业设计)_第2张图片
根据错误屏蔽以上代码

你可能感兴趣的:(笔记,单片机,stm32,蓝牙,物联网,嵌入式)