基于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显示、语音播报、报警功能、自动化执行等模块,扩展系统的智能化水平。通过对物联网平台深入应用,推动智慧生活向更高水平发展。

相关推荐
hahaha60165 小时前
模拟电路中什么时候适合使用电流传递信号,什么时候合适使用电压传递信号
stm32·单片机·嵌入式硬件
小小少年1237 小时前
基于蓝牙的stm32智能火灾烟雾报警系统设计
stm32·单片机·嵌入式硬件
点灯小铭9 小时前
基于51单片机红外避障车辆高速汽车测速仪表设计
单片机·嵌入式硬件·汽车·毕业设计·51单片机·课程设计
猫猫的小茶馆14 小时前
【STM32】将 FreeRTOS移植到STM32F103RCT6 详细流程
stm32·单片机·嵌入式硬件·mcu·智能硬件
智驾14 小时前
MCU平台化实践方案
单片机·嵌入式硬件·mcu·嵌入式
TDengine (老段)15 小时前
TDengine 数据订阅支持 MQTT 协议用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
qq_124987075319 小时前
基于改进蜂群优化算法的高频金融波动率预测系统 (源码+论文+部署+安装)
python·算法·金融·毕业设计·蜂群优化算法
皮皮学姐分享-ppx19 小时前
机器人行业工商注册企业基本信息数据(1958-2023年)
大数据·人工智能·python·物联网·机器人·区块链
日更嵌入式的打工仔21 小时前
uC/OS-III 队列相关接口
单片机
Leiditech__21 小时前
雷卯针对香橙派Orange Pi 2G-IOT开发板防雷防静电方案
物联网