前言
最近网上刷到很多diy的桌面宠物狗,感觉很有意思,于是我也萌生了这个想法,从零diy一个桌面机器狗。大致思路是一块MCU单片机,四个sg90舵机当腿,一块0.97寸oled当脸部的表情。辅助硬件可以有蓝牙hc05模块,超声波收发一体检测模块,语音转换和扬声器模块等。我们先从最简单的开始一步步迭代。
一、硬件设计方案
MCU选用STM32F103C8T:成本低体积小,代码丰富,PWM口够多,stm32的库移植上库库就能跑,开发完成移植到其他平台也很方便。
电池先选用7.2V锂电池做前期开发使用,后期找替代品,目前我手头只有这么一块电池
初步材料如下,先做尝试,后续陆续更新
材料 | 类别 | 数量 |
---|---|---|
舵机 | sg90 | 4 |
MCU | STM32F103C8T | 1 |
0.97寸OLED | 4针脚I2c版本 | 1 |
led灯珠 | 蓝色 | 5 |
3.3V芯片 | asm1117 | 1 |
5V芯片 | lm7805 | 1 |
电池 | 7.2V锂电池(待定) | 1 |
电阻 | / | 1 |
电容 | / | 1 |
二、软件设计方案
软件设计分成两个模块:基本功能调通和代码集成
2.1 基本功能:
- 控制舵机完成转向
- 点亮OLED
- 点亮灯珠
2.2 IO map
IO | 功能 |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
2.3 代码集成:
- 控制四腿完成前进、后退、转向、蹲下等动作
- 控制OLED展示不同表情:微笑、哭泣、调皮、滑稽等
三、软件设计
3.1 常规方案
STM32CubeMX配置: 使用STM32CubeMX配置外设,设置PWM输出引脚,I2C或SPI接口用于连接显示屏。STM32CubeMX生成代码后,可以进一步在Keil中编写控制代码。
舵机控制: 使用定时器生成PWM信号,通过调整PWM占空比来控制舵机角度,实现机器狗的动作。
显示控制: 通过I2C或SPI协议,使用HAL库或低级库(LL)控制显示屏,显示机器狗的动态表情、状态信息或其他内容。
动作逻辑: 可以设计一些预定义的动作模式,例如摇头、走路、坐下等,并通过按钮或指令控制机器狗的动作。
STM32CubeMX的使用比较简单,我也是现场百度现场学习,找好你的芯片选好要用的引脚生成代码就行了,现在技术发达多了,比我们上学那个时期的代码好写多了,那时候各种库到处调用,什么正点原子的库,什么野火的库,什么第三方库,大杂烩,现在直接官方HAL库。
3.2工程模板
参考STM32F103C8T的引脚图,选好要用的定时器、PWM引脚、普通IO口和模拟I2C要用的两个引脚
生成HAL库工程,编译一遍没有问题后上传github作为本项目的原始代码。大致的代码框架如下,使用stm32cubmx生成
3.3 github路径
3.2 的工程模板编译没有问题,我们先用这个工程点亮一个LED灯,实验一下代码是否OK,代码OK的话做一次push操作,作为本工程的第一次提交,后续在这个上面更新代码和资源。
下面是项目的资料代码链接,后续都在上面维护
https://github.com/Kunlun-Donkey/desktop-dog-Bruce.git