蓝牙模块控制舵机教程

一.模块介绍

蓝牙模块

  • 蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块远程控制模块等。

  • RXD: 接收端

  • TXD: 发送端

实物图及参数
在这里插入图片描述

舵机

原理
舵机的控制一般需要一个20MS左右的时基脉冲,该脉冲的高电平部分一般为0.5MS-2.5MS范围内的角度控制脉冲部分,总间隔为2Ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5MS--------o度;
1.0MS-------45度;
1.5MS-------90度;
2.0MS-------135度;
2.5MS-------180度;

  • 占空比控制舵机角度:
    在这里插入图片描述

实物图及参数
在这里插入图片描述

二.开发工具

  • 编程软件:KEIL5
  • 串口软件:XCOM V2.0
  • 烧录软件:stc-isp-15xx-v6.86C
  • 手机APP:SPP蓝牙串口(安卓手机)

三.程序代码

部分代码如下,完整代码在下面会提供百度网盘下载。
对应视频讲解说明在B站有分享。

在main.c文件中

/*
B站:Tuyue沐尘
本程序采用stc8a8k64s4a12为主控
舵机接线-----信号线接P37

蓝牙模块 TX---接单片机P30
        RX---接单片机P31
*/

#include "all.h"


int main()
{
  sart_Init(9600);
  Timer0Init();
  printf("这是一个串口程序\r\n");
	while(1)
	{	
		steering_control();
		switch(rdata)          //串口控制,写需要的效果 
		{
			case '1':P00=0;break;  //舵机控制
			case '2':P00=1;break;
			
			case '3':P01=0;break;  //灯控制
			case '4':P01=1;break;
		}
		
		if(usart_flag)
		{
			usart_flag=0;
			usart_send_str(buffer);              //字符串回显
			if((strcmp((char*)buffer,"led_on"))==0)
			{
				memset(buffer,0,sizeof(buffer));  //c语言数组清零
			  P01=0;
			}
		}
	}
}

在usart.c文件中

#include "usart.h"

#define sysclk 24000000



bit busy;
int r_ret=0;
int usart_flag=0;
char buffer[32];
char rdata;


void usart_Init(int BRT)                  
{
	SCON = 0x50;	
	//关闭定时器0,模式选择16位自动重载
	TMOD = 0x00;	
	//定时器1,1分频,选择定时器1为波特率发生器
	AUXR = 0x40;
	//波特率
	TL1 = (65536-sysclk/BRT/4);		
	TH1 = (65536-sysclk/BRT/4)>>8;
	//禁止T1中断
	ET1 = 0;	
	//开启定时器1
	TR1 = 1;
	//开启串口1中断
	ES = 1;
	//使能总中断
	EA = 1;
	busy = 0;
}



void usart_send(char dat)   //字符
{
	while(busy);
	busy = 1;
	SBUF = dat;
}

void usart_send_str(char *p)  //字符串
{
	while(*p)
	{
		usart_send(*p++);
	}
}

char putchar(char c)   //printf
{
	usart_send(c);
	return c;
}

void usart_Isr() interrupt 4 
{

	if(TI==1)
	{
		TI=0;
		busy=0;
	}
	if(RI==1)
	{
		RI=0;
		rdata=SBUF;
//		usart_send(rdata);               //回显
		if(rdata!='\r' && rdata!='\n')  //看是否换行or回车,再进行存放数组
		{
			buffer[r_ret++]=rdata;		//buffer[0]=rdata;
		}
		if(rdata=='\n')
		{
			buffer[r_ret]=0;
			usart_flag=1;
			r_ret=0;
		}
	}
}

四.串口调试和手机APP控制

电脑端
在这里插入图片描述
手机端
在这里插入图片描述

五.分享的百度网盘资料

在这里插入图片描述
B站视频链接
蓝牙模块控制舵机教程视频讲解

百度网盘链接

51、stc8a8k、stm32的都开源到百度网盘,提供大家下载
链接:https://pan.baidu.com/s/1LT_lrPcQaQCkeAzmUREY5g
提取码:5ar9

版权声明:本文为CSDN博主「吱迷」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_56199657/article/details/117369176

一.模块介绍

蓝牙模块

  • 蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块远程控制模块等。

  • RXD: 接收端

  • TXD: 发送端

实物图及参数
在这里插入图片描述

舵机

原理
舵机的控制一般需要一个20MS左右的时基脉冲,该脉冲的高电平部分一般为0.5MS-2.5MS范围内的角度控制脉冲部分,总间隔为2Ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5MS--------o度;
1.0MS-------45度;
1.5MS-------90度;
2.0MS-------135度;
2.5MS-------180度;

  • 占空比控制舵机角度:
    在这里插入图片描述

实物图及参数
在这里插入图片描述

二.开发工具

  • 编程软件:KEIL5
  • 串口软件:XCOM V2.0
  • 烧录软件:stc-isp-15xx-v6.86C
  • 手机APP:SPP蓝牙串口(安卓手机)

三.程序代码

部分代码如下,完整代码在下面会提供百度网盘下载。
对应视频讲解说明在B站有分享。

在main.c文件中

/*
B站:Tuyue沐尘
本程序采用stc8a8k64s4a12为主控
舵机接线-----信号线接P37

蓝牙模块 TX---接单片机P30
        RX---接单片机P31
*/

#include "all.h"


int main()
{
  sart_Init(9600);
  Timer0Init();
  printf("这是一个串口程序\r\n");
	while(1)
	{	
		steering_control();
		switch(rdata)          //串口控制,写需要的效果 
		{
			case '1':P00=0;break;  //舵机控制
			case '2':P00=1;break;
			
			case '3':P01=0;break;  //灯控制
			case '4':P01=1;break;
		}
		
		if(usart_flag)
		{
			usart_flag=0;
			usart_send_str(buffer);              //字符串回显
			if((strcmp((char*)buffer,"led_on"))==0)
			{
				memset(buffer,0,sizeof(buffer));  //c语言数组清零
			  P01=0;
			}
		}
	}
}

在usart.c文件中

#include "usart.h"

#define sysclk 24000000



bit busy;
int r_ret=0;
int usart_flag=0;
char buffer[32];
char rdata;


void usart_Init(int BRT)                  
{
	SCON = 0x50;	
	//关闭定时器0,模式选择16位自动重载
	TMOD = 0x00;	
	//定时器1,1分频,选择定时器1为波特率发生器
	AUXR = 0x40;
	//波特率
	TL1 = (65536-sysclk/BRT/4);		
	TH1 = (65536-sysclk/BRT/4)>>8;
	//禁止T1中断
	ET1 = 0;	
	//开启定时器1
	TR1 = 1;
	//开启串口1中断
	ES = 1;
	//使能总中断
	EA = 1;
	busy = 0;
}



void usart_send(char dat)   //字符
{
	while(busy);
	busy = 1;
	SBUF = dat;
}

void usart_send_str(char *p)  //字符串
{
	while(*p)
	{
		usart_send(*p++);
	}
}

char putchar(char c)   //printf
{
	usart_send(c);
	return c;
}

void usart_Isr() interrupt 4 
{

	if(TI==1)
	{
		TI=0;
		busy=0;
	}
	if(RI==1)
	{
		RI=0;
		rdata=SBUF;
//		usart_send(rdata);               //回显
		if(rdata!='\r' && rdata!='\n')  //看是否换行or回车,再进行存放数组
		{
			buffer[r_ret++]=rdata;		//buffer[0]=rdata;
		}
		if(rdata=='\n')
		{
			buffer[r_ret]=0;
			usart_flag=1;
			r_ret=0;
		}
	}
}

四.串口调试和手机APP控制

电脑端
在这里插入图片描述
手机端
在这里插入图片描述

五.分享的百度网盘资料

在这里插入图片描述
B站视频链接
蓝牙模块控制舵机教程视频讲解

百度网盘链接

51、stc8a8k、stm32的都开源到百度网盘,提供大家下载
链接:https://pan.baidu.com/s/1LT_lrPcQaQCkeAzmUREY5g
提取码:5ar9

版权声明:本文为CSDN博主「吱迷」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_56199657/article/details/117369176

生成海报
点赞 0

吱迷

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

蓝牙模块控制舵机教程

一.模块介绍 蓝牙模块 蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大