请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】基于STM32F103的平衡小车(文末附代码)

STMCU小助手 发布时间:2021-9-15 13:29
13.png
硬件介绍
    主控芯片用的是100脚的STM32F103VET6,陀螺仪用的是MPU6050,电机驱动用的是TB6612,蓝牙是汇承的HC05邮票孔封装的,WIFI用的USR-WIFI232-S,小车底盘用的是平衡小车之家的某一款带编码器的,电池用的是一节7.2的镍镉电池,液晶用的是1.3寸IIC接口的OLED,开关用的是三脚纽子开关,电池接口用的是T插,电阻电容这些用的基本上是0603封装,编码器5V降压用的是ASM1117-5.0,3.3V降压用的是SP6203,拨码开关用的是4P贴片式2.54mm角距的,按键是两脚贴片,microusb接口用的是5针 7.2四脚插板牛角母座,超声波是某宝上几块钱烂大街的那种,蜂鸣器是有源的,编码器是小车底盘自带的,电池电压检测是电阻分压之后通过电压跟随器接入MCU内部AD测量的。
    STM32F103VET6主控芯片;两个microusb口,第一个是MCU的串口1,可作为普通的串口收发数据,通过调节板上BOOT选项,也可将其作为ISP下载程序接口;第二个是SWD硬件仿真接口;蓝牙模块,与MCU的串口2连接;WIFI模块,与MCU的串口3相连;一块1.3寸IIC协议的液晶接口;超声波接口;双电机驱动;六轴陀螺仪;电池电压检测;4个用于调试的LED;4个独立式按键;一组4P的拨码开关;有源蜂鸣器;两个6P带AB相编码器的电机接口。
    如下是电路原理图:
14.png
    如下打样好的PCB:
15.png
软件介绍
    这份配套的软件,模块分的很清楚。比如蓝牙的遥控部分,超声波部分在完整版的工程里面都是写好的。最好的办法就是,参照这个程序,一点一点自己粘贴然后修改底层搭建自己的工程。或者你也可以把自己的电路画的跟别人的一样,避免修改别人的底层,这样你粘贴过来甚至都不用改就能用了。
    如下是main.c代码:

  1. #include "stm32f10x.h"
  2. #include "stdio.h"
  3. #include "systic.h"
  4. #include "OLED.h"
  5. #include "MPU6050.h"
  6. #include "LED.h"
  7. #include "Buzzer.h"
  8. #include "Switch.h"
  9. #include "Key.h"
  10. #include "Motor.h"
  11. #include "USART.h"
  12. #include "TIM.h"

  13. uint32_t Main_Count = 0;
  14. uint8_t  Key_num = 0;
  15. uint32_t Test;
  16. uint8_t Temp[20];

  17. int main(void)
  18. {
  19.     USART_NVIC_Configuration();          // 配置串口中断
  20.    USART_Config();                // 配置串口
  21.     SysTick_Init();      //滴答定时器初始化
  22.   OLED_Init();      //OLED引脚初始化
  23.   OLED_Clear();      //OLED清屏
  24.   OLED_First_Line();  //OLED第一行显示: 贺梓洹毕业设计
  25.   LED_Init();        //LED引脚初始化
  26.   Speak_Init();      //蜂鸣器引脚初始化
  27.   Switch_Init();      //拨码开关引脚初始化
  28.   Key_Init();        //按键引脚初始化
  29.   MPU6050_Init();
  30.   PWM_Init(7199,0);
  31.   TIM_Config();
  32. //  Speak=1;
  33. //  Delay_s(1);
  34. //  Speak=0;
  35.   while(1)
  36.   {
  37. //    KeyScan();


  38. //    if(Key1_Count==1)
  39. //    {
  40. //      Key1_Count=0;
  41. //    kp=kp+3;
  42. //    }
  43. //    OLED_ShowNum(0,6,Key1_Count,6,16);//显示ASCII字符的码值
  44. //    OLED_ShowNum(0,4,Key2_Count,6,16);//显示ASCII字符的码值
  45. //    OLED_ShowNum(0,6,Key3_Count,3,16);//显示ASCII字符的码值
  46. //    OLED_ShowNum(103,6,Key4_Count,3,16);//显示ASCII字符的码值
  47. //    Delay_ms(5);
  48. //    OLED_ShowNum(103,6,Key4_Count,3,16);//显示ASCII字符的码值
  49. //   LED2=0;
  50. //   LED3=0;
  51. //   LED4=0;
  52. //   Speak=0;
  53. //   Delay_s(1);
  54. ////   LED1=1;
  55. //   LED2=1;
  56. //   LED3=1;
  57. //   LED4=1;
  58. //   Speak=1;
  59. //   Delay_s(1);


  60. //         READ_MPU6050();
  61. //       Kalman_Filter(Data_6050.Acc_X , Data_6050.Gryo_Y);  
  62. ////     //GyroX++;
  63. //     OLED_ShowNum(103,2,Data_6050.Acc_X,3,16);//显示ASCII字符的码值
  64. ////     //GyroY++;
  65. //     OLED_ShowNum(103,4,Data_6050.Gryo_Y,3,16);//显示ASCII字符的码值
  66. ////     //GyroZ++;
  67. //     OLED_ShowNum(103,6,angle,3,16);//显示ASCII字符的码值
  68. //     Delay_ms(100);
  69.   }
  70. }
复制代码
代码及原理图如下:
游客,如果您要查看本帖隐藏内容请回复





13.png
收藏 评论1 发布时间:2021-9-15 13:29

举报

1个回答
goyhuan 回答时间:7 天前
看看
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版