站内搜索
更多
电子温度计
专业版

电子温度计

简介

基于 STM32F103 + T117 + KT6368A 的蓝牙温度计,OLED 实时显示,手机 APP 通过 BLE 远程读取,精度 ±0.1°C。

简介:基于 STM32F103 + T117 + KT6368A 的蓝牙温度计,OLED 实时显示,手机 APP 通过 BLE 远程读取,精度 ±0.1°C。
复刻成本:10

开源协议

CERN-OHL-P-2.0

创建时间:2025-08-26 10:17:57更新时间:2026-06-10 16:08:47

描述

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 引脚连接目标功能
PB10T117 SCLI2C 时钟(软件模拟)
PB11T117 SDAI2C 数据(软件模拟)
PB6OLED SCLI2C 时钟(软件模拟)
PB7OLED SDAI2C 数据(软件模拟)
PA9KT6368A TXDUSART1 发送
PA10KT6368A RXDUSART1 接收

硬件方案

模块型号接口说明
主控STM32F103C8T6-ARM Cortex-M3,72MHz
温度传感器T117I2C(PB10-SCL, PB11-SDA)精度 ±0.1°C,支持连续/单次转换,32次平均滤波
显示屏0.96" OLED(SSD1306)I2C(PB6-SCL, PB7-SDA)128×64 分辨率,中文显示
蓝牙模块KT6368AUART(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 APPAndroid Studio,minSDK 32(Android 12L)
HarmonyOS APPDevEco Studio

使用说明

烧录固件

  1. 使用 Keil MDK-ARM 打开 STM32/MDK-ARM/Project.uvoptx 工程
  2. 编译工程,生成 HEX 文件
  3. 通过 ST-Link 或 USB 转 TTL 模块烧录至 STM32

使用 APP

  1. 手机安装对应的 APP(Android 或 HarmonyOS)
  2. 开启蓝牙,扫描名为 KT6368A 的设备
  3. 连接成功后,APP 界面显示实时温度
  4. 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
3OLED 显示屏0.96" SSD1306 I2C 模块1
4蓝牙模块KT6368A1
5晶振8MHz HC-49S1
6电容100nF 0402/0603若干
7电容10μF 08052
8电阻4.7kΩ 0402/06032
9电阻10kΩ 0402/06031
10电阻1kΩ 0402/06031
11LED0603/08051
12复位按键轻触按键 6×6mm1
13用户按键轻触按键 6×6mm1
14排针2.54mm 单排针若干
15USB 转 TTLCH340G / CP2102 模块1

说明:OLED 和 KT6368A 为成品模块,直接插接使用。

源代码

GitHub 仓库:https://github.com/zhiqiangme/STM32_Thermometer

开源许可

本项目硬件设计采用 CERN-OHL-P-2.0 开源,软件代码采用 MIT License 开源。

硬件设计可自由使用、修改和商业应用,只需保留版权声明和协议文本。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
演示视频.mp4
1
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航