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

前言:

基础所需:基础电路认识,C语言,STM32开发,STM32CUBEIDE或CUBEMX和Keil使用(重要),一点点艺术细胞、一点点耐心。
此小项目可以用于刚学完STM32hal库,用于巩固自己的以及和助于自己灵活运用hal库。
不一定要按照我的I/O口配置,我的因为刚开始DIY#D打印没有到,所以没有配置的很合理,分布不是很好,大家可以按照自己的3D打印区布置,让自己的更美观!

效果

演示视频

蓝牙+遥杆控制小狗

遥杆控制:

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

蓝牙控制

在这里插入图片描述

材料准备以及原理

舵机及其原理

这里用到的是0°到180°的舵机,额定工作电压为4.8~6V。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/70e6835df7364386ae1ce36f2cc17bdb.jpeg
关于舵机工作原理以及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口

在这里插入图片描述

### STM32智能宠物狗开发教程 #### 项目概述 STM32智能宠物狗是一个综合性的嵌入式系统项目,旨在通过STM32微控制器实现一个具有互动功能的小型机器人。此项目不仅涉及硬件设计还包括软件编程,适合初学者学习并掌握STM32 HAL的应用。 #### 主要组件和技术要点 - **核心处理器**:采用高性能STM32系列MCU作为主控芯片,其工作频率最高可达72 MHz以上,具备强大的数据处理能力[^1]。 - **传感器接口**:利用ADC模块读取环境参数;借助IIC总线连接外部设备如显示屏或其他扩展板卡[^2]。 - **运动控制**:通过PWM信号驱动电机来模拟动物的动作行为,使宠物能够做出诸如摇尾巴、点头等动作反应。 - **电源管理**:集成低功耗特性,在不牺牲性能的前提下延长电池续航时间。 #### 软件框架搭建 为了简化程序编写过程并提高代码可移植性,推荐使用官方提供的CubeMX工具初始化外设配置文件,并基于HAL完成后续的功能函数调用。具体步骤如下: 1. 安装必要的IDE环境(如STM32CubeIDE 或 Keil MDK); 2. 使用STM32CubeMX生成初始工程模板; 3. 编写应用程序逻辑部分,重点在于如何协调各个子系统的协同运作; 4. 进行联调测试直至达到预期效果为止。 ```cpp // 初始化 ADCIIC 接口 void MX_ADC_Init(void){ /* 用户可以根据实际需求修改 */ } void MX_I2C1_Init(void){ /* 用户可以根据实际需求修改 */ } ``` #### 实际案例分析 以桌面宠物小狗为例,该项目展示了如何将上述理论应用于实践当中。开发者们可以通过调整不同的IO端口映射关系来自定义外观造型,同时加入更多有趣的交互方式提升用户体验感。值得注意的是,虽然原作者提到由于条件限制未能完美规划所有连线布局,但这并不妨碍大家参照这份指南来进行更加优化的设计尝试。
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值