1 系统功能介绍

本设计为 基于 STM32 单片机的温湿度、臭氧、二氧化碳检测与 OneNET 云平台联网系统,通过传感器实时采集环境数据,借助 OLED 液晶显示模块进行本地显示,并通过 Wi-Fi 模块将数据上传至 OneNET 物联网平台,实现远程数据可视化和报警信息管理。用户不仅能够通过本地设备了解当前环境状况,还能通过云平台随时随地查看实时数据和历史记录,从而实现智能环境监测。

系统主要功能如下:

  1. 环境数据采集

    • 采集温度、湿度、臭氧浓度、二氧化碳浓度;
    • 通过 STM32 的 ADC 或 UART 接口获取传感器数据。
  2. 本地显示

    • 使用 OLED 液晶屏显示温湿度、臭氧、二氧化碳数据;
    • 实时刷新显示,提供直观数据参考。
  3. 数据上传与云平台交互

    • 通过 ESP8266 Wi-Fi 模块与 OneNET 云平台连接;
    • 定时上传环境参数至云端,云端可进行历史记录和图表分析;
    • 当数据超过阈值,云端显示报警信息。
  4. 远程监控与报警

    • 用户可通过网页或移动端登录 OneNET 平台;
    • 实时查看环境参数与报警提示;
    • 平台支持数据存储、趋势分析、报警通知。

2 系统电路设计

2.1 STM32F103C8T6 最小系统

本设计采用 STM32F103C8T6 单片机,作为数据采集与处理的核心:

  • 主频 72MHz,Cortex-M3 内核;
  • 内部集成丰富的外设接口,支持 UART、I2C、SPI、ADC 等;
  • 负责传感器数据读取、OLED 显示驱动、Wi-Fi 模块通信以及逻辑控制。

2.2 温湿度传感器电路

温湿度检测模块可选用 DHT11/DHT22 或 SHT30/40

  • 数据输出为单总线或 I2C 接口;
  • 实时获取温度(℃)与湿度(%RH);
  • 与 STM32 直接连接,编程较为简便。

2.3 臭氧传感器电路

臭氧浓度检测采用 MQ131 气体传感器模块

  • 输出模拟电压信号;
  • 由 STM32 内置 ADC 采集并换算成实际浓度;
  • 适合检测空气中 10ppb~2ppm 范围的臭氧浓度。

2.4 二氧化碳传感器电路

二氧化碳检测模块采用 MH-Z19B 红外 CO₂ 传感器

  • 支持 UART 输出(浓度数据直接读取);
  • 测量范围:0~5000 ppm;
  • 数据精准,通信可靠,便于集成。

2.5 OLED 液晶显示电路

显示模块选用 0.96 寸 OLED 显示屏(SSD1306 驱动)

  • 分辨率 128×64;
  • I2C 接口与 STM32 通信;
  • 显示温度、湿度、臭氧、二氧化碳浓度等数据。

2.6 Wi-Fi 模块电路

无线通信部分采用 ESP8266 模块

  • 通过 UART 与 STM32 通信;
  • 负责连接 OneNET 云平台,发送 JSON 格式数据;
  • 支持 TCP/IP 协议,便于云端交互。

2.7 电源电路

  • 系统供电电压 5V;
  • 使用 AMS1117-3.3 稳压芯片为 ESP8266、OLED 等提供 3.3V 电源;
  • 传感器与主控统一接地,保证稳定运行。

3 程序设计

3.1 主程序框架

#include "stm32f10x.h"
#include "oled.h"
#include "dht11.h"
#include "adc.h"
#include "usart.h"
#include "esp8266.h"
#include "delay.h"
#include "mhz19b.h"

float Temperature, Humidity;
float Ozone, CO2;

int main(void)
{
    SystemInit();
    OLED_Init();
    DHT11_Init();
    ADC_Init();
    USART1_Init(115200); // 串口调试
    ESP8266_Init(115200); // Wi-Fi 模块
    MHZ19B_Init();

    while(1)
    {
        DHT11_ReadData(&Temperature, &Humidity);
        Ozone = Get_Ozone();
        CO2 = MHZ19B_ReadCO2();

        OLED_Show_Data(Temperature, Humidity, Ozone, CO2);

        ESP8266_SendToOneNet(Temperature, Humidity, Ozone, CO2);

        delay_ms(3000);
    }
}

3.2 温湿度采集

void DHT11_ReadData(float *temp, float *humi)
{
    u8 buf[5];
    if(DHT11_Read(buf) == 0)
    {
        *humi = buf[0] + buf[1] * 0.1;
        *temp = buf[2] + buf[3] * 0.1;
    }
}

3.3 臭氧传感器采集

float Get_Ozone(void)
{
    u16 adc_val = ADC_GetConversionValue(ADC1);
    float voltage = adc_val * 3.3 / 4096.0;
    float ozone_ppm = voltage * 10; // 简化比例换算
    return ozone_ppm;
}

3.4 二氧化碳传感器采集

int MHZ19B_ReadCO2(void)
{
    u8 cmd[9] = {0xFF,0x01,0x86,0,0,0,0,0,0};
    u8 response[9];
    USART2_Send(cmd,9);
    USART2_Receive(response,9);

    if(response[0] == 0xFF && response[1] == 0x86)
    {
        int co2 = (response[2] << 8) + response[3];
        return co2;
    }
    return -1;
}

3.5 OLED 数据显示

void OLED_Show_Data(float temp, float humi, float ozone, float co2)
{
    OLED_Clear();
    OLED_ShowString(0,0,"Temp: ");
    OLED_ShowNum(50,0,temp,3,1);
    OLED_ShowString(90,0,"C");

    OLED_ShowString(0,16,"Humi: ");
    OLED_ShowNum(50,16,humi,3,1);
    OLED_ShowString(90,16,"%");

    OLED_ShowString(0,32,"Ozone:");
    OLED_ShowNum(60,32,ozone,3,1);
    OLED_ShowString(100,32,"ppm");

    OLED_ShowString(0,48,"CO2: ");
    OLED_ShowNum(50,48,co2,4,0);
    OLED_ShowString(100,48,"ppm");
}

3.6 Wi-Fi 模块与 OneNET 通信

void ESP8266_SendToOneNet(float t, float h, float o, float c)
{
    char json_buf[128];
    sprintf(json_buf,
        "{\"datastreams\":[{\"id\":\"temperature\",\"datapoints\":[{\"value\":%.2f}]},"
        "{\"id\":\"humidity\",\"datapoints\":[{\"value\":%.2f}]},"
        "{\"id\":\"ozone\",\"datapoints\":[{\"value\":%.2f}]},"
        "{\"id\":\"co2\",\"datapoints\":[{\"value\":%.2f}]}]}",
        t,h,o,c);

    ESP8266_SendData(json_buf);
}

4 总结

本设计实现了一个 基于 STM32 单片机的多参数环境检测与云平台交互系统,涵盖了温度、湿度、臭氧、二氧化碳四类数据的实时采集与显示,并借助 ESP8266 模块实现与 OneNET 云平台的数据交互。系统不仅可以在 OLED 本地显示实时数据,还能通过 远程网页平台实现数据可视化与报警监控。

主要优势:

  1. 功能全面:同时监测温度、湿度、臭氧、二氧化碳等环境参数;
  2. 本地与远程结合:OLED 屏幕+OneNET 云平台,实时性与远程性兼顾;
  3. 报警机制:参数超标时在云平台显示报警提示,提高安全性;
  4. 可扩展性强:系统预留 UART/I2C 接口,可扩展更多传感器;
  5. 应用前景广泛:适用于实验室、车间、智能家居、空气质量监控等领域。

该系统不仅是嵌入式与物联网结合的典型案例,也是智能环境监测设备研发的重要参考方案。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐