快捷搜索: 王者荣耀 脱发

简单的手机蓝牙遥控智能小车

       蓝牙驱动基本原理

辆小车的基本功能就是让它能动起来,能通过手机蓝牙进行遥控,所以就需要用到L298N电机驱动模块,和HC-06蓝牙模块。下面就简单介绍一下这两个模块。

一个L298N电机驱动模块能驱动2个马达,小车是四驱驱动,我们可以把两个L298N模块并联,并用12V电压供电,如果你的小车不需要调速,就不用考虑PWM问题,也就无需把使能端ENA、ENB的跳线帽拔掉,直接将IN1、IN2、IN3、IN4与单片机的端口相连,把OUT1、OUT2、OUT3、OUT4与马达相连即可。

电机驱动模块弄好后,离它能动就只有一步之遥了,我们需要用到HC-06蓝牙模块对小车进行控制。

蓝牙模块的TXD,RXD要分别与单片机的RXD、TXD相连,这样串口通信才能收发正常,然后软件设置串口。利用switch 函数,对蓝牙接收的数据进行处理,执行相应的运动。(串口调试我推荐正点原子的Xcom都行啊,能有就行了)。

下面是引脚控制98N的驱动,主要是原理双H桥路理解了就差不多了,你马达接反了转向就会不一样,哈哈小爷我就是这样马达接反了,所以要灵活运用。

主要程序

#include<reg52.h>

#define uchar unsigned char
#define uint  unsigned int

sbit IN1=P1^0;	   //  
sbit IN2=P1^1;	   //  
sbit IN3=P1^2;	   //  
sbit IN4=P1^3;	   //  
sbit IN5=P1^4;	   //
sbit IN6=P1^5;	   //  
sbit IN7=P1^6;	   // 
sbit IN8=P1^7;	   //  

 void stop()
{
IN1=0;		
		IN2=0;		 
		IN3=0;		 
		IN4=0;		 
		
		IN5=0;		 
		IN6=0;		 
		IN7=0;		 
		IN8=0;
}

void forward()
{
	IN1=0;		 
		IN2=1;		 
		IN3=0;		 
		IN4=1;		 
		
		IN5=1;		 
		IN6=0;		 
		IN7=0;		 
		IN8=1;  
}

void back()
{
    IN1=1;		 
		IN2=0;	//	 
		IN3=1;		 
		IN4=0;		// 
		
		IN5=0;		 
		IN6=1;		//  
		IN7=1;		 // 
		IN8=0;		
}

void left()
{
IN1=0;		 
		IN2=0;		 
		IN3=0;		 
		IN4=0;		 
		
		IN5=0;		 
		IN6=0;		 
		IN7=0;		 
		IN8=1;	
}

void right()
{
IN1=0;		 
		IN2=0;		 
		IN3=1;		 
		IN4=0;		 
		
		IN5=1;		 
		IN6=0;		 
		IN7=0;		 
		IN8=0;	
	
}
void Com_Int(void) interrupt 4
{
	uchar receive_data;	
	EA = 0;
	if(RI == 1) 
	{ 
		RI=0; 
			IN2=0;		 
		IN3=0;		 
		IN4=0;		 
		
		IN5=0;		 
		IN6=0;		 
		IN7=0;		 
		IN8=0;
		receive_data = SBUF;
		switch(receive_data)
		{
		case (1):
				forward();break;
			case (2):
				back();break;
			case (3):
				left();break;
			case (4):
				right();break;
			case (0):
				stop();break;
		}			
	}		
		EA = 1;
}
	
void UsartConfiguration()
{	
	SCON=0X50;	//		
	TMOD=0X20;			
	PCON=0X00;		
	TH1=0Xfd;		    
	TL1=0Xfd; //
	TR1= 1;					
	ES = 1;        
    	EA = 1;         
}


void main()
{
	UsartConfiguration();	
	while(1);	
}
经验分享 程序员 微信小程序 职场和发展