找回密码
 立即注册
查看: 190|回复: 3

用STC8H系列做了个智能体温计,可记录体温和发出警示

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-06-17 00:16:01
已绑定手机

3

主题

60

回帖

261

积分

中级会员

积分
261
发表于 2025-5-14 19:45:56 | 显示全部楼层 |阅读模式
视频链接:

项目简介
✅本项目是基于STC51单片机STC8H1K08的一款体温监控报警系统,用于在人体患病发烧期间的体温监护,尤其是在夜里睡觉的时候,能够及时发出异常提醒,采取必要的药物降温措施。
亦可用于婴幼儿看护及老年人照护等场景。
✅系统可以单主机运行,也可通过手机应用端显示实时温度,主机与手机应用端的报警可单独开启或关闭,尽可能的在监控的同时减少对病人的打扰。
✅主机设置有LED指示灯,方便通过颜色和点亮位置查看温度。弥补了市场上一些便携式体温监护器只能通过手机客户端查看温度的不足,给不习惯使用智能手机的中老年群体提供便利。
✅系统设置了需要进行药物降温的报警温度。
项目功能
✅ 高精度体温监测
采用MSKSEMI(美森科) DS18B20U-MS 数字温度传感器,测量精度 ±0.4°C,并可自行通过水银温度计校准。
支持 单次测量 和 连续监测(默认每5秒刷新一次)。
✅ 智能报警系统
主机端报警:
蜂鸣器鸣响 + LED指示(默认 ≥38.5°C)。
8级LED温度指示(通过点亮不同颜色和位置的指示灯显示不同温度区间)。
手机端报警(蓝牙连接):
支持手机APP接收实时温度数据,超温时提醒,
并可自动生成温度检测记录。
✅ 低功耗设计
蓝牙关闭时:自动进入 掉电模式(5秒唤醒一次测量温度)。
蓝牙开启时:持续工作,通过手机客户端实时显示温度。
✅ 用户交互控制
按键功能:
短按:切换 蜂鸣器开关 / 蓝牙模式。
长按2s:进入 深度节能模式(仅按键唤醒)。
长按5s:设备复位,用于初始化系统以及方便下载调试。
蓝牙指令控制(通过串口通信):
发送 beep 测试蜂鸣器。

产品展示:
✅ 主体及使用耳机线改造的柔性探头(减少成品工业探头带来的的僵硬感与冰凉感)
111111.jpg
✅ 立创3D打印制造的外壳及腕带的完美结合(壳体采用9600树脂,腕带采用TPU柔性材料)
5555.jpg

✅采用8001透明树脂打印导光柱,将LED灯光传递到面板
微信图片_20250324213701.jpg

项目参数
  • 硬件参数
✅主控芯片:STC8H系列单片机STC8H1K08 8051内核
✅温度传感器:MSKSEMI(美森科) DS18B20U-MS 数字温度传感器 测量范围:-55°C~+125°C,精度:±0.4°C
✅蓝牙模块:Vollgo(沃进)VG6328A 蓝牙透传模块,是一款低成本从机蓝牙透传模块。
✅显示模块:LED指示灯(P1.0-P1.7) 8级温度区间显示
✅报警模块:有源蜂鸣器
  • 性能参数
✅温度测量范围:36.0°C-42.0°C
✅温度分辨率 0.1°C
✅测量响应时间 <1秒
✅默认报警阈值 38.5°C
✅蓝牙传输间隔 5秒/次
✅工作电流 10mA(蓝牙开启)
<1.2mA(蓝牙关闭)
✅供电方式 5V USB/3.7V锂电池
硬件说明
✅采用STC8H1K08单片机,通过3.5音频插座连接DS18b20传感器,方便更换。
✅P1.0~P1.7为LED接口,为节省空间,各引脚未焊接单独的限流电阻,采用控制单片机内部上拉电阻的方式点亮LED
✅P3.0、P3.1为串行口;
✅P3.2为多功能按键接口;
✅P3.3为DS18b20传感器DQ引脚。
✅P3.4为蜂鸣器引脚;
✅P3.5、P3.6为蜂鸣/静音指示灯。
✅P3.7为蓝牙模块使能脚。
✅系统使用250mAH锂电池供电,充电电路采用TP4057,电流设置为200mA。


部分软件代码


P1.0~P1.7为LED接口,为节省空间,各引脚未焊接单独的限流电阻,采用控制单片机内部上拉电阻的方式点亮LED
  1. /*-------------- LED灯控制 --------------*/
  2.                             if(val>395)
  3.                                 {
  4.                                           P1PU = 0x01; // 使能P1上拉电阻,LED8亮
  5.                                 }
  6.                                 else
  7.                                 {
  8.                                         if(val>390)
  9.                                         {
  10.                                             P1PU = 0x02;
  11.                                         }
  12.                                         else
  13.                                     {
  14.                                                 if(val>385)
  15.                                                 {
  16.                                                         P1PU = 0x04;
  17.                                                 }
  18.                                                    else
  19.                                                    {
  20.                
  21.                                                         if(val>380)
  22.                                                         {
  23.                                                                  P1PU = 0x08;
  24.                                                         }
  25.                                                         else
  26.                                                     {
  27.                                                                 if(val>375)
  28.                                                                 {
  29.                                 P1PU = 0x10;
  30.                                                                 }
  31.                                                                    else
  32.                                                               {
  33.                                                                           
  34.                                                                          if(val>370)
  35.                                                                         {
  36.                                          P1PU = 0x20;
  37.                                                                         }
  38.                                                                         else
  39.                                                                     {
  40.                                                                                 if(val>365)
  41.                                                                                 {
  42.                                                                                         P1PU = 0x40;
  43.                                                                                 }
  44.                                                                                    else
  45.                                                                                 {
  46.                                                                                         P1PU = 0x80;
  47.                                                                                 }
  48.                                                                         }
  49.                                                                 }
  50.                                                         }
  51.                                                  }
  52.                                         }
  53. /*-------------- GPIO初始化 --------------*/
  54. void GPIO_Init()
  55. {
  56.     P1M0 = 0x00; P1M1 = 0xff; // P1口高阻输入,程序控制单片机内部上拉电阻,实现灯亮灭
  57.     P3M0 = 0x10; P3M1 = 0x00; // P3.0、P3.1准双向口
  58.                                                           // P3.2准双向口(按键)
  59.                                                           // P3.3准双向口(DS18B20 DQ)
  60.                                                           // P3.4推挽输出(蜂鸣器)
  61.                                                           // P3.5、P3.6准双向口,实现灯亮灭
  62.                                                           // P3.7 准双向口(蓝牙使能)
  63.     RSTCFG |= 0x10;           // 设置P5.4为复位引脚
  64.     P1IE = 0x00;                           //关P1数字输入
  65.     P3IE = 0xff;              //使能P3口数字输入
  66. }
  67. /*----------- 多功能按键 ------------*/
  68. void anjian()
  69. {
  70.          if (!key)
  71.                 {
  72.                         Delay_ms(10);
  73.                         time = 0;
  74.                     while (!key)
  75.                         {
  76.                                 Delay_ms(10);
  77.                                 if (time < 200) time++;
  78.                                 if (key)
  79.                                 {
  80.                                         if (time == 200)
  81.                                         {
  82.                                                  changan();
  83.                                         }
  84.         
  85.                                 
  86.         
  87.                                         else
  88.                                         {
  89.                
  90.                                                 if (time > 50)
  91.                                                  {
  92.                                                     liangmiao();
  93.                
  94.                
  95.                                                  }
  96.                                          
  97.                                                  else
  98.                                                  {
  99.                                                         duanan() ;
  100.                         
  101.                                                  }
  102.                                          }
  103.                                 }
  104.                         }
  105.                  time = 0;
  106.         }
  107. }
复制代码






实物图

微信图片_20250324213533.jpg
微信图片_20250324213610.jpg
微信图片_20250324213605.jpg


微信图片_20250324234425.jpg


开源地址https://oshwhub.com/huitailang8888/smart-thermometer


说明
工程文件提供了彩色丝印和普通丝印两种版本,可根据个人喜好自由选择。











回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-06-17 00:16:01
已绑定手机

3

主题

60

回帖

261

积分

中级会员

积分
261
发表于 2025-5-14 21:53:25 | 显示全部楼层
这是程序,打板文件可以到嘉立创查看https://oshwhub.com/huitailang8888/smart-thermometer

体温计正常程序.hex

7.06 KB, 下载次数: 2

main.c

15.7 KB, 下载次数: 1

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:459
  • 最近打卡:2025-06-16 00:13:00
已绑定手机

37

主题

2221

回帖

2658

积分

荣誉版主

积分
2658
发表于 2025-5-15 00:30:07 | 显示全部楼层
这颗温度传感器的精度为9,10,11或12位。温度分辨率分别为0.5℃、0.25℃、0.125℃和0.0625℃,你是如何做到0.1℃分辨率的,浮点数四舍五入保留小数点后1位吗?
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-06-17 00:16:01
已绑定手机

3

主题

60

回帖

261

积分

中级会员

积分
261
发表于 2025-5-15 00:46:41 | 显示全部楼层
晓*** 发表于 2025-5-15 00:30
这颗温度传感器的精度为9,10,11或12位。温度分辨率分别为0.5℃、0.25℃、0.125℃和0.0625℃,你是如何做 ...

四舍五入
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 09:35 , Processed in 0.161145 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表