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

STM32平衡小车

[复制链接]
STMCU小助手 发布时间:2022-10-11 19:17
微信图片_20221011191641.png

2 ~! y' ]" q1 \" {# ]+ H( f硬件介绍9 p$ K2 S+ [0 _6 ^. K$ {
    主控芯片用的是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测量的。+ p- e, B! p; e( I$ _0 R
    STM32F103VET6主控芯片;两个microusb口,第一个是MCU的串口1,可作为普通的串口收发数据,通过调节板上BOOT选项,也可将其作为ISP下载程序接口;第二个是SWD硬件仿真接口;蓝牙模块,与MCU的串口2连接;WIFI模块,与MCU的串口3相连;一块1.3寸IIC协议的液晶接口;超声波接口;双电机驱动;六轴陀螺仪;电池电压检测;4个用于调试的LED;4个独立式按键;一组4P的拨码开关;有源蜂鸣器;两个6P带AB相编码器的电机接口。
+ W  j$ i) c- E0 z    如下是电路原理图:( [, ?, I$ A, Y7 d0 x& c# y# l
微信图片_20221011191638.png
- j8 T0 g$ Q* L
- S8 M  ]  s; M: v
    如下打样好的PCB:
) ]' H9 Y. z" F1 C
微信图片_20221011191635.png

+ I: D% o/ E' |* V9 b
# x- ~+ C4 x! a0 B! ~0 D软件介绍) e5 m- h. Y/ [1 ]8 d
    这份配套的软件,模块分的很清楚。比如蓝牙的遥控部分,超声波部分在完整版的工程里面都是写好的。最好的办法就是,参照这个程序,一点一点自己粘贴然后修改底层搭建自己的工程。或者你也可以把自己的电路画的跟别人的一样,避免修改别人的底层,这样你粘贴过来甚至都不用改就能用了。相关推荐:做一个STM32小车很简单吗?  X. d$ V" m2 ]6 _
    如下是main.c代码:
3 T( L" t& _! T7 n5 `$ j
  1. #include "stm32f10x.h"' T* z4 n# S6 |
  2. #include "stdio.h"* g. b0 g  }% t' B  S" r
  3. #include "systic.h"0 s4 }8 o* p6 W4 R* F
  4. #include "OLED.h"6 I' }8 Q3 k% k$ a( \! y
  5. #include "MPU6050.h"% H; T( O: Y8 T/ \
  6. #include "LED.h"9 K6 f# E/ d: v: y) @$ ^7 f% C
  7. #include "Buzzer.h"
    * Q' p+ }) t7 u7 q0 C
  8. #include "Switch.h". X# N7 J3 Q3 H% o! h  p7 ^, H; ]
  9. #include "Key.h"
    2 o' H- k& N+ c! ]
  10. #include "Motor.h"" R+ n( b5 \( ^& y, M' Z2 y
  11. #include "USART.h"+ o' p+ z! @3 L) R
  12. #include "TIM.h"9 N! i' r6 _5 P! M
  13. ! ]( l8 g, F6 K6 v' |
  14. uint32_t Main_Count = 0;0 |. I( V% v' F  Y( u/ o& l4 J
  15. uint8_t  Key_num = 0;
    0 c! P3 ]' \; S" ?6 q* ^6 ^0 C" l
  16. uint32_t Test;9 F% }% f' B8 f9 y. Q
  17. uint8_t Temp[20];
    2 ^2 [, }0 M" l" E8 M  v

  18. 5 _5 k7 c1 s, b. S9 N* }) @% W0 {
  19. int main(void)
    / L( s! K2 Q! Z
  20. {
    / I" Z+ }9 q+ {/ z' |8 X4 w( k& H
  21.     USART_NVIC_Configuration();          // 配置串口中断
    $ h( c; {1 r1 _- \8 m$ k- R8 U
  22.    USART_Config();                // 配置串口
    . p0 m! H$ f3 m5 ~
  23.     SysTick_Init();      //滴答定时器初始化 & T% V( i+ L& Z. @
  24.   OLED_Init();      //OLED引脚初始化
    - J7 w. Z' C' G+ }2 y6 D0 Q+ W1 {
  25.   OLED_Clear();      //OLED清屏 0 x& A5 s3 I% m! d% ?0 j: R0 Z) j3 S
  26.   OLED_First_Line();  //OLED第一行显示: 贺梓洹毕业设计2 |" z# C0 H+ s3 b5 N1 ^
  27.   LED_Init();        //LED引脚初始化6 f7 f0 w6 D) J* F* m* O3 O7 R' M" K
  28.   Speak_Init();      //蜂鸣器引脚初始化1 Y% Y" ?# i% i4 n3 m
  29.   Switch_Init();      //拨码开关引脚初始化
    . C! P# B0 y; L/ }( A
  30.   Key_Init();        //按键引脚初始化7 t& O* T( T0 \+ s3 n% i
  31.   MPU6050_Init();
    / _0 m; l& ]9 Z+ d
  32.   PWM_Init(7199,0);
    + t9 h6 r  Z3 p! ~* M% ?! g  b
  33.   TIM_Config();
    : E5 R- e; Q: X' k, W
  34. //  Speak=1;. M' J6 U9 J: C0 G) N
  35. //  Delay_s(1);* o4 v! _2 I: \
  36. //  Speak=0;
    2 C% k$ j4 b; \2 T9 u8 N# l( K
  37. while(1)+ I4 [9 i, t1 o8 v; ?6 U# Y' U9 E% @
  38.   {" l% J! s( i1 n
  39. //    KeyScan();' }9 m, O) b! \5 l6 ~
  40. ) K8 ]1 {+ w  K1 g# m6 f

  41. 0 t! R, k3 [* c
  42. //    if(Key1_Count==1). I2 a2 Y# z5 O4 r" a
  43. //    {
    ( p, k* }$ U" Q) h( ^
  44. //      Key1_Count=0;
    ( f0 w8 R' i) {5 @1 V( y( p
  45. //    kp=kp+3;
    ' `# w" _, |6 g9 f' {. n1 C1 T$ K
  46. //    }0 C# V! Y! L3 h" J. g8 |% [* L
  47. //    OLED_ShowNum(0,6,Key1_Count,6,16);//显示ASCII字符的码值4 ~/ Y; r3 ~! \4 D% a
  48. //    OLED_ShowNum(0,4,Key2_Count,6,16);//显示ASCII字符的码值. W) G7 Z# a. P, w9 }6 F' o
  49. //    OLED_ShowNum(0,6,Key3_Count,3,16);//显示ASCII字符的码值5 z: z  t% i, I+ G- t/ ~# v
  50. //    OLED_ShowNum(103,6,Key4_Count,3,16);//显示ASCII字符的码值9 P) {$ u8 Q' n+ a& ~$ Y, @% D
  51. //    Delay_ms(5);
    - _; y+ l+ d, ]' @, g3 V1 m7 s
  52. //    OLED_ShowNum(103,6,Key4_Count,3,16);//显示ASCII字符的码值 $ B0 U- z, Q% a/ X) H/ v
  53. //   LED2=0;: d. h! k* \9 b8 p5 W! \
  54. //   LED3=0;0 z2 _) g0 u! I5 w
  55. //   LED4=0;
    / t/ K+ e$ ~' g9 ~3 k/ Q
  56. //   Speak=0;
    / |. b, d( Q' a, K+ ]3 [( s  W
  57. //   Delay_s(1);) _& o3 d9 G0 D
  58. ////   LED1=1;
    5 l" U6 N! J5 j
  59. //   LED2=1;: y4 S3 e2 ?4 a# G- [/ i
  60. //   LED3=1;
    - b; g- }  p* `! s/ i
  61. //   LED4=1;! }$ n0 `9 A! \% }+ h8 i
  62. //   Speak=1;: t# Z, ~  I8 _7 W4 e
  63. //   Delay_s(1);
      x* @5 J2 o9 A0 p

  64. & E  P3 G6 ~6 K) Y* W

  65. ! a- y! _1 i# I& E$ t
  66. //         READ_MPU6050();  ~5 o7 N# S, h/ `- Q4 o6 h8 B
  67. //       Kalman_Filter(Data_6050.Acc_X , Data_6050.Gryo_Y);  " ^5 f) ]- g* V- `5 P
  68. ////     //GyroX++;
    & T) |/ W0 G2 A; ]( \9 _
  69. //     OLED_ShowNum(103,2,Data_6050.Acc_X,3,16);//显示ASCII字符的码值
    ; O* u. \7 b) J! W. g
  70. ////     //GyroY++;" Y" e) H5 L5 R! X% V( E
  71. //     OLED_ShowNum(103,4,Data_6050.Gryo_Y,3,16);//显示ASCII字符的码值 " l9 x7 t3 W% x$ P/ Z! U+ z4 g9 X
  72. ////     //GyroZ++;
    & X& C5 V9 a% L) T0 I2 f: V/ X% M
  73. //     OLED_ShowNum(103,6,angle,3,16);//显示ASCII字符的码值 : C1 I2 u- {, Z( c% F4 F/ Z0 ]
  74. //     Delay_ms(100);
    6 L2 ~& o' Q3 M* R
  75.   }. X$ y, Y2 ?5 y: n" ^- O5 ?5 x+ P
  76. }
复制代码
, l- y1 z# g. u4 }
转载自:EE时间
  j; P& C: U. N' _
收藏 评论0 发布时间:2022-10-11 19:17

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版