
STM32DesktopConsoleV1.5桌面多功能控制台
简介
基于STM32F103C8T6的桌面多功能控制台,集成OLED菜单、蓝牙控制、温湿度/光敏/姿态采集、点阵显示、外部存储、蜂鸣器和多路LED。
简介:基于STM32F103C8T6的桌面多功能控制台,集成OLED菜单、蓝牙控制、温湿度/光敏/姿态采集、点阵显示、外部存储、蜂鸣器和多路LED。开源协议
:CERN-OHL-P-2.0
描述
视频链接:
B站视频--功能演示及介绍:
https://b23.tv/UA0Pgd3
项目简介
本项目是一个基于 STM32F103C8T6 的桌面多功能控制台,集成了 OLED 菜单显示、EC11 编码器交互、AHT20 温湿度采集、光敏 ADC 采集、MPU6050 姿态检测、MAX7219 点阵显示、W25Q64 外部存储、BT24 蓝牙串口控制、蜂鸣器提示和多路 LED 状态指示。
项目从面包板验证开始,逐步完成代码调试、蓝牙通信、外设联调、原理图设计、PCB 布局和 DRC 检查,当前版本为 V1.5 PCB 版本。本项目适合作为 STM32 多外设综合练习、自动化专业课程设计、嵌入式入门作品和开源硬件项目展示。
项目功能
本项目主要实现以下功能:
-
OLED 菜单显示
通过 0.96 寸 I2C OLED 显示系统状态、传感器数据、菜单页面和功能提示。 -
EC11 编码器交互
使用 EC11 旋转编码器进行菜单切换,配合 OK 按键完成选择和确认操作。 -
温湿度采集
通过 AHT20 传感器读取环境温度和湿度,可用于桌面环境监测。 -
光照强度检测
使用光敏模块的 AO 模拟输出接入 STM32 ADC,实现环境亮度采集。 -
姿态 / 运动检测
使用 MPU6050 获取加速度和运动状态,可用于检测晃动、姿态变化等状态。 -
MAX7219 点阵显示
使用 MAX7219 8×8 点阵模块显示图标、状态提示或简单动画。 -
蓝牙串口控制
通过 BT24 蓝牙串口模块与手机通信,手机可发送命令查询状态、控制 LED、读取运动状态、切换蜂鸣器模式等。 -
蜂鸣器提示与静音模式
蜂鸣器用于按键操作反馈和状态提示,同时支持静音模式。 -
蓝牙发送指示灯
每当设备通过蓝牙向手机发送一次数据,LED_BT_TX 会闪烁一次,用于观察通信状态。 -
外部 Flash 存储
使用 W25Q64 SPI Flash 模块保存历史数据或状态记录。 -
PCB 模块化设计
外设模块大多采用 2.54mm 排母插接,方便插拔、调试和后期替换。
项目参数
| 参数 | 内容 |
|---|---|
| 主控芯片 | STM32F103C8T6 最小系统板 |
| 内核 | ARM Cortex-M3,32 位 MCU |
| 主频 | 最高 72MHz |
| PCB 尺寸 | 100mm × 100mm |
| PCB 层数 | 双层板 |
| 输入电压 | 5V |
| 板载稳压 | AMS1117-3.3 |
| 系统电压 | 5V_BUS / 3V3 |
| 显示模块 | 0.96 寸 I2C OLED、MAX7219 8×8 点阵 |
| 通信方式 | USART1 蓝牙串口 / UART 调试口 |
| I2C 设备 | OLED、AHT20、MPU6050 |
| SPI 设备 | W25Q64、MAX7219 |
| ADC 输入 | 光敏模块 AO |
| 输入器件 | EC11 编码器、OK 按键、RESET 按键 |
| 输出器件 | 蜂鸣器、LED_USER1、LED_USER2、LED_BT_TX、电源指示灯 |
| 安装孔 | 4 个 M3 安装孔 |
| 开源协议 | CERN-OHL-P-2.0 |
原理解析(硬件说明)
本项目硬件主要由以下部分组成:
电源模块
主控模块
显示模块
传感器模块
蓝牙通信模块
外部存储模块
人机交互模块
LED / 蜂鸣器输出模块
1. 电源模块
电源部分采用 5V 输入,经过自恢复保险丝和电源开关后形成系统 5V_BUS,再通过 AMS1117-3.3 稳压输出 3V3。
电源路径如下:
KF301-5.0-2P 输入 5V
↓
自恢复保险丝 F1
↓
电源开关 SW1
↓
5V_BUS
↓
AMS1117-3.3
↓
3V3
其中:
5V_IN为外部输入 5V。5V_PROT为经过自恢复保险丝后的 5V。5V_BUS为经过电源开关后的系统 5V。3V3为 AMS1117 输出的 3.3V 电源。- MAX7219 使用 5V_BUS 供电。
- STM32、OLED、AHT20、MPU6050、W25Q64、BT24、光敏模块和蜂鸣器模块使用 3V3 供电。
上电前需要使用万用表检查 5V_IN、5V_BUS、3V3 与 GND 是否短路。
2. 主控模块
主控使用 STM32F103C8T6 最小系统板。该芯片属于 32 位 ARM Cortex-M3 单片机,资源足够驱动本项目中的多种外设。
主要使用的外设包括:
- GPIO:按键、LED、蜂鸣器、编码器
- ADC:光敏模块模拟输入
- I2C1:OLED、AHT20、MPU6050
- SPI1:W25Q64
- GPIO 模拟 SPI / 普通 GPIO:MAX7219
- USART1:BT24 蓝牙模块和 UART 调试口
3. OLED 显示模块
OLED 使用 I2C 接口,与 AHT20、MPU6050 共用 I2C1 总线。
OLED 接口定义:
| 引脚 | 功能 | 网络 |
|---|---|---|
| 1 | VCC | 3V3 |
| 2 | GND | GND |
| 3 | SCL | PB6_I2C1_SCL |
| 4 | SDA | PB7_I2C1_SDA |
OLED 用于显示菜单、系统状态、传感器数据和蓝牙通信结果。
4. AHT20 温湿度模块
AHT20 同样使用 I2C 接口,用于采集环境温度和湿度。
AHT20 接口定义:
| 引脚 | 功能 | 网络 |
|---|---|---|
| 1 | SDA | PB7_I2C1_SDA |
| 2 | SCL | PB6_I2C1_SCL |
| 3 | GND | GND |
| 4 | VIN | 3V3 |
布局时将 AHT20 尽量远离 AMS1117、电源区和 MAX7219,减少发热器件对温度数据的影响。
5. MPU6050 姿态传感器模块
MPU6050 使用 I2C 接口,主要用于读取加速度、角速度或运动状态。
MPU6050 接口定义:
| 引脚 | 功能 | 网络 |
|---|---|---|
| 1 | INT | NC |
| 2 | AD0 | GND |
| 3 | XCL | NC |
| 4 | XDA | NC |
| 5 | SDA | PB7_I2C1_SDA |
| 6 | SCL | PB6_I2C1_SCL |
| 7 | GND | GND |
| 8 | VCC | 3V3 |
当前版本中 INT、XCL、XDA 暂未使用。
6. 光敏模块
光敏模块用于检测环境亮度。本项目只使用 AO 模拟输出,接入 STM32 的 ADC 引脚 PA0。
光敏模块接口定义:
| 引脚 | 功能 | 网络 |
|---|---|---|
| 1 | AO | PA0_ADC_LIGHT |
| 2 | DO | NC |
| 3 | GND | GND |
| 4 | VCC | 3V3 |
DO 数字输出暂未使用。
7. MAX7219 点阵模块
MAX7219 模块用于驱动 8×8 LED 点阵,可显示图标、状态提示或简单动画。
MAX7219 接口定义:
| 引脚 | 功能 | 网络 |
|---|---|---|
| 1 | VCC | 5V_BUS |
| 2 | GND | GND |
| 3 | DIN | PB8_MAX_DIN |
| 4 | CS | PB9_MAX_CS |
| 5 | CLK | PB10_MAX_CLK |
MAX7219 使用 5V_BUS 供电,信号由 STM32 GPIO 控制。
8. W25Q64 外部 Flash 模块
W25Q64 用于保存历史记录、状态数据或后续扩展数据。
W25Q64 接口定义:
| 引脚 | 功能 | 网络 |
|---|---|---|
| 1 | VCC | 3V3 |
| 2 | CS | PA4_FLASH_CS |
| 3 | DO | PA6_SPI1_MISO |
| 4 | GND | GND |
| 5 | CLK | PA5_SPI1_SCK |
| 6 | DI | PA7_SPI1_MOSI |
9. BT24 蓝牙模块
BT24 蓝牙模块通过 USART1 与 STM32 通信,用于手机蓝牙串口控制。
BT24 接口定义:
| 引脚 | 功能 | 网络 |
|---|---|---|
| 1 | STAT | NC |
| 2 | RXD | PA9_USART1_TX |
| 3 | TXD | PA10_USART1_RX |
| 4 | GND | GND |
| 5 | 5V | NC |
| 6 | 3.3V | 3V3 |
注意事项:
- BT24 使用 3.3V 供电。
- BT24 RXD 接 STM32 TX。
- BT24 TXD 接 STM32 RX。
- BT24 天线区域需要禁铜。
- 蓝牙命令和回复统一使用英文 ASCII,避免手机蓝牙串口助手中文乱码。
10. 人机交互模块
项目使用 EC11 编码器和独立按键实现本地交互。
| 器件 | 功能 |
|---|---|
| EC11 | 菜单旋转控制 |
| KEY_OK | 菜单确认 |
| RESET | 系统复位 |
EC11 连接:
| 信号 | STM32 引脚 |
|---|---|
| ENC_A | PA1 |
| ENC_B | PA2 |
| KEY_OK | PA3 |
| RESET | NRST |
11. LED 和蜂鸣器模块
LED 用于显示系统状态、用户状态和蓝牙发送状态。
| LED | 功能 |
|---|---|
| LED_PWR | 电源指示 |
| LED_USER1 | 用户状态指示 1 |
| LED_USER2 | 用户状态指示 2 |
| LED_BT_TX | 蓝牙发送指示 |
LED_BT_TX 的功能是:每当设备通过蓝牙向手机发送一次数据,该 LED 闪烁一次。
蜂鸣器使用低电平触发模块:
| 引脚 | 功能 | 网络 |
|---|---|---|
| 1 | GND | GND |
| 2 | I/O | PB15_BUZZER |
| 3 | VCC | 3V3 |
软件中支持蜂鸣器提示音和静音模式。
软件代码
GitHub 仓库地址:
https://github.com/eastpeak001/STM32-Desktop-Console-V1.5
仓库内容包括:
- STM32CubeIDE 工程代码
- README 项目说明
- LICENSE 开源协议
- 硬件说明文档
- 引脚分配表
- 调试记录
- Gerber 文件
- PCB 图片和项目资料
主要代码目录:
Core/
Drivers/
STM32_Desktop_Console.ioc
注意事项
- BT24 蓝牙模块需要使用 3.3V 供电,不要接 5V 引脚。
- MAX7219 模块使用 5V_BUS 供电。
- OLED、AHT20、MPU6050 共用 I2C1 总线。
- I2C 上拉电阻默认可不焊,因为多数模块已经自带上拉。
- UART 调试口和 BT24 共用 PA9 / PA10,调试时不要同时让多个外部设备驱动串口。
- 光敏模块只使用 AO 模拟输出,DO 暂未使用。
- MPU6050 的 INT、XCL、XDA 暂未使用。
- 所有模块插入前必须确认引脚顺序,避免反插烧毁模块。
- 上电前必须用万用表检查 5V、3V3 与 GND 是否短路。
- 当前版本为 V1.5 第一版 PCB,主要目标是验证完整功能。
组装流程
建议按照以下顺序焊接和测试:
1. 焊接电源部分
先焊接:
- KF301 输入端子
- 自恢复保险丝
- 电源开关
- AMS1117-3.3
- 电源指示 LED
焊接完成后,不插任何模块,先测量电源。
2. 上电前检查
使用万用表蜂鸣档检查:
5V_IN与GND不应短路5V_BUS与GND不应短路3V3与GND不应短路
3. 首次上电
接入 5V 电源后测量:
5V_BUS是否约为 5V3V3是否约为 3.3V- AMS1117 是否异常发热
4. 焊接 STM32 核心板插座
确认核心板方向,尤其是 USB 口朝向,避免插入后无法连接 USB。
5. 插入 STM32 核心板
测试程序下载是否正常,确认主控部分无问题。
6. 依次插入外设模块
建议顺序:
- OLED
- AHT20
- 光敏模块
- MAX7219
- BT24
- W25Q64
- MPU6050
- 蜂鸣器模块
每插入一个模块都单独测试,避免一次性插入后难以排查问题。
实物图
图1:面包板验证阶段

图2:PCB 顶层布局

图3:PCB 原理图

设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。









