基于STM32单片机的OneNet物联网环境检测系统

1. 系统概述

本系统为一个基于STM32单片机的物联网环境检测系统,结合温湿度传感器、光照传感器、烟雾传感器及ESP8266 WiFi通信模块,构建了一个能够实时采集环境信息并上传至OneNet云平台的智能监测平台。用户可通过网页或手机APP实时查看各类环境参数,实现对温度、湿度、光照强度、烟雾浓度的远程监控,为智慧农业、智慧家居、智慧校园等场景提供数据支撑。

该系统主要分为三大部分:功能模块设计、电路设计、程序设计,下面将逐一进行详细介绍。

2. 功能介绍

本系统具有如下核心功能:

  1. 实时采集环境数据,包括温度、湿度、光照强度、烟雾浓度;
  2. 实时通过ESP8266 WiFi模块上传数据至OneNet云平台;
  3. 支持用户通过网页端或手机APP远程查看数据;
  4. 具有较强的可扩展性,便于添加更多传感器或控制模块。

这些功能的实现依赖于STM32单片机的高速处理能力、ESP8266的网络通信能力,以及各类环境传感器对不同物理量的敏感检测能力。

3. 电路设计

系统硬件电路由以下几个子模块组成:

3.1 STM32最小系统电路

STM32F103C8T6为核心控制芯片,提供强大的数据处理与外设接口能力。其最小系统包括:

  • 电源输入(3.3V稳压)
  • 时钟电路(8MHz晶振)
  • 下载接口(SWD或串口)
  • 复位电路(上拉电阻+按钮)

此部分为整个系统的核心,协调各传感器与WiFi模块的通讯、处理与控制。

3.2 温湿度传感器模块(DHT11)

DHT11是一款数字式温湿度传感器,使用单总线协议与STM32通信。其特点为:

  • 测量范围:温度050°C,湿度2090%RH;
  • 测量精度:±2°C(温度),±5%RH(湿度);
  • 通信方式:单总线,需定时采样与校验。

模块引脚简单,仅需VCC、GND和数据线,与STM32的GPIO口相连即可。

3.3 光照传感器模块(模拟型光敏电阻)

使用光敏电阻通过分压电路转化为电压信号,接入STM32的ADC通道实现光照强度测量。该模块特点:

  • 模拟量输出;
  • 对环境光线变化灵敏;
  • 通常与10KΩ电阻组成分压器。

STM32通过ADC读取电压即可判断环境亮度等级。

3.4 烟雾传感器模块(MQ-2)

MQ-2气体传感器用于检测空气中的烟雾浓度,输出包括:

  • 模拟信号(烟雾浓度对应电压);
  • 数字信号(超过设定浓度时为高电平)。

在本系统中使用模拟输出接入ADC通道,提高检测精度。

3.5 ESP8266 WiFi模块

ESP8266模块用于将采集到的数据上传到云平台。模块支持:

  • 802.11 b/g/n 协议;
  • AT命令控制;
  • 与STM32通过串口通信;
  • 模块需配置SSID、密码及OneNet平台通信协议。

ESP8266是连接本地设备与云端的重要桥梁。

3.6 电源模块

系统采用5V供电,经过AMS1117稳压芯片降压至3.3V供STM32与ESP8266使用。为了系统稳定运行,需注意:

  • 电源滤波电容;
  • 模块之间地线共用;
  • ESP8266电流需求高,需提供足够电流。

4. 程序设计

程序设计是本系统实现功能的关键部分,主要包括各模块初始化、数据采集、数据上传、通信处理等子模块。

4.1 主函数设计

主函数负责系统的初始化与主循环调度。

c 复制代码
int main(void)
{
    SystemInit();
    DHT11_Init();
    ADC_Config();
    USART1_Init(115200);
    ESP8266_Init();

    while (1)
    {
        Read_Env_Data();
        Upload_Data_To_OneNet();
        Delay_ms(5000);
    }
}

4.2 DHT11温湿度采集程序

c 复制代码
void DHT11_ReadData(uint8_t* temperature, uint8_t* humidity)
{
    // 初始化与发送起始信号
    // 接收40位数据:8位湿度整数 + 8位湿度小数 + 8位温度整数 + 8位温度小数 + 8位校验位
    // 简化后仅提取整数部分
}

此函数定时调用,读取DHT11的温度与湿度数据并存储在变量中供上传使用。

4.3 光照强度采集程序

c 复制代码
uint16_t Read_Light_Intensity(void)
{
    uint16_t adc_value = ADC_Read(LIGHT_SENSOR_CHANNEL);
    return adc_value;
}

通过STM32的ADC模块读取光敏电阻的模拟电压值,换算为光照强度。

4.4 烟雾浓度采集程序

c 复制代码
uint16_t Read_Smoke_Level(void)
{
    uint16_t adc_value = ADC_Read(SMOKE_SENSOR_CHANNEL);
    return adc_value;
}

同样使用ADC模块获取MQ-2传感器输出电压,用于判断当前空气中烟雾浓度。

4.5 ESP8266初始化程序

c 复制代码
void ESP8266_Init(void)
{
    USART_SendString("AT\r\n");
    Delay_ms(1000);
    USART_SendString("AT+CWMODE=1\r\n");
    Delay_ms(1000);
    USART_SendString("AT+CWJAP=\"YourSSID\",\"YourPassword\"\r\n");
    Delay_ms(3000);
}

该初始化步骤用于配置ESP8266的工作模式与WiFi连接信息。

4.6 上传数据到OneNet

c 复制代码
void Upload_Data_To_OneNet(void)
{
    char data_buffer[128];
    sprintf(data_buffer, "{\"datastreams\":[{\"id\":\"temp\",\"datapoints\":[{\"value\":%d}]},"
                         "{\"id\":\"humi\",\"datapoints\":[{\"value\":%d}]},"
                         "{\"id\":\"light\",\"datapoints\":[{\"value\":%d}]},"
                         "{\"id\":\"smoke\",\"datapoints\":[{\"value\":%d}]}]}",
                         temperature, humidity, light_intensity, smoke_level);

    ESP8266_SendTo_OneNet(data_buffer);
}

该函数负责格式化各项环境数据并通过ESP8266上传至OneNet平台,符合OneNet的MQTT或HTTP数据结构要求。

4.7 串口通信函数

c 复制代码
void USART1_Init(uint32_t baudrate)
{
    // USART1初始化配置波特率、数据位、停止位、校验等
}

STM32通过USART1与ESP8266进行数据交互。

4.8 延时函数

c 复制代码
void Delay_ms(uint32_t ms)
{
    // 基于SysTick或定时器实现的毫秒级延迟
}

用于定时控制传感器采样与上传周期,避免数据重复或阻塞。

5. 总结

本项目完整实现了一个基于STM32单片机的智能环境监测系统,系统稳定、功能丰富,具有如下优势:

  • 实时监控:可实时监测温度、湿度、光照强度与烟雾浓度;
  • 云端管理:依托OneNet云平台实现远程数据查看;
  • 可视化展示:配合网页或APP界面便于用户操作;
  • 模块化设计:系统结构清晰,便于扩展与维护;
  • 实用性强:适用于家庭环境监测、智慧农业、环境科研等多种场景。

未来可进一步增加LCD显示、语音播报、报警功能、自动化执行等模块,扩展系统的智能化水平。通过对物联网平台深入应用,推动智慧生活向更高水平发展。

相关推荐
酷飞飞2 小时前
库函数版独立按键用位运算方式实现(STC8)
单片机·嵌入式硬件
我怕是好2 小时前
STM32 输入捕获,串口打印,定时器,中断综合运用
stm32·单片机·嵌入式硬件
芯希望4 小时前
芯伯乐XBL6019 60V/5A DC-DC升压芯片的优质选择
大数据·人工智能·物联网·dc-dc·电子元器件·电源管理ic·xblw芯伯乐
电子科技圈4 小时前
芯科科技成为全球首家通过PSA 4级认证的物联网芯片厂商巩固其在物联网安全领域的领导地位
科技·物联网·安全·网络安全·边缘计算
zhmc5 小时前
MCU程序的ARM-GCC编译链接
arm开发·单片机·嵌入式硬件
K神6 小时前
物联网之常见网络配置
物联网·网络协议·go
滴啦嘟啦哒8 小时前
【从0到1制作一块STM32开发板】5. 整体布局
stm32·单片机·嵌入式硬件
普中科技14 小时前
【普中STM32精灵开发攻略】--第 11 章 SysTick系统定时器
stm32·单片机·嵌入式硬件·物联网·arm·普中科技
飞翔的佩奇15 小时前
【完整源码+数据集+部署教程】海上场景水上交通物体检测图像分割系统源码和数据集:改进yolo11-HGNetV2
python·yolo·计算机视觉·毕业设计·数据集·yolo11·水上交通物体检测