基于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查看实时温度和历史数据
通过以上步骤,我们构建了一个完整的智能温度监测系统。该系统不仅能够实时监测环境温度,还能通过无线网络将数据传输到云端,实现远程监控和数据分析。这种设计在智能家居、工业控制、环境监测等领域具有广泛的应用前景。
热门推荐
九首释怀诗词,珍惜不期而遇,看淡不辞而别
农村住宅最佳风水布局
痣越长越大需要切除吗
上海眼科医院眼科医生的专业要求
“治世之能臣,乱世之奸雄?历史上还有谁评价过曹操的一生?
个税汇算 指南与新政 Tax Settlement
煎鸡蛋粘锅怎么办
办公软件评估指标有哪些
文献引用的基本原则与注意事项
浙江:红色档案赋能高校思政教育
当代中青年实证学者必读因果推断综述:经济学因果框架里的脉络与前沿
两个人适不适合在一起,如何从四观上客观快速判断
深读丨大学书院,多元助力拔尖创新人才成长
李世民和朱棣都是藩王造反 两人本质上有什么区别
《宝可梦传说 Z-A》Mega进化的生态寓言:一场科技与自然的时空博弈
教宗方济各:不要忘记穷人,基督徒不可对他们转面不顾
中药材网购乱象:扁豆染色冒充酸枣仁,教你辨别真假
口腔癌术后需要进行定期复查吗
《针灸甲乙经》:我国现存最早的针灸学专著
韬光养晦的成语故事赏析
如何远程唤醒家里的电脑?
丝瓜生长全攻略:从种植到收获的15个关键环节详解
公募基金遭遇5000亿赎回潮,银行股却逆势上涨,背后原因令人深思
咳咳咳,春季呼吸道疾病怎么应对?
如何确定存储设备的最大文件大小限制?
种植牙的八个后遗症:有局部肿胀/出血/感染/植体松动/骨吸收/神经损伤等
揭开“肿”相背后的秘密:种植牙植骨后脸部肿胀?正常现象,若持续过久需要就医!
很多人觉得公司价值观都是空话,但他们错了
二手房延期交房怎么起诉?赔偿金额如何计算?
硬盘驱动器(HDD)工作原理详解:从硬件结构到数据读写