自制桌面宠物小狗:基于STM32的遥控与蓝牙控制项目
自制桌面宠物小狗:基于STM32的遥控与蓝牙控制项目
本文将介绍如何制作一个可爱的桌面宠物小狗,通过STM32微控制器实现遥控和蓝牙控制功能。项目涉及ADC、IIC、DMA和PWM等技术,适合有一定基础的STM32开发者参考学习。
前言
制作这个项目需要具备以下基础知识:
- 基础电路认识
- C语言编程
- STM32开发经验
- STM32CUBEIDE或CUBEMX和Keil使用经验
- 一点点艺术细胞和耐心
这个小项目非常适合刚学完STM32hal库的开发者,可以帮助巩固和灵活运用hal库知识。在I/O口配置方面,建议根据自己的3D打印区域进行合理布局,以使最终作品更加美观。
效果展示
演示视频
蓝牙+遥杆控制小狗
遥杆控制
- 左摇杆负责控制小狗的前进、后退和左右转向
- 右摇杆控制小狗的握手、跳舞、趴下和坐下等动作
蓝牙控制
通过蓝牙模块实现远程控制功能
材料准备及原理说明
舵机及其原理
使用0°到180°的舵机,额定工作电压为4.8~6V。关于舵机的工作原理和PWM周期配置,可以参考相关资料。
可冲放电电池
选择适合的电池配合充放电模块循环使用
充放电模块
双轴遥杆模块
简单原理赘述:通过串口发送ADC数组得出结论
蓝牙模块
使用HC-08蓝牙模块,支持AT指令控制。如果使用printf重定义来发送串口数据,需要进行相应的配置。
STM主控芯片
使用STM32F103系列的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口
(具体内容略)