目录
一、硬件配置
1.作品实图
2.L298n电机驱动模块
3.JDY-31蓝牙模块
二、软件配置
1.Stm32CubeMx配置引脚
2.串口通信
三、软件代码
1.马达模块
2.main.c
四、手机蓝牙APP
总结
一、硬件配置
配件:
- 7.4V锂电池
- 两个马达
- L298n电机驱动模块
- JDY-31蓝牙模块
- stm32f407zgt6单片机
(正面) (反面)
2.L298n电机驱动模块1、单片机在CubeMx上配置四个引脚连接逻辑输入四个引脚
2、将两个马达分别引出两条线接输出A和输出B,同时接跳线帽使能通道A和通道B
3、接入7-12V电源在12V供电口(可以在此处作开关处理,将电池正极连接开关一端,开关另一端接入12V供电),使电源转换为5v接入单片机(单片机最高5v),为单片机供电
4、将供电GND和5V供电接入单片机
3.JDY-31蓝牙模块这部分不作多解释,详细可以查看手册。
二、软件配置软件:
- Stm32CubeMx
- Keil5
这里配置PA1-A4四个引脚作马达引脚,A1-A2马达1,A3-A4马达2
2.串口通信
这里波特率需要和蓝牙波特率相同,否则无法实现数据发送
三、软件代码代码如下(示例):
1.马达模块Motor.c
一个电机2个引脚,一正一负驱动,通过对引脚赋值高低电平进行方向控制。
#include "Motor.h"
#include "gpio.h"
#include "main.h"
void Lower(){
HAL_GPIO_WritePin(Motor1_1_GPIO_Port,Motor1_1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(Motor1_2_GPIO_Port,Motor1_2_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(Motor2_1_GPIO_Port,Motor2_1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(Motor2_2_GPIO_Port,Motor2_2_Pin,GPIO_PIN_SET);
}
void Upper(){
HAL_GPIO_WritePin(Motor1_1_GPIO_Port,Motor1_1_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(Motor1_2_GPIO_Port,Motor1_2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(Motor2_1_GPIO_Port,Motor2_1_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(Motor2_2_GPIO_Port,Motor2_2_Pin,GPIO_PIN_RESET);
}
void Left(){
HAL_GPIO_WritePin(Motor1_1_GPIO_Port,Motor1_1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(Motor1_2_GPIO_Port,Motor1_2_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(Motor2_1_GPIO_Port,Motor2_1_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(Motor2_2_GPIO_Port,Motor2_2_Pin,GPIO_PIN_RESET);
}
void Right(){
HAL_GPIO_WritePin(Motor1_1_GPIO_Port,Motor1_1_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(Motor1_2_GPIO_Port,Motor1_2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(Motor2_1_GPIO_Port,Motor2_1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(Motor2_2_GPIO_Port,Motor2_2_Pin,GPIO_PIN_SET);
}
void Stop(){
HAL_GPIO_WritePin(Motor1_1_GPIO_Port,Motor1_1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(Motor1_2_GPIO_Port,Motor1_2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(Motor2_1_GPIO_Port,Motor2_1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(Motor2_2_GPIO_Port,Motor2_2_Pin,GPIO_PIN_RESET);
}
Motor.h
#ifndef _MOTOR_H_
#define _MOTOR_H_
void Upper(void);
void Lower(void);
void Left(void);
void Right(void);
void Stop(void);
#endif
2.main.c
uint8_t Receive;
while (1)
{
HAL_UART_Receive(&huart1,&Receive,1,HAL_MAX_DELAY);//等待蓝牙发送数据
if(Receive == 'w')
Upper();
else if(Receive == 's')
Lower();
else if(Receive == 'a')
Left();
else if(Receive == 'd')
Right();
else
Stop();
}
四、手机蓝牙APP
在手机蓝牙APP上开启编辑模式,修改按钮发送数据,连接蓝牙后就可以发送数据实现控制
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)