问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

自制一个桌面宠物小狗(STM32hal库+ADC+IIC+DMA+PWM输出波)

创作时间:
作者:
@小白创作中心

自制一个桌面宠物小狗(STM32hal库+ADC+IIC+DMA+PWM输出波)

引用
CSDN
1.
https://blog.csdn.net/2302_80169672/article/details/140219781

本文将介绍如何使用STM32制作一个可爱的桌面宠物小狗。这个项目适合刚学完STM32 HAL库的初学者,通过实际操作来巩固和灵活运用HAL库知识。项目支持蓝牙和遥杆两种控制方式,可以实现小狗的前进、后退、转向、握手、跳舞等动作。

前言

基础所需:基础电路认识,C语言,STM32开发,STM32CUBEIDE或CUBEMX和Keil使用(重要),一点点艺术细胞、一点点耐心。

此小项目可以用于刚学完STM32 HAL库,用于巩固自己的以及和助于自己灵活运用HAL库。

不一定要按照我的I/O口配置,我的因为刚开始DIY#D打印没有到,所以没有配置的很合理,分布不是很好,大家可以按照自己的3D打印区布置,让自己的更美观!

效果

演示视频

蓝牙+遥杆控制小狗

遥杆控制

左摇杆负责控制小狗的前进后退左右转,右摇杆控制小狗的握手,跳舞,趴下,坐下

蓝牙控制

材料准备以及原理

舵机及其原理

这里用到的是0°到180°的舵机,额定工作电压为4.8~6V。

关于舵机工作原理以及PWM周期配置可以看舵机PWM原理

可冲放电电池

适合即可,配合充放电模块循环使用

充放电模块

双轴遥杆模块

简单原理赘述:(通过串口发送ADC数组得出结论)

实例:

蓝牙模块

我这里用的是HC-08(下图绿色),嘎嘎好用!

关于HC-08详细使用以及相关AT指令可以参考一下这位大佬的文章:蓝牙HC-08使用详细教程

这里如果使用printf重定义来发送串口数据,

需要:

STM主控芯片

F103系列的C8T6以及其他关于烧录以及TTL转串口的工具,电线若干。

相关软件APP使用

CUBEMX& Keil配置

一、RCC时钟树配置

二、定时器PWM输出配置

根据舵机PWM工作原理配置周期为20ms,频率为50HZ。

直接开启一个定时器,同时开启四个通道即可,简单粗暴!

通道一为左前脚,通道二为右前教,通道三为右后脚,通道四位左后脚。

详细引脚后面一起说!

三、配置串口

直接用我们最熟悉的9600吧。

记得开中断

四、ADC配置

开启四个通道

配置好通道

五、DMA配置

开启DMA搬运数据

六、IIC配置(软件IIC)

这里配置错了,需要在代码里面手动改为这样,或者刚开始直接配置成高速开漏输出即可。这里我配置错了,后面改回来的!

蓝牙助手

我用的是这个,因为他可以自己编制按键输出的内容,非常方便!

取模助手

关于使用和取模流程配置可以观看江科大的教学,一级好!

链接如下:江科大OLED屏幕快速入手

这个软件对图片大小有严格要求,所以还要通过Photoshop调整,下面是我自己调整后的样品:

软件开源

main.c:

Dog_PWM.c:(小狗姿态)

uart.c(由于我的个人习惯,我把串口中断接收写在了uart.c里面):

硬件IIC屏幕驱动:(这里我用的是江科大标准库的驱动函数加以修改后成为了hal库)原本下载路径可以在江科大视频下面自行下载,链接如下:链接如下:江科大OLED屏幕快速入手

江科大原本需要修改的地方代码:

修改后的样子:

可以自行添加其他表情:

具体效果可以看这位up主的:表情显示效果

修改后还有报错,应该是文字报错,应该是你的工程语言不兼容

解决方法:

全部配置后的I/O口

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号