CrazySuiJi 发表于 2020-8-26 13:26:24

STM32野火开源平衡小车(九)_完工散花

野火开源平衡车官网板块

[https://www.firebbs.cn/forum.php?mod=forumdisplay&fid=129&page=1](https://www.firebbs.cn/forum.php?mod=forumdisplay&fid=129&page=1)

参考资料

暂无

参考视频(这个群主讲的不错)

[https://www.bilibili.com/video/BV1j7411z7uX](https://www.bilibili.com/video/BV1j7411z7uX)

硬件平台

![](https://img-blog.csdnimg.cn/20200822212404140.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

开发平台

KEIL5, STM32F103X主控,程序用的SWD下载(啥下载器都行,能下载进去就好,用串口下载也是可以的)

开发(一)还剩3,11,12没用,其他都有用到了, 电机电流那边有冲突,就不搞了

还有上电电机不受控制转动BUG也解决了

另外蓝牙修改回串口4, 因为RC是256K的 属于HD大容量, RBR8这些是MD中容量

![](https://img-blog.csdnimg.cn/2020082612512517.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

main.c这边调整了顺序 解决了电机BUG

![](https://img-blog.csdnimg.cn/20200826125320473.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

主循环这边, 窗口看门狗换成独立看门狗, 并且显示了电池电量,芯片温度,超声波距离,以及点了个流水灯

![](https://img-blog.csdnimg.cn/20200826125355659.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

外循环这边

![](https://img-blog.csdnimg.cn/20200826125458417.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

修改了OLED驱动, 原先的驱动死鬼难用,代码自己去看

![](https://img-blog.csdnimg.cn/20200826125950644.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

修改了串口3变回4,不用重映射

![](https://img-blog.csdnimg.cn/20200826132141865.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

![](https://img-blog.csdnimg.cn/20200826130032861.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

下面中断和发送那边也改为uart4 而不是usart3

![](https://img-blog.csdnimg.cn/20200826130121853.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

NVIC中断优先也改uart4

![](https://img-blog.csdnimg.cn/20200826130148922.png)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

加入了ADC 采集电池和采集温度 代码自己看

![](https://img-blog.csdnimg.cn/20200826130231188.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

采用平均值滤波方法

![](https://img-blog.csdnimg.cn/20200826130250110.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

增加了基本定时器TIM6 做为刷新OLED数据用的时间, 中断1ms一次

![](https://img-blog.csdnimg.cn/20200826130313585.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

增加了TIM3作为超声波接收时间计量, 代码自己看

![](https://img-blog.csdnimg.cn/20200826130517617.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

增加了超声波测距,代码自己看

![](https://img-blog.csdnimg.cn/20200826130542290.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

应该没有遗漏了

这应该是最后一节更新STM32野火开源平衡车了

最后车车OLED显示屏的内容

第一行为超声波距离

第二行为 DMP计算出来的 角度, 俯仰角,横滚角和翻滚角? 反正第一个是俯仰角

第三行为陀螺仪 x,y,z

第四行为加速度x,y,z

第五行为左右电机输出的PWM(有时超过了5位数,我也不知道为什么)

第六行为当前电池电压 以及芯片温度

![](https://img-blog.csdnimg.cn/20200826131238191.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

![](https://img-blog.csdnimg.cn/20200826130837922.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

肯定有人问为什么我OLED不放上面

因为我买的这个OLED是十来块钱的, 之前的那个二十多块的给同学做毕设拿走了

你看看OLED的VCC与GND的位置就知道了, 插错了肯定会烧OLED,严重就烧板子

![](https://img-blog.csdnimg.cn/20200826131433603.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

最后放上车车的图

![](https://img-blog.csdnimg.cn/20200826131942517.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

![](https://img-blog.csdnimg.cn/20200826132000963.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

![](https://img-blog.csdnimg.cn/20200826132010875.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

![](https://img-blog.csdnimg.cn/20200826132019641.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

![](https://img-blog.csdnimg.cn/20200826132035351.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p3ZGVuZzE5OTU=,size_16,color_FFFFFF,t_70)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")

STM32野火开源平衡车到此结束 谢谢大家

代码在下面

链接:https://pan.baidu.com/s/1CJLoFFaEcq-41F4Xc13z8w
提取码:g9ik

CrazySuiJi 发表于 2020-8-26 13:48:41

本帖最后由 qq741931893 于 2020-8-27 18:33 编辑

@flyleaf@fire 你们可以把我代码上传到你们的gitee上面了, 我这边不会pull希望也能帮助到后面观看的小伙伴
我的野火开源平衡车就到此结束了补个 手机蓝牙控制车车 展示视频
https://www.bilibili.com/video/av286957778

kaloqi 发表于 2020-8-27 03:02:43

666 厉害!!!

flyleaf 发表于 2020-8-27 11:28:30

qq741931893 发表于 2020-8-26 13:48
@flyleaf@fire 你们可以把我代码上传到你们的gitee上面了, 我这边不会pull希望也能帮助到后面观看的小 ...

好的,我上传一下:lol

CrazySuiJi 发表于 2020-8-28 10:17:40

本帖最后由 qq741931893 于 2020-8-28 10:20 编辑

添加了蓝牙边角控制,
注意:如果OLED和超声波没装, 程序会运行不了(卡到超声波接收那边了),此时把main.c里面OLED和 超声波的程序注释掉即可
如果看到流水灯一直在跑,那么一切正常

sync 发表于 2020-8-28 14:27:19

赞个,楼主威武:lol

flysky 发表于 2020-8-31 12:01:20

赞个,楼主威武

尘缘里的记忆 发表于 2020-9-11 18:33:29

厉害 厉害学习

刘飞 发表于 2020-10-13 14:17:07

其实用8位机也可以做平衡小车,且不用陀螺仪自带的DMP,因为很多陀螺仪是不带DMP的,不能依赖DMP。
平衡车核心算法就2KB,采用浮点运算。

ZZZ周y 发表于 2020-10-20 09:45:39

楼主威武

ID-TZxE46 发表于 2020-10-20 10:45:24

牛逼,指南者可以直接拿来做么。
刚好我剩下一个月准备找些项目做

何小峰 发表于 2021-1-8 23:29:30

哈哈:lol

Jervy 发表于 2021-6-26 23:11:17

哈哈:lol
页: [1]
查看完整版本: STM32野火开源平衡小车(九)_完工散花