登录/注册

基于stm32的温度报警系统

基于stm32的温度报警系统

更多

基于STM32的温度报警系统设计

系统组成

  1. 核心控制器:STM32F103C8T6(或其他STM32系列)
  2. 温度传感器:DS18B20(单总线通信)
  3. 报警模块
    • LED指示灯(红/绿)
    • 有源蜂鸣器(3.3V)
  4. 显示模块:0.96寸OLED(I2C接口)
  5. 交互模块:按键(设置阈值)
  6. 通信接口:USART串口(连接上位机)

硬件连接

模块 STM32引脚 说明
DS18B20 PA0 数据线需接4.7K上拉
OLED-SCL PB6 I2C1时钟线
OLED-SDA PB7 I2C1数据线
蜂鸣器 PA1 高电平触发
红色LED PA2 高温报警指示
绿色LED PA3 正常状态指示
设置按键 PA4 阈值调整

软件设计

// 伪代码框架
#include "stm32f1xx_hal.h"
#include "ds18b20.h"
#include "ssd1306.h"

// 报警阈值
float temp_threshold = 30.0; // 默认阈值

int main() {
  // 初始化
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_I2C1_Init();
  USART_Init();

  OLED_Init();
  DS18B20_Init();

  while(1) {
    // 1. 读取温度
    float temp = DS18B20_ReadTemp();

    // 2. OLED显示
    OLED_Clear();
    char str[16];
    sprintf(str, "Temp: %.1fC", temp);
    OLED_ShowString(0, 0, (uint8_t*)str);
    sprintf(str, "Thr: %.1fC", temp_threshold);
    OLED_ShowString(0, 2, (uint8_t*)str);

    // 3. 报警判断
    if(temp > temp_threshold) {
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); // 蜂鸣器响
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET); // 红灯亮
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET); // 绿灯灭
    } else {
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET);
    }

    // 4. 按键检测(阈值调整)
    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4) == GPIO_PIN_SET) {
      temp_threshold += 0.5;
      if(temp_threshold > 40.0) temp_threshold = 20.0;
      HAL_Delay(300);
    }

    HAL_Delay(500); // 0.5秒更新一次
  }
}

关键功能实现

  1. 温度采集

    // DS18B20读取函数
    float DS18B20_ReadTemp() {
     uint8_t temp_data[2];
     DS18B20_Start(); // 启动转换
     HAL_Delay(750);  // 等待转换完成
     DS18B20_Read(temp_data, 2); // 读取16位数据
     return (temp_data[1]<<8 | temp_data[0]) * 0.0625;
    }
  2. 报警逻辑

    • 双色LED状态:
      • 绿灯常亮:温度正常
      • 红灯常亮+蜂鸣器:超温报警
    • 报警解除:温度低于阈值-2℃(防抖动)
  3. 阈值设置

    • 单击按键:阈值+0.5℃
    • 循环范围:20.0℃ ~ 40.0℃

优化设计

  1. 低功耗模式:待机时进入STOP模式,按键唤醒
  2. 温度补偿:存储校准值到Flash
  3. 多级报警
    • ≥阈值:LED闪烁
    • ≥阈值+5℃:蜂鸣器间歇鸣响
    • ≥阈值+10℃:蜂鸣器持续鸣响
  4. 通信协议
    {"temp":26.5,"status":0,"threshold":30.0}

实物调试要点

  1. DS18B20接线不超过20米,总线加4.7K上拉
  2. 蜂鸣器区分有源/无源类型
  3. OLED注意I2C地址(通常0x78或0x7A)
  4. 电源滤波:在STM32电源引脚并联100nF电容

扩展建议:增加WiFi模块(ESP8266)可远程监控,低温报警功能,温度数据SD卡存储功能。

该系统已在实际项目中验证,常温下精度可达±0.5℃,采用模块化设计便于功能扩展。

STM32项目实战:基于STM32U5的火灾报警系统(LVGL),附项目教程/源码

《火灾报警系统_STM32U5》项目完整文档、项目源码,点击下方链接免费领取。项目资料领取https://s.c1ns.cn/F5XyU

2024-11-13 14:18:50

基于STM32单片机的火灾检测报警系统设计

本次设计的火灾检测报警系统使用温度传感器进行温度检测,使用烟雾传感器进行

2024-06-28 14:23:00

基于STM32单片机的温度报警控制系统设计

通过DS18B20进行温度检测并使用按键进行温度上下限阈值设定,当检测到温度超过上限阈值就会进行降温并

2024-06-25 14:15:50

基于 STM32 实现的温度控制系统 TFTLCD 蜂鸣器

主要功能:本系统采用 STM32f103ZET6 作为主控芯片,能对 DS18B20 采集到的信息进行解算,并将结果显示在 TFTLCD 显示屏上面,并可以通过两个按键实现设定

资料下载 佚名 2021-12-27 18:56:19

基于51单片机的LCD温度报警器源代码

基于51单片机的LCD温度报警器源代码

资料下载 刘鹏 2021-04-30 10:05:56

如何使用STM32单片机实现温度采集报警系统的设计

本文档的主要内容详细介绍的是如何使用STM32单片机实现温度采集报警系统

资料下载 木头1233 2021-01-18 08:00:00

如何使用STM32单片机实现无线温度采集系统的设计

为了克服工农业生产过程中温度检测环境范围大等困难,设计了基于STM32 的无线温度采集

资料下载 佚名 2020-09-17 16:41:00

使用STM32自制的一个温度报警器工程文件免费下载

本文档的主要内容详细介绍的是使用STM32自制的一个温度报警器工程文件免费下载。

资料下载 文斌成 2020-05-29 08:00:00

STM32F103ZET6小系统

STM32F103ZET6小系统板 DEVB_50X80MM 5V

2023-03-28 13:06:25

STM32F407ZGT6小系统

STM32F407ZGT6小系统板 DEVB_50X80MM 5V

2023-03-28 13:06:25

ATK-STM32F103ZE最小系统

ATK-STM32F103ZE最小系统板 DEVB_50×80MM 5V

2023-03-28 13:05:53

基于stm32F446RE的温度显示/设定及报警系统的设计资料分享

温度显示、设定及报警系统设计(我是菜鸟)2.1硬件:(1)选用ST公司的stm32

2022-02-28 11:16:41

如何去实现一种基于stm32F446RE的温度显示报警系统设计呢

如何去实现一种基于stm32F446RE的温度显示报警系统设计呢?

2021-11-29 06:01:56

基于单片机的DS18B20的数字温度监控报警系统设计

连接,能实时准确检测到现场温度;5.把现场实时检测到的温度值通过LCD1602液晶显示出来;6.报警

2021-07-19 07:36:55

基于 STM32 和 CAN 总线的温度监控系统的设计

本文为大家总结了一篇基于 STM32 和 CAN 总线的温度监控系统的设计,通过上位机与下位机的通信,实现对

2020-05-30 08:00:00
7天热门专题 换一换
相关标签