从零开始动手DIY一台桌面宠物狗(直播帖手动滑稽.jpg)——【一】

前言

最近网上刷到很多diy的桌面宠物狗,感觉很有意思,于是我也萌生了这个想法,从零diy一个桌面机器狗。大致思路是一块MCU单片机,四个sg90舵机当腿,一块0.97寸oled当脸部的表情。辅助硬件可以有蓝牙hc05模块,超声波收发一体检测模块,语音转换和扬声器模块等。我们先从最简单的开始一步步迭代。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b2e2a2f9fb7b4c2d9caafd9866564e55.jpeg

一、硬件设计方案

MCU选用STM32F103C8T:成本低体积小,代码丰富,PWM口够多,stm32的库移植上库库就能跑,开发完成移植到其他平台也很方便。
电池先选用7.2V锂电池做前期开发使用,后期找替代品,目前我手头只有这么一块电池
在这里插入图片描述

初步材料如下,先做尝试,后续陆续更新

材料类别数量
舵机sg904
MCUSTM32F103C8T1
0.97寸OLED4针脚I2c版本1
led灯珠蓝色5
3.3V芯片asm11171
5V芯片lm78051
电池7.2V锂电池(待定)1
电阻/1
电容/1

二、软件设计方案

软件设计分成两个模块:基本功能调通和代码集成
2.1 基本功能:

  1. 控制舵机完成转向
  2. 点亮OLED
  3. 点亮灯珠

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

### 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 // 初始化 ADC 和 IIC 接口 void MX_ADC_Init(void){ /* 用户可以根据实际需求修改 */ } void MX_I2C1_Init(void){ /* 用户可以根据实际需求修改 */ } ``` #### 实际案例分析 以桌面宠物小狗为例,该项目展示了如何将上述理论应用于实践当中。开发者们可以通过调整不同的IO端口映射关系来自定义外观造型,同时加入更多有趣的交互方式提升用户体验感。值得注意的是,虽然原作者提到由于条件限制未能完美规划所有连线布局,但这并不妨碍大家参照这份指南来进行更加优化的设计尝试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值