基于stm32的蓝牙开关

本设计为原创DIY作品,2019.10.18日打好PCB样板,代码调试了近10天,出了V1.0版本,还有待改进的地方,比如功耗问题,V1.0版本功耗在58毫安左右,经改进V2.0功耗在2毫安左右(主要是舵机的待机功耗,在2.5毫安左右),2.0的板子还没打好,这里先贴出V1.0的板子设计和代码,设计上或者代码上有问题的还望大家指正。如需转载,请注明出处,QQ:1907913345,Author:Vence

Q1:此电路中主芯片的VCC和GND之间没有加耦合电容,在电压不稳定的情况下,容易烧坏主芯片,一般情况不会烧坏

Q2:此电路中的按键GND脚设置错误,需要的请自行修改板子

Q3:所使用的蓝牙模块为信驰达的主从一体4.0

Q4:V1.0的电路图中我把蓝牙模块的P05和P04接到BLUE和RED上了,本来希望来用来判断是否连接成功,发现这样设计的话,没法将P05拉低,就不能利用蓝牙进行停机唤醒。

Q5:AMS1117可以不使用,本来想用5V的电源来驱动马达的,但是发现马达转速太快,关不了灯,后来换成了舵机,就不需要AMS1117和HR9110的马达驱动芯片了

原理图:

基于stm32的蓝牙开关_第1张图片

PCB:

基于stm32的蓝牙开关_第2张图片

 

实物:

基于stm32的蓝牙开关_第3张图片

 

基于stm32的蓝牙开关_第4张图片

 

操作方式:

V1.0版本:蓝牙APP发送0x01,舵机转动到-45°,发送0x02,舵机转动到-90°,发送0x11,舵机转动到45°,发送0x12,舵机转动到90°,发送0x00,舵机转动到0°。

主函数代码:

//本设计利用信驰达进行蓝牙通信,通过串口1控制电动马达的转动,stm32的PB1控制蓝牙模块的使能,蓝牙模块的工作电压范围在1.8-3.3V,具有低功耗
//2019年10月22号21点44分,作者Vence
#include "stm32f10x.h"
#include "usart1.h"
#include "bluetooth.h"
#include "key.h"
#include "led.h"
#include "motor.h"
#include "runmodel.h"

u8 motor_mode = 0;       	//电机运动模式
u8 send_flag = 0;

int main(void)
{	
		NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);		         //中断控制器分组设置
		Key_Init();										                            //初始化按键
		EXTI_Configuration();
		Usart1_Init(115200);					                           //设置串口1的波特率为115200bit
		LedInit();									                            //初始化led
		Delay_Init();									                         //初始化延迟函数
		BlueTooth_Init();							                        //初始化蓝牙模块
		USART_Cmd(USART1, ENABLE);													 //除能串口
		GPIO_ResetBits(GPIOB,EN);
		Motor_Init();																				//舵机初始化
		Lo_Signal;
		while(1)
		{
			if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) == Bit_RESET)
			{
				DelayMs(100);
				if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) == Bit_RESET)
				{
					send_flag++;
					if(send_flag == 2)
						send_flag = 0;
					if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_2) == Bit_RESET)
						GPIO_SetBits(GPIOA,GPIO_Pin_2);	
					else
						GPIO_ResetBits(GPIOA,GPIO_Pin_2);	
					
					if(send_flag == 1)
					{
						Motor_Mode(Reverse_45);
					}
					
					if(send_flag == 0)
					{
						Motor_Mode(Forward_45);
					}
				}
			}
			
		}
}

 

你可能感兴趣的:(stm32)