STM32F103RCT6 实验代码之舵机+超声波避障小车(三)蓝牙遥控

STM32 蓝牙遥控

一.蓝牙简述

我这次把小车的坑补上,这是小车的最后一个部分,蓝牙遥控。这个部分重点在于蓝牙,其实蓝牙可以相当于一个串口,用串口通信就可以进行手机与单片机之间的通信

HC-05蓝牙模块
这是我从网上找来的HC-05图片,我采用的就是这个HC-05模块,HC-05是蓝牙2.0,一般安卓手机都会向下兼容低版本蓝牙,但是苹果是不行的,如果苹果蓝牙是4.0的话就需要买4.0的蓝牙模块。
HC-05有六个引脚
①state
②RXD
③TXD
④GND
⑤VCC
⑥KEY

其中VCC,GND就不用多说了,VCC一般接3.3V~5V的电压都可以,GND就接单片机的地。RXD是接受脚,TXD是输出脚与单片机的串口相连,接反了的话就不会传输数据。
KEY是用来进行进入AT命令的,一般AT命令是用来改变蓝牙的一些本身设置,比如地址、名称、波特率等等。进入AT命令后,通过上位机输入命令即可更改蓝牙的设置,之后蓝牙也会反馈到上位机。具体的命令我会把厂家给的教程上传。

二.蓝牙遥控

蓝牙遥控就是进行串口通信,通过手机上给的数据进行判断之后处理,就是用switch case 语句就可以解决了。

#include "gpio.h"
#include "sys.h"
#include "delay.h"
#include "pwm.h"
#include "pwm2.h"
#include "usart2.h"

u8 i;
u8 flag;  //定义一个标志位
void USART2_IRQHandler(void)  
  
{  
     if(USART_GetITStatus(USART2, USART_IT_RXNE) == SET)      //检查指定的 USART2 中断发生与否
      { 
			USART_ClearITPendingBit(USART2, USART_IT_RXNE);   //清除 USART2 的中断待处理位
			i=  USART_ReceiveData(USART2);                    //返回 USART2 最近接收到的数据
			
				printf("%c",i);
		//if语句的内容部分可以保证蓝牙接收到的flag数据是正确的,如果不加的话会导致接收不到正确的数据
		  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()
{
	while(1)
	{
		My_USART2_Init();
		delay_init();
		gpio_Init();
		TIM1_PWM_Init(7199,0);
		TIM3_PWM2_Init(7199,0);
	
		TIM_SetCompare1(TIM1,1500);
		TIM_SetCompare3(TIM3,1500);


		 switch(flag)
              {
					case 0:  stop();         break  ;
					case 1:  front();     break  ;
					case 2:  left();    break  ;
					case 3:  right();     break  ;
					case 4:  turnleft();    break  ;
					case 5:  turnright();   break  ;
					case 6:  back();        break;
          default: stop();         break  ;                                                                                                
							}		  
		
		
	}

}






大体思路就是,手机对单片机传入数据,单片机判断传入的数据是什么,然后就进行了对电机的相关操作,我把电机的不同状态封装成了不同的函数,使用时调用函数就可以了。在这里插入图片描述
这里是手机蓝牙串口的界面,可以自己编辑,按下不同的按钮传出不同的数据。
到此小车部分就结束了。我放上三个链接,一个是蓝牙的教程,一个是蓝牙串口app其中我上传了两个串口app,一个是我整个工程的代码。
我的工程代码蓝牙部分我放在了read me中,打开就能看见,可能需要自己调整IO口
安卓蓝牙串口(内含两个app)
厂家蓝牙教程(包含AT指令等)
STM32 舵机+超声波+蓝牙

下面是超声波避障和蓝牙遥控的两个视频
蓝牙遥控视频
超声波+舵机避障视频

原创文章 5 获赞 8 访问量 1763

猜你喜欢

转载自blog.csdn.net/ljw__/article/details/105905142