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

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

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

直流电机
在这里插入图片描述
车轮
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述
四个信号角 根据代码来接单片机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 <stdio.h>





#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下载代码 要把部分代码屏蔽一下
在这里插入图片描述
根据错误屏蔽以上代码

评论 81
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日落悬崖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值