一、设计简介

针对STM32单片机控制的四足机器人项目,使用8个SG90舵机并通过蓝牙BT06进行控制,以下是视频展示

基于stm32四足机器人,sg90舵机8个,蓝牙模块BT06

百度网盘源码资料下载链接icon-default.png?t=O83Ahttps://pan.baidu.com/s/1DpydIRuhsTLnbWYqtZ3o0A?pwd=vgaz

二、硬件准备

  1. STM32单片机

 STM32F103C8T6单片机是一款非常用的单片机型号,可以方便灵活的进行嵌入式系统开发。首先,它的处理器基于Cortex-M3内核,最高工作频率达72MHz。STM32F103C8T6拥有64KB闪存和20KB SRAM,非常适合中小型单片机开发项目。

具有非常丰富的外设接口,如串口USART、SPI通信、I2C通讯、CAN通讯和USB,在与单片机外设通信方面非常方便。有多个GPIO通用IO口,定时器,中断系统,灵活配置为输入,输出、模拟输入或PWM输出,可以连接各类传感器和模块。

内部集成的12位逐次逼近型ADC和DAC,支持高精度模拟信号处理。STM32F103C8T6还支持低功耗模式,适合电池供电的应用场景。结合强大的STM32开发生态,包括库函数和工具链,可以让开发者很方便的完成单片机项目的开发。

  1. SG90舵机

  2. 共8个,用于驱动四足机器人的四条腿。

SG90舵机是一种位置(角度)伺服的驱动器,适用于需要角度不断变化并可以保持的控制系统。在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。

  • 无负载速度:0.12秒/60度(4.8V)
  • 堵转扭矩:1.2~1.4公斤/厘米(4.8V)
  • 使用温度:-30~+60摄氏度
  • 死区设定:7微秒(7MHZ)
  • 工作电压:4.8V~6V
  • 位置等级:1024级

舵机一般可以在0~180度或0~360度范围内转动任意角度,经常用于小车小船转向控制和机械臂的关节等。舵机的转动角度范围不是固定的,一般选用0~180度旋转的舵机,简称180度舵机。

SG90舵机的工作原理主要由电机、电子控制板和位置反馈器三部分组成。当系统通过SG90 PWM信号控制电子控制板时,电机内部的电机轴会向上或向下旋转,从而输出一定的转角位置。位置反馈器会读取输出轴的角度位置信息,并将该信息反馈给电子控制板,从而实现闭环控制。

在控制SG90舵机时,MCU需要产生一个20ms的脉冲信号,以0.5ms到2.5ms的高电平来控制舵机的角度。高电平时间与舵机旋转角度的对应关系如下:

  • 0.5ms:0度(占空比为2.5%)
  • 1.0ms:45度(占空比为5.0%)
  • 1.5ms:90度(占空比为7.5%)
  • 2.0ms:135度(占空比为10.0%)
  • 2.5ms:180度(占空比为12.5%)
  1. 蓝牙BT06模块

  2. 用于实现与手机或其他蓝牙设备的无线通信,从而控制四足机器人的运动。

BT06蓝牙模块是一款专为智能无线数据传输设计的模块,以下是对其的详细介绍:

一、主要特点

  • 遵循蓝牙规范:BT06蓝牙模块遵循V3.0蓝牙规范,确保了数据传输的稳定性和高效性。
  • 支持UART接口:该模块支持UART接口,方便与各种微控制器、单片机等设备进行连接和数据传输。
  • 支持SPP蓝牙串口协议:BT06蓝牙模块支持SPP(Serial Port Profile)蓝牙串口协议,使得数据传输更加简单和直接。
  • 成本低、体积小:模块具有成本低、体积小的优点,适合在各种小型设备中使用。
  • 功耗低、收发灵敏性高:只需配备少许的外围元件就能实现其强大功能,同时功耗较低,收发灵敏性高。

二、硬件接口

  • 电源接口:通常接在5V供电口上。
  • 数据传输接口:TXD、RXD接口用于数据传输,只需将蓝牙的TXD、RXD接口对应接在串口的RXD、TXD上,即可进行数据传输。

三、工作模式

  • 数据透传模式:当BT06蓝牙模块上电并与手机APP配对成功后,即进入数据透传模式。在数据透传模式下,从串口发送出的所有消息都可以原封不动地传输到手机APP中,实现了数据的透明传输。

四、AT指令集

BT06蓝牙模块支持AT指令集,用户可以通过串口发送AT指令来配置和控制模块。以下是一些常用的AT指令:

  • 测试指令:发送“AT”,返回“OK”表示模块工作正常。
  • 模块复位:发送“AT+RESET”,模块将重启并恢复到默认状态。
  • 获取软件版本号:发送“AT+VERSION”,返回软件版本号。
  • 恢复默认状态:发送“AT+DEFAULT”,模块将恢复到出厂默认设置。
  • 设置/查询蓝牙地址码:发送“AT+LADDR<地址码>”,可以设置或查询模块的蓝牙地址码。
  • 设置/查询设备名称:发送“AT+NAME<名称>”,可以设置或查询模块的蓝牙设备名称。
  • 查询模块角色:发送“AT+ROLE”,可以查询模块的角色(主角色或从角色)。
  • 设置/查询配对码:发送“AT+PIN<配对码>”,可以设置或查询模块的蓝牙配对密码。
  • 设置/查询串口波特率:发送“AT+BAUD<波特率>”,可以设置或查询模块的串口波特率。

三、硬件连接

  1. STM32与SG90舵机的连接

    • 使用STM32的PWM输出引脚(如TIM2和TIM4的通道)连接SG90舵机的信号线。
    • 根据SG90舵机的工作原理,通过PWM信号的占空比来控制舵机的旋转角度。
  2. STM32与蓝牙BT06模块的连接

    • 将蓝牙BT06模块的RXD和TXD引脚分别连接到STM32的串口(如USART2)的TXD和RXD引脚上。
    • 配置STM32的串口以接收和发送蓝牙数据。

四、软件设计

  1. STM32固件开发

    • 使用Keil等开发工具进行STM32固件的开发。
    • 配置STM32的时钟、GPIO、PWM和串口等外设。
    • 编写PWM控制代码,用于生成控制SG90舵机所需的PWM信号。
    • 编写串口通信代码,用于接收和解析来自蓝牙BT06模块的数据。
  2. 蓝牙通信协议

    • 定义一套蓝牙通信协议,用于手机或其他蓝牙设备与STM32单片机之间的数据交换。
    • 协议可以包括控制指令、数据格式、校验方式等内容。
  3. 四足机器人步态控制

    • 根据四足机器人的运动需求,设计相应的步态控制算法。
    • 通过调整SG90舵机的旋转角度和速度,实现四足机器人的前进、后退、转向等动作。
  4. 调试与优化

    • 在实际调试过程中,可能需要对PWM信号的占空比、串口通信的波特率等参数进行调整。
    • 根据四足机器人的运动效果,对步态控制算法进行优化。

五、原理图及设计流程图

六、程序代码

#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_usart.h"
#include "bsp_GeneralTim.h"
#include "bsp_servo.h"

uint8_t state;

int main()
{
	USART_Config();
	LED_GPIO_Config();
	
	printf("四足机器人初始化中!\r\n");
	
	GENERAL_TIM_Init();

	while(1)
	{
		if(USART_GetFlagStatus(DEBUG_USARTx_2,USART_FLAG_RXNE) != RESET)
		{
			state = USART_ReceiveData(DEBUG_USARTx_2);
			Usart_SendByte(DEBUG_USARTx_1, state);
		}
		
		//机器人的动作通过扫描串口的值进行选择进入
		//蓝牙主机设置为:按下发送01、02、03...,松手发送00
		switch(state)
		{
			case 0:
				//暂停状态
				break;
			case 1:
				//前进
				Servo_Advance();
				break;
			case 2:
				//右转
				Servo_RightTurn();
				break;
			case 3:
				//左转
				Servo_LeftTurn();
				break;
			case 4:
				//后退
				Servo_Retreat();
				break;
			case 5:
				//特殊姿势1,左右摆动
				Servo_Pose_1();
				break;
			case 6:
				//站立
				Servo_Stand();
				break;
			case 7:
				//趴下
				Servo_Fall();
				break;
			case 8:
				//复位姿态
				Servo_Reset();
				break;
			default:
				printf("无任何状态指示!\r\n");
				break;
		}
	}
}

七、实物图片

八、实物图片

百度网盘源码资料下载icon-default.png?t=O83Ahttps://pan.baidu.com/s/1DpydIRuhsTLnbWYqtZ3o0A?pwd=vgaz

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐