
电子温度计
简介
基于 STM32F103 + T117 + KT6368A 的蓝牙温度计,OLED 实时显示,手机 APP 通过 BLE 远程读取,精度 ±0.1°C。
简介:基于 STM32F103 + T117 + KT6368A 的蓝牙温度计,OLED 实时显示,手机 APP 通过 BLE 远程读取,精度 ±0.1°C。开源协议
:CERN-OHL-P-2.0
描述
STM32 智能蓝牙温度计
基于 STM32F103 + T117 温度传感器 + KT6368A 蓝牙模块的智能温度计,支持 OLED 实时显示和手机 APP 远程读取温度。
项目简介
本项目是一个完整的智能温度计解决方案,涵盖嵌入式固件和手机端 APP。MCU 通过 I2C 采集 T117 高精度温度传感器数据,在 0.96 寸 OLED 屏幕上实时显示温度,同时通过串口将数据透传至 KT6368A 蓝牙模块,手机端 APP(Android / HarmonyOS)通过 BLE 连接接收并展示温度数据,支持通知栏常驻显示。
功能描述
- 温度采集:T117 传感器通过 I2C 接口持续采集环境温度,每秒 2 次采样,32 次平均滤波
- OLED 显示:0.96 寸 128×64 屏幕实时显示当前温度值,500ms 刷新,区域清屏防残影
- 蓝牙透传:KT6368A 模块通过串口(115200 波特率)接收温度数据,BLE 广播至手机
- 手机 APP:Android(Kotlin)/ HarmonyOS(ArkTS)双平台,支持 BLE 连接、温度接收、通知栏常驻显示
- 高精度:采样精度 ±0.1°C,分辨率 1/256°C(约 0.004°C)
应用场景
- 室内温度监测:放置于桌面或墙壁,通过手机远程查看室内实时温度
- 实验室/仓库温控:多点部署,手机端集中监控不同位置的温度变化
- 智能家居集成:作为温度数据源接入智能家居系统,联动空调、风扇等设备
- 电子学习与教学:涵盖 STM32 开发、I2C 通信、BLE 协议、APP 开发,适合嵌入式入门学习
设计原理
系统架构
T117 --I2C--> STM32F103 --I2C--> OLED(本地显示)
|
+--UART--> KT6368A --BLE--> 手机 APP
核心方案选择
- 主控 STM32F103C8T6:经典 Cortex-M3 内核,72MHz 主频,资源丰富,社区资料充足,适合快速原型开发
- 温度传感器 T117:相比 DS18B20,T117 支持 I2C 接口,精度更高(±0.1°C),内置平均滤波,无需复杂时序控制
- 蓝牙模块 KT6368A:SPP/BLE 双模,串口透传协议简单,MCU 只需通过 UART 发送数据即可,无需额外协议栈
- OLED 显示屏:0.96 寸 SSD1306,I2C 接口,功耗低,支持中文显示
通信链路
- T117 与 OLED 使用独立的 I2C 总线(软件模拟),互不干扰
- T117 初始化为连续转换模式,配置寄存器 0x39(每秒 2 次,32 次平均,低功耗)
- 温度转换公式:
温度 = 25.0 + 原始数据 / 256.0(16 位有符号数,基准 25°C) - MCU 通过状态寄存器位 5 判断转换完成后读取温度,通过 UART 以字符串形式发送至蓝牙模块
固件设计
T117 驱动:I2C 地址固定(写 0x80,读 0x81),关键寄存器:
- 温度数据寄存器(0x00-0x01):16 位有符号数据
- 状态寄存器(0x03):位 5 判断温度转换是否完成
- 转换指令寄存器(0x04):控制连续/单次/停止转换模式
- 配置寄存器(0x05):配置采样频率和平均次数
驱动采用软件模拟 I2C,通过 GPIO 翻转实现时序控制,方便引脚分配和移植。
OLED 驱动:维护 128×64 显存缓冲区,支持中英文字符显示(8×16、6×8 字体)、浮点数格式化输出、区域清屏(防止温度更新时残影)。
主程序流程:
初始化 HAL 库 → 配置系统时钟 72MHz → 初始化延时、串口
→ 初始化 OLED → 初始化 T117
→ 显示"智能温度计"标题
→ 主循环:读取状态寄存器 → 检查转换完成 → 读取温度 → OLED 显示 → 延时 500ms
硬件接线
所有模块均工作在 3.3V 电源域,共地连接。
| STM32 引脚 | 连接目标 | 功能 |
|---|---|---|
| PB10 | T117 SCL | I2C 时钟(软件模拟) |
| PB11 | T117 SDA | I2C 数据(软件模拟) |
| PB6 | OLED SCL | I2C 时钟(软件模拟) |
| PB7 | OLED SDA | I2C 数据(软件模拟) |
| PA9 | KT6368A TXD | USART1 发送 |
| PA10 | KT6368A RXD | USART1 接收 |
硬件方案
| 模块 | 型号 | 接口 | 说明 |
|---|---|---|---|
| 主控 | STM32F103C8T6 | - | ARM Cortex-M3,72MHz |
| 温度传感器 | T117 | I2C(PB10-SCL, PB11-SDA) | 精度 ±0.1°C,支持连续/单次转换,32次平均滤波 |
| 显示屏 | 0.96" OLED(SSD1306) | I2C(PB6-SCL, PB7-SDA) | 128×64 分辨率,中文显示 |
| 蓝牙模块 | KT6368A | UART(PA9-TX, PA10-RX) | SPP/BLE 双模,串口透传,115200 波特率 |
APP 设计
Android APP
- 语言:Kotlin
- 最低 SDK:32(Android 12L)
- 核心功能:
- BLE 扫描与连接管理
- 接收蓝牙温度数据并解析显示
- 通知栏常驻温度显示(前台 Service)
- 蓝牙断连自动重连
HarmonyOS APP
- 语言:ArkTS
- 核心功能:
- BLE 扫描与连接
- 接收温度数据并显示
功能亮点
- 双平台 APP 支持:同时提供 Android(Kotlin)和 HarmonyOS(ArkTS)手机端,覆盖主流移动生态
- BLE 通知栏常驻:Android APP 支持通知栏实时显示温度,无需打开 APP 即可查看
- 高精度采集:T117 传感器支持 32 次平均滤波,采样精度达 ±0.1°C,分辨率 1/256°C
- 软件 I2C 驱动:T117 和 OLED 均采用软件模拟 I2C,引脚分配灵活,便于移植到其他 STM32 型号
- 中文 OLED 显示:屏幕直接显示"智能温度计"标题和温度数值,开箱即用
软件架构
STM32_Thermometer/
├── STM32/ # STM32 固件(Keil MDK-ARM 工程)
│ ├── BSP/ # 板级驱动
│ │ ├── T117.c/h # T117 温度传感器驱动(I2C 软件模拟)
│ │ ├── OLED.c/h # OLED 显示驱动(I2C 软件模拟)
│ │ ├── OLED_Data.c/h # OLED 字库数据
│ │ └── MyI2C.c/h # I2C 软件模拟实现
│ ├── Drivers/ # STM32 HAL 库与 CMSIS
│ ├── System/ # 系统工具(延时、串口)
│ └── User/ # 主程序入口
├── Android/ # Android APP(Kotlin)
│ └── app/src/main/ # BLE 扫描、连接、数据接收
└── Harmony/ # HarmonyOS APP(ArkTS)
开发环境
| 部分 | 工具 |
|---|---|
| STM32 固件 | Keil MDK-ARM 5 |
| Android APP | Android Studio,minSDK 32(Android 12L) |
| HarmonyOS APP | DevEco Studio |
使用说明
烧录固件
- 使用 Keil MDK-ARM 打开
STM32/MDK-ARM/Project.uvoptx工程 - 编译工程,生成 HEX 文件
- 通过 ST-Link 或 USB 转 TTL 模块烧录至 STM32
使用 APP
- 手机安装对应的 APP(Android 或 HarmonyOS)
- 开启蓝牙,扫描名为 KT6368A 的设备
- 连接成功后,APP 界面显示实时温度
- Android 版支持通知栏常驻显示
项目迭代
| 阶段 | 内容 |
|---|---|
| v1 | 完成 STM32 固件基础框架,实现 T117 温度采集和 OLED 显示 |
| v2 | 新增 Android APP,实现 BLE 扫描、连接和温度接收 |
| v3 | 新增 HarmonyOS APP(ArkTS),通知栏增加温度显示 |
| v4 | 优化蓝牙连接逻辑,添加错误处理、状态反馈和接收超时处理 |
| v5 | 重构 T117 和 OLED 驱动模块,提升代码可读性,修复温度显示残影问题 |
BOM 物料清单
| 序号 | 名称 | 型号/封装 | 数量 |
|---|---|---|---|
| 1 | 主控芯片 | STM32F103C8T6(LQFP48) | 1 |
| 2 | 温度传感器 | T117(SOT-23-6) | 1 |
| 3 | OLED 显示屏 | 0.96" SSD1306 I2C 模块 | 1 |
| 4 | 蓝牙模块 | KT6368A | 1 |
| 5 | 晶振 | 8MHz HC-49S | 1 |
| 6 | 电容 | 100nF 0402/0603 | 若干 |
| 7 | 电容 | 10μF 0805 | 2 |
| 8 | 电阻 | 4.7kΩ 0402/0603 | 2 |
| 9 | 电阻 | 10kΩ 0402/0603 | 1 |
| 10 | 电阻 | 1kΩ 0402/0603 | 1 |
| 11 | LED | 0603/0805 | 1 |
| 12 | 复位按键 | 轻触按键 6×6mm | 1 |
| 13 | 用户按键 | 轻触按键 6×6mm | 1 |
| 14 | 排针 | 2.54mm 单排针 | 若干 |
| 15 | USB 转 TTL | CH340G / CP2102 模块 | 1 |
说明:OLED 和 KT6368A 为成品模块,直接插接使用。
源代码
GitHub 仓库:https://github.com/zhiqiangme/STM32_Thermometer
开源许可
本项目硬件设计采用 CERN-OHL-P-2.0 开源,软件代码采用 MIT License 开源。
硬件设计可自由使用、修改和商业应用,只需保留版权声明和协议文本。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










