基于STM32F103C8T6的智能温度监测系统设计
创作时间:
作者:
@小白创作中心
基于STM32F103C8T6的智能温度监测系统设计
引用
亚马逊官方网站
等
8
来源
1.
https://www.amazon.com/EC-Buying-Non-Contact-Temperature-Acquisition/dp/B0B63K5V7T
2.
https://www.amazon.com/Teyleten-Robot-MLX90614-MLX90614ESF-Temperature/dp/B0CLDGFQYS
3.
https://github.com/AhmedSamymoh/Firmware-Over-The-Air
4.
https://news.mit.edu/2024/mit-derived-algorithm-helps-forecast-frequency-extreme-weather-0326
5.
https://community.st.com/t5/stm32-mcus-products/stm32-for-high-speed-adc-gt-100-msps/td-p/731722
6.
https://www.sciencedirect.com/science/article/abs/pii/S1359431124002394
7.
https://community.st.com/t5/stm32-mcus-products/adc-measurement-noise-on-stm32g0-based-mcus/td-p/646002
8.
https://community.st.com/t5/stm32-mcus-embedded-software/adc-read-maximizing-precision-and-accuracy/td-p/654969
随着物联网技术的快速发展,智能温度监测系统在工业控制、智能家居、环境监测等领域发挥着越来越重要的作用。基于STM32F103C8T6单片机的温度监测系统,以其高集成度、低功耗和强大的处理能力,成为众多开发者的选择。本文将详细介绍如何利用STM32F103C8T6和GY-906温度传感器,设计一个具有无线数据传输功能的智能温度监测系统。
01
硬件选型与设计
为什么选择STM32F103C8T6?
STM32F103C8T6是意法半导体(STMicroelectronics)推出的一款基于Cortex-M3内核的32位微控制器,具有以下特点:
- 高性能:运行频率可达72MHz,提供充足的处理能力
- 丰富的外设:集成多个定时器、USART、SPI、I2C等通信接口
- ADC性能:具有12位分辨率的ADC,采样速率可达1MSPS
- 低功耗:多种低功耗模式,适合电池供电应用
- 成本优势:在高性能微控制器中具有较高的性价比
温度传感器GY-906
GY-906是一款非接触式红外温度传感器,基于MLX90614红外传感器芯片,具有以下特点:
- 测量范围:-70°C至+380°C
- 精度:±0.5°C(在-20°C至+50°C范围内)
- 接口:支持I2C和PWM输出
- 使用方便:模块化设计,易于集成
硬件连接
STM32F103C8T6与GY-906的连接:
- VCC连接到3.3V电源
- GND接地
- SDA连接到STM32的PB7
- SCL连接到STM32的PB6
STM32F103C8T6与ESP8266的连接:
- VCC连接到3.3V电源
- GND接地
- TXD连接到STM32的PA2(USART2_RX)
- RXD连接到STM32的PA3(USART2_TX)
02
软件设计
ADC配置
在本设计中,我们将使用STM32F103C8T6的ADC来读取温度传感器的模拟信号。以下是ADC配置的关键参数:
ADC_HandleTypeDef hadc;
void MX_ADC_Init(void) {
hadc.Instance = ADC1;
hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
hadc.Init.Resolution = ADC_RESOLUTION_12B;
hadc.Init.ScanConvMode = DISABLE;
hadc.Init.ContinuousConvMode = DISABLE;
hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc.Init.DMAContinuousRequests = DISABLE;
hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
if (HAL_ADC_Init(&hadc) != HAL_OK) {
// 错误处理
}
ADC_ChannelConfTypeDef sConfig = {0};
sConfig.Channel = ADC_CHANNEL_0; // 对应PA0
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) {
// 错误处理
}
}
温度数据读取
由于GY-906是通过I2C接口通信,我们需要使用I2C协议来读取温度数据。以下是一个简单的读取函数:
#include "stm32f1xx_hal.h"
#include "i2c.h"
#define MLX90614_I2C_ADDRESS 0x5A
#define MLX90614_TA_REGISTER 0x06
#define MLX90614_TOBJ1_REGISTER 0x07
float read_temperature() {
uint16_t raw_temp = 0;
uint8_t data[2];
HAL_I2C_Mem_Read(&hi2c1, MLX90614_I2C_ADDRESS << 1, MLX90614_TOBJ1_REGISTER, I2C_MEMADD_SIZE_8BIT, data, 2, HAL_MAX_DELAY);
raw_temp = (data[0] << 8) | data[1];
float temperature = (raw_temp * 0.02) - 273.15; // 转换为摄氏度
return temperature;
}
数据传输
为了实现无线数据传输,我们使用ESP8266作为WiFi模块。以下是一个简单的数据发送示例:
#include "stm32f1xx_hal.h"
#include "usart.h"
void send_data_to_esp8266(float temperature) {
char buffer[50];
sprintf(buffer, "AT+CIPSEND=0,%d\r\n", strlen(buffer));
HAL_UART_Transmit(&huart2, (uint8_t*)buffer, strlen(buffer), HAL_MAX_DELAY);
sprintf(buffer, "%f\r\n", temperature);
HAL_UART_Transmit(&huart2, (uint8_t*)buffer, strlen(buffer), HAL_MAX_DELAY);
}
03
数据分析与预测
为了增加系统的智能化程度,我们可以对温度数据进行简单的趋势预测。这里我们采用移动平均法进行预测:
#define MOVING_AVERAGE_SIZE 10
float temperature_buffer[MOVING_AVERAGE_SIZE];
uint8_t buffer_index = 0;
void update_temperature_buffer(float temperature) {
temperature_buffer[buffer_index] = temperature;
buffer_index = (buffer_index + 1) % MOVING_AVERAGE_SIZE;
}
float predict_temperature() {
float sum = 0;
for (int i = 0; i < MOVING_AVERAGE_SIZE; i++) {
sum += temperature_buffer[i];
}
return sum / MOVING_AVERAGE_SIZE;
}
04
系统运行流程
- 系统上电后,STM32F103C8T6初始化ADC、I2C和USART等外设
- 通过I2C读取GY-906的温度数据
- 将温度数据通过USART发送给ESP8266
- ESP8266将数据上传到云端服务器
- 云端服务器对数据进行存储和分析,用户可以通过手机APP查看实时温度和历史数据
通过以上步骤,我们构建了一个完整的智能温度监测系统。该系统不仅能够实时监测环境温度,还能通过无线网络将数据传输到云端,实现远程监控和数据分析。这种设计在智能家居、工业控制、环境监测等领域具有广泛的应用前景。
热门推荐
上海10家经典本帮餐馆,每一家都是老上海的味道
新书|张总著《〈十王经〉信仰:经本成变、图画像雕与东亚葬俗》出版
宝宝如何正确清洁鼻子鼻屎
物质结构与性质:从共价键到键参数
揭秘菌类食物的营养成分及健康益处:全面解析真菌类食品的营养价值与功效
瑞士Tplus种植体特点解析:材质靠谱稳定性好,做种植牙满意度高
东汉皇帝的治世密码,14位帝王的风云岁月!
香港蒙特梭利国际学校:最正宗的蒙特梭利教育,沉浸式双语+愉快学习环境
培养小学生英语思维能力的路径探寻
2025-2031年全球新能源接入行业十五五前景及发展规划研究报告
长春的房子过剩?一组数据告诉你真实的楼市情况!2024哪些新盘值得关注?
韩国版跑男《Running Man》:十年奔跑,笑料与感动永不止步
《钢铁故事》之钢铁时代
回顾 DeepSeek “全球出圈”前后值得关注的 AI 大模型要闻
玫瑰花有哪些品种?玫瑰花的含义是什么?
美国个人公司账户注册全面指南:申请步骤与方法
一个号码毁掉千万富翁梦!解密彩票"致命一号"背后的数学陷阱
餐饮厨具清洁与消毒:守护食品安全的更好道防线
三年级考点全覆盖:三下语文必背1-8单元课文中心思想
如何确定合理的薪资考核标准?
大语言模型遇上寻路算法:LLM-A*如何让路径规划效率提升50%?
推挽式B类功率放大器的基本原理
在中小企业中发掘成长股,这有2个精细化策略!
从预防到照护:与阿尔茨海默病患者同行的每一步
6本刚完结巨龙类异兽流小说,龙焰焚灭大地,龙群征战无尽位面
商业租赁合同合法现在吗
腊肉吃多了有致癌风险?记住这5招,可以放心吃!
网飞,拍不出中国观众满意的《三体》
【普法】解除劳动合同补偿金基数,如何计算?
上海集成电路产业链全景分析【附优质企业名单】