【单片机开发】智能小车工程 (蓝牙遥控JDY-31)

(一)关于蓝牙模块

现在最常见的蓝牙模块为HC05,而我这一次使用的是更加便宜的JDY-31型号的蓝牙模块。
对小车的蓝牙遥控本质上是通过串口的收发信息进行控制。需要提前下载一个蓝牙串口的APP手机应用商店就有。这一部分代码只需要编写main
串口函数直接用原子的函数无需修改。

(二)效果展示

在这里插入图片描述
在这里插入图片描述

(三)软件实现

#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "stm32f10x_tim.h"
#include "motor.h"
#include "PWM.h"
 
 int main(void)
 {		
 	u16 t;  
	u16 len;	
	u16 times=0;
	u8 a[200];
delay_init();	    	 //延时函数初始化	  
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600);	 //串口初始化为9600
TIM4_PWM_Init(899,0);
Motor_12_Config(); //298电机驱动初始化
	  
	 
	  IN1(Low);
	  IN2(High);
	  IN3(Low);
	  IN4(High);//保持控制正反转电平恒定默认直行
	 
	 while(1)
	{
		 Motor_1_STOP();
		 Motor_2_STOP();
		if(USART_RX_STA&0x8000)
		{		
			a[200]=0;	//用来存放读取的信息 其实只用第一位		   
			len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
			printf("\r\n您发送的消息为:\r\n\r\n");
			for(t=0;t<len;t++)
			{ a[t]= USART_RX_BUF[t];  //得到的数据为字符串类型
				USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
				while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
			}
			printf("\r\n\r\n");//插入换行
			USART_RX_STA=0;
			if(a[0]=='0')
   		{	
				 Motor_1_STOP();
				 Motor_2_STOP();
				delay_ms(1000);
				delay_ms(1000);
				delay_ms(1000);
		   }
			
		 if(a[0]=='1')   //向串口发送1 直行
   		{	
				 Motor_1_PRun(); 
				 Motor_2_PRun(); 
				delay_ms(1000);
				
		   }
		
			
			 if(a[0]=='2')
   		{	
				 Motor_left();
				 
				delay_ms(500);
		   }
			
			 if(a[0]=='3')
   		{	
				 Motor_right();
				delay_ms(500);
		   }
		
	     if(a[0]=='4')
   		{	
				Motor_1_PRun(); 
				Motor_2_NRun(); 
				delay_ms(1000);
				delay_ms(1000);
				delay_ms(1000);
		   }
		}	
		
			else
		{
			times++;
			if(times%5000==0)
			{
				printf("\r\n蓝牙串口实验\r\n");
				printf("杨某很帅\r\n\r\n");
			}
			if(times%200==0)printf("请输入数据,以回车键结束\n");  
			delay_ms(10);   
		}
	}	 
 }

上述代码所涉及到的一些其他函数请到其他文章寻找。

  • 11
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
使用STM32开发板驱动JDY-31蓝牙模块遥控小车需要以下步骤: 1. 硬件连接:将JDY-31蓝牙模块与STM32开发板连接。通常使用UART串口进行通信,将蓝牙模块的TX端口连接到STM32的RX端口,将蓝牙模块的RX端口连接到STM32的TX端口,并共享GND接地。 2. 确定通信参数:查找JDY-31蓝牙模块的数据手册,了解其通信协议和默认的波特率等参数。根据手册设置STM32的串口通信参数,包括波特率、数据位、停止位等。 3. 初始化串口:在STM32的代码中,初始化所使用的串口,使其与蓝牙模块相匹配。这涉及到设置串口的GPIO引脚、中断、波特率等。 4. 接收蓝牙数据:通过串口中断接收来自蓝牙模块的数据。当蓝牙模块发送数据时,STM32的串口接收中断会被触发,并将接收到的数据存储在指定的缓冲区中。 5. 解析和处理数据:根据JDY-31蓝牙模块的通信协议,解析收到的数据。根据协议定义的格式,提取出需要的指令和数据,例如前进、后退、转弯、停止等。 6. 控制小车:根据解析得到的指令和数据,控制小车的动作。通过驱动小车电机,控制其前进、后退、转弯等行为。 7. 反馈状态:根据实际情况,将小车的状态反馈给蓝牙模块。例如,可以通过蓝牙模块将小车的电量、速度等信息发送回手机或其他终端。 以上是使用STM32驱动JDY-31蓝牙模块遥控小车的基本步骤。具体实现上可能会有一些细节和特定的代码逻辑,具体根据实际情况进行修改和调整。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

与光同程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值