【E430】STM32平衡车代码+MATLAB上位机代码

2021-08-22 16:18:33      索炜达电子      430     

项目编号:E430

文件大小:17M

源码说明:带中文注释

开发环境:C编译器

简要概述

平衡车代码+MATLAB上位机代码 本来是想做一个小车只需采集并发送数据,接收并执行simulink的命令,用simulink来做姿态解算和PID平衡控制的项目,但是在调试了三天之后以失败告终,主要原因是蓝牙模块的传输速度太慢了,所以就转而求其次,用matlab写了个上位机做姿态显示并且发送一些指令控制小车前进后退,当然也可以用手机蓝牙串口发送指令来控制。

【E430】STM32平衡车代码+MATLAB上位机代码

【E430】STM32平衡车代码+MATLAB上位机代码

软件架构

1.上位机的代码和exe程序在MATLABGUI文件夹。

2.平衡小车代码在balance_car文件夹。


相关说明

1.陀螺仪X轴正方向为小车的正前方。

2.我的主控芯片是STM32F103C8T6。

3.电机驱动模块用的L298N。

4.OLED使用的是4线SPI通讯协议,3线SPI应该亦可以。

5.PID参数我没有认真调,最近比较忙调了一个上午感觉能用就没再调了,如果车体跟我一样的话不用调或者微调就可以跑起来。

6.主控板我是参照我画的原理图用洞洞板搭的,有兴趣的小伙伴可以画板制作PCB,如果你是L298N的话请直接使用我的管脚连接方案,这也是我看手册规划出来的,毕竟在程序里面改管脚是比较麻烦的而且容易出现BUG。

7.没有做航向角的原因是MPU6050没有磁力计,计算出来的航向角偏移的很厉害,而且对于平衡车来说没有航向角对控制没有影响,而且好的磁力计不便宜。有兴趣的话可以加个磁力计,并且MPU也支持外扩磁力计很方便,这样的话就可以做惯性导航。

8.由于小车做了拿起保护,必须要将小车平放保持Pitch和Roll在0度左右两秒才能启动。


硬件原理图

【E430】STM32平衡车代码+MATLAB上位机代码

【E430】STM32平衡车代码+MATLAB上位机代码

目录│文件列表:

 └ balancecar

    ├ balancecar_code

    │  │ keilkill.bat

    │  ├ MiniBalance

    │  │  ├ CONTROL

    │  │  │  │ control.c

    │  │  │  └ control.h

    │  │  ├ DataScope_DP

    │  │  │  │ DataScope_DP.C

    │  │  │  └ DataScope_DP.h

    │  │  ├ DMP

    │  │  │  │ dmpKey.h

    │  │  │  │ dmpmap.h

    │  │  │  │ inv_mpu.c

    │  │  │  │ inv_mpu.h

    │  │  │  │ inv_mpu_dmp_motion_driver.c

    │  │  │  └ inv_mpu_dmp_motion_driver.h

    │  │  ├ filter

    │  │  │  │ filter.c

    │  │  │  └ filter.h

    │  │  ├ MPU6050

    │  │  │  │ MPU6050.c

    │  │  │  └ mpu6050.h

    │  │  └ show

    │  │     │ show.c

    │  │     └ show.h

    │  ├ MiniBalance_COER

    │  │  │ core_cm3.c

    │  │  │ core_cm3.h

    │  │  └ startup_stm32f10x_md.s

    │  ├ MiniBalance_HARDWARE

    │  │  ├ ADC

    │  │  │  │ adc.c

    │  │  │  └ adc.h

    │  │  ├ DataScope_DP

    │  │  │  │ DataScope_DP.C

    │  │  │  └ DataScope_DP.h

    │  │  ├ DMP

    │  │  │  │ dmpKey.h

    │  │  │  │ dmpmap.h

    │  │  │  │ inv_mpu.c

    │  │  │  │ inv_mpu.h

    │  │  │  │ inv_mpu_dmp_motion_driver.c

    │  │  │  └ inv_mpu_dmp_motion_driver.h

    │  │  ├ ENCODER

    │  │  │  │ encoder.c

    │  │  │  └ encoder.h

    │  │  ├ EXTI

    │  │  │  │ exti.c

    │  │  │  └ exti.h

    │  │  ├ IIC

    │  │  │  │ IOI2C.c

    │  │  │  └ IOI2C.h

    │  │  ├ KEY

    │  │  │  │ key.c

    │  │  │  └ key.h

    │  │  ├ LED

    │  │  │  │ LED.C

    │  │  │  └ LED.H

    │  │  ├ MOTOR

    │  │  │  │ motor.c

    │  │  │  └ motor.h

    │  │  ├ MPU6050

    │  │  │  │ MPU6050.c

    │  │  │  └ mpu6050.h

    │  │  ├ MY_OLED

    │  │  │  │ my_oled.c

    │  │  │  └ my_oled.h

    │  │  ├ OLED

    │  │  │  │ oled.c

    │  │  │  │ oled.h

    │  │  │  └ oledfont.h

    │  │  ├ STMFLASH

    │  │  │  │ stmflash.c

    │  │  │  └ stmflash.h

    │  │  ├ TIMER

    │  │  │  │ timer.c

    │  │  │  └ timer.h

    │  │  ├ USART2

    │  │  │  │ usart2.c

    │  │  │  └ usart2.h

    │  │  └ USART3

    │  │     │ usart3.c

    │  │     └ usart3.h

    │  ├ OBJ

    │  │  │ adc.crf

    │  │  │ adc.d

    │  │  │ adc.o

    │  │  │ control.crf

    │  │  │ control.d

    │  │  │ control.o

    │  │  │ core_cm3.crf

    │  │  │ core_cm3.d

    │  │  │ core_cm3.o

    │  │  │ datascope_dp.crf

    │  │  │ datascope_dp.d

    │  │  │ datascope_dp.o

    │  │  │ delay.crf

    │  │  │ delay.d

    │  │  │ delay.o

    │  │  │ encoder.crf

    │  │  │ encoder.d

    │  │  │ encoder.o

    │  │  │ ExtDll.iex

    │  │  │ exti.crf

    │  │  │ exti.d

    │  │  │ exti.o

    │  │  │ filter.crf

    │  │  │ filter.d

    │  │  │ filter.o

    │  │  │ inv_mpu.crf

    │  │  │ inv_mpu.d

    │  │  │ inv_mpu.o

    │  │  │ inv_mpu_dmp_motion_driver.crf

    │  │  │ inv_mpu_dmp_motion_driver.d

    │  │  │ inv_mpu_dmp_motion_driver.o

    │  │  │ ioi2c.crf

    │  │  │ ioi2c.d

    │  │  │ ioi2c.o

    │  │  │ key.crf

    │  │  │ key.d

    │  │  │ key.o

    │  │  │ led.crf

    │  │  │ led.d

    │  │  │ led.o

    │  │  │ MiniBalance.axf

    │  │  │ MiniBalance.build_log.htm

    │  │  │ minibalance.crf

    │  │  │ minibalance.d

    │  │  │ MiniBalance.hex

    │  │  │ MiniBalance.htm

    │  │  │ MiniBalance.lnp

    │  │  │ minibalance.o

    │  │  │ MiniBalance.sct

    │  │  │ MiniBalance_MiniBalance.dep

    │  │  │ MiniBalance_sct.Bak

    │  │  │ misc.crf

    │  │  │ misc.d

    │  │  │ misc.o

    │  │  │ motor.crf

    │  │  │ motor.d

    │  │  │ motor.o

    │  │  │ mpu6050.crf

    │  │  │ mpu6050.d

    │  │  │ mpu6050.o

    │  │  │ my_oled.crf

    │  │  │ my_oled.d

    │  │  │ oled.crf

    │  │  │ oled.d

    │  │  │ oled.o

    │  │  │ show.crf

    │  │  │ show.d

    │  │  │ show.o

    │  │  │ startup_stm32f10x_md.d

    │  │  │ startup_stm32f10x_md.o

    │  │  │ stm32f10x_adc.crf

    │  │  │ stm32f10x_adc.d

    │  │  │ stm32f10x_adc.o

    │  │  │ stm32f10x_bkp.crf

    │  │  │ stm32f10x_bkp.d

    │  │  │ stm32f10x_bkp.o

    │  │  │ stm32f10x_can.crf

    │  │  │ stm32f10x_can.d

    │  │  │ stm32f10x_can.o

    │  │  │ stm32f10x_cec.crf

    │  │  │ stm32f10x_cec.d

    │  │  │ stm32f10x_cec.o

    │  │  │ stm32f10x_crc.crf

    │  │  │ stm32f10x_crc.d

    │  │  │ stm32f10x_crc.o

    │  │  │ stm32f10x_dac.crf

    │  │  │ stm32f10x_dac.d

    │  │  │ stm32f10x_dac.o

    │  │  │ stm32f10x_dbgmcu.crf

    │  │  │ stm32f10x_dbgmcu.d

    │  │  │ stm32f10x_dbgmcu.o

    │  │  │ stm32f10x_dma.crf

    │  │  │ stm32f10x_dma.d

    │  │  │ stm32f10x_dma.o

    │  │  │ stm32f10x_exti.crf

    │  │  │ stm32f10x_exti.d

    │  │  │ stm32f10x_exti.o

    │  │  │ stm32f10x_flash.crf

    │  │  │ stm32f10x_flash.d

    │  │  │ stm32f10x_flash.o

    │  │  │ stm32f10x_fsmc.crf

    │  │  │ stm32f10x_fsmc.d

    │  │  │ stm32f10x_fsmc.o

    │  │  │ stm32f10x_gpio.crf

    │  │  │ stm32f10x_gpio.d

    │  │  │ stm32f10x_gpio.o

    │  │  │ stm32f10x_i2c.crf

    │  │  │ stm32f10x_i2c.d

    │  │  │ stm32f10x_i2c.o

    │  │  │ stm32f10x_it.crf

    │  │  │ stm32f10x_it.d

    │  │  │ stm32f10x_it.o

    │  │  │ stm32f10x_iwdg.crf

    │  │  │ stm32f10x_iwdg.d

    │  │  │ stm32f10x_iwdg.o

    │  │  │ stm32f10x_pwr.crf

    │  │  │ stm32f10x_pwr.d

    │  │  │ stm32f10x_pwr.o

    │  │  │ stm32f10x_rcc.crf

    │  │  │ stm32f10x_rcc.d

    │  │  │ stm32f10x_rcc.o

    │  │  │ stm32f10x_rtc.crf

    │  │  │ stm32f10x_rtc.d

    │  │  │ stm32f10x_rtc.o

    │  │  │ stm32f10x_sdio.crf

    │  │  │ stm32f10x_sdio.d

    │  │  │ stm32f10x_sdio.o

    │  │  │ stm32f10x_spi.crf

    │  │  │ stm32f10x_spi.d

    │  │  │ stm32f10x_spi.o

    │  │  │ stm32f10x_tim.crf

    │  │  │ stm32f10x_tim.d

    │  │  │ stm32f10x_tim.o

    │  │  │ stm32f10x_usart.crf

    │  │  │ stm32f10x_usart.d

    │  │  │ stm32f10x_usart.o

    │  │  │ stm32f10x_wwdg.crf

    │  │  │ stm32f10x_wwdg.d

    │  │  │ stm32f10x_wwdg.o

    │  │  │ stmflash.crf

    │  │  │ stmflash.d

    │  │  │ stmflash.o

    │  │  │ sys.crf

    │  │  │ sys.d

    │  │  │ sys.o

    │  │  │ system_stm32f10x.crf

    │  │  │ system_stm32f10x.d

    │  │  │ system_stm32f10x.o

    │  │  │ timer.crf

    │  │  │ timer.d

    │  │  │ timer.o

    │  │  │ usart.crf

    │  │  │ usart.d

    │  │  │ usart.o

    │  │  │ usart2.crf

    │  │  │ usart2.d

    │  │  │ usart2.o

    │  │  │ usart3.crf

    │  │  │ usart3.d

    │  │  └ usart3.o

    │  ├ STM32F10x_FWLib

    │  │  ├ inc

    │  │  │  │ misc.h

    │  │  │  │ stm32f10x_adc.h

    │  │  │  │ stm32f10x_bkp.h

    │  │  │  │ stm32f10x_can.h

    │  │  │  │ stm32f10x_cec.h

    │  │  │  │ stm32f10x_crc.h

    │  │  │  │ stm32f10x_dac.h

    │  │  │  │ stm32f10x_dbgmcu.h

    │  │  │  │ stm32f10x_dma.h

    │  │  │  │ stm32f10x_exti.h

    │  │  │  │ stm32f10x_flash.h

    │  │  │  │ stm32f10x_fsmc.h

    │  │  │  │ stm32f10x_gpio.h

    │  │  │  │ stm32f10x_i2c.h

    │  │  │  │ stm32f10x_iwdg.h

    │  │  │  │ stm32f10x_pwr.h

    │  │  │  │ stm32f10x_rcc.h

    │  │  │  │ stm32f10x_rtc.h

    │  │  │  │ stm32f10x_sdio.h

    │  │  │  │ stm32f10x_spi.h

    │  │  │  │ stm32f10x_tim.h

    │  │  │  │ stm32f10x_usart.h

    │  │  │  └ stm32f10x_wwdg.h

    │  │  └ src

    │  │     │ misc.c

    │  │     │ stm32f10x_adc.c

    │  │     │ stm32f10x_bkp.c

    │  │     │ stm32f10x_can.c

    │  │     │ stm32f10x_cec.c

    │  │     │ stm32f10x_crc.c

    │  │     │ stm32f10x_dac.c

    │  │     │ stm32f10x_dbgmcu.c

    │  │     │ stm32f10x_dma.c

    │  │     │ stm32f10x_exti.c

    │  │     │ stm32f10x_flash.c

    │  │     │ stm32f10x_fsmc.c

    │  │     │ stm32f10x_gpio.c

    │  │     │ stm32f10x_i2c.c

    │  │     │ stm32f10x_iwdg.c

    │  │     │ stm32f10x_pwr.c

    │  │     │ stm32f10x_rcc.c

    │  │     │ stm32f10x_rtc.c

    │  │     │ stm32f10x_sdio.c

    │  │     │ stm32f10x_spi.c

    │  │     │ stm32f10x_tim.c

    │  │     │ stm32f10x_usart.c

    │  │     └ stm32f10x_wwdg.c

    │  ├ SYSTEM

    │  │  ├ delay

    │  │  │  │ delay.c

    │  │  │  └ delay.h

    │  │  ├ sys

    │  │  │  │ sys.c

    │  │  │  └ sys.h

    │  │  └ usart

    │  │     │ usart.c

    │  │     └ usart.h

    │  └ USER

    │     │ EventRecorderStub.scvd

    │     │ MiniBalance.c

    │     │ MiniBalance.map

    │     │ MiniBalance.uvgui.passoni

    │     │ MiniBalance.uvguix.25521

    │     │ MiniBalance.uvgui_passoni.bak

    │     │ MiniBalance.uvopt

    │     │ MiniBalance.uvoptx

    │     │ MiniBalance.uvproj.saved_uv4

    │     │ MiniBalance.uvprojx

    │     │ MiniBalance_MiniBalance.dep

    │     │ MiniBalance_uvopt.bak

    │     │ MiniBalance_uvproj.bak

    │     │ startup_stm32f10x_md.lst

    │     │ stm32f10x.h

    │     │ stm32f10x_conf.h

    │     │ stm32f10x_it.c

    │     │ stm32f10x_it.h

    │     │ system_stm32f10x.c

    │     │ system_stm32f10x.h

    │     ├ DebugConfig

    │     │  └ MiniBalance_STM32F103C8_1.0.0.dbgconf

    │     └ RTE

    │        └ _MiniBalance

    │           └ RTE_Components.h

    ├ MATLABGUI

    │  │ callback.m

    │  │ cargui2.fig

    │  │ cargui2.m

    │  │ cargui2.prj

    │  │ readme

    │  ├ cargui2

    │  │  │ PackagingLog.html

    │  │  ├ for_redistribution

    │  │  │  └ MyAppInstaller_web.exe

    │  │  ├ for_redistribution_files_only

    │  │  │  │ cargui2.exe

    │  │  │  │ icon.ico

    │  │  │  │ readme.txt

    │  │  │  └ splash.png

    │  │  └ for_testing

    │  │     │ cargui2.exe

    │  │     │ mccExcludedFiles.log

    │  │     │ readme.txt

    │  │     │ requiredMCRProducts.txt

    │  │     └ splash.png

    │  └ cargui2_resources

    │     │ icon.ico

    │     │ icon_16.png

    │     │ icon_24.png

    │     │ icon_32.png

    │     └ icon_48.png

    └ png

       │ IMG_20210712_110320.jpg

       │ IMG_20210712_110326.jpg

       │ QQ截图20210712111616.png

       │ sch.png

       └ 航天 地球 航拍照片.jpg

TAG平衡车
  • 9 次
  • 1 分