1 系统功能介绍

本系统为 基于STM32单片机的新版OneNET物联网云平台环境检测手机APP系统,旨在实现智能化环境监测与远程控制。随着物联网与智能农业、智能家居的发展,环境参数实时采集与云平台交互逐渐成为主流。通过云端平台的中转,用户不仅可以远程查看数据,还能对设备进行远程控制,从而提高了系统的智能化程度与实用性。

系统功能主要体现在以下几个方面:

  1. 温湿度检测:通过 DHT11温湿度传感器 实时采集环境温度和湿度数据。
  2. 数据上传:STM32 单片机通过网络模块将采集到的数据上传至 新版OneNET物联网云平台
  3. APP查看:用户可以通过手机APP随时查看实时温湿度数据,数据同步及时。
  4. 远程控制:用户可通过APP远程下发指令,控制系统端的 LED 灯开关
  5. 云端交互:利用OneNET提供的设备管理、数据存储与命令下发功能,实现本地与云端的数据交互。

该系统不仅具备实时数据监测能力,同时具备远程操控功能,可广泛应用于智慧农业、智能家居、实验室环境监测等场景。


2 系统电路设计

系统电路分为 核心控制电路传感器采集电路网络通信电路执行器控制电路电源电路 五大部分。

2.1 核心控制模块(STM32F103C8T6)

STM32F103C8T6 作为主控单片机:

  • 主频 72MHz,性能稳定,适合实时采集与数据处理。
  • 提供 GPIO 用于 DHT11 数据采集和 LED 控制。
  • 内部定时器与串口资源丰富,便于与网络模块通信。
  • 作为系统核心,负责采集传感器数据、打包并上传云端,同时接收来自云端的控制指令。

2.2 温湿度采集模块(DHT11)

DHT11 是一种常用的数字式温湿度传感器,特点如下:

  • 数字信号输出,无需ADC转换,通信简单。
  • 测温范围:0~50℃;湿度范围:20%~90%RH,满足日常环境检测需求。
  • 通过单总线协议与 STM32 进行数据通信。
    在电路上,DHT11的 数据引脚 连接至STM32的GPIO,且通过上拉电阻保证数据传输稳定。

2.3 网络通信模块

为了实现数据与云平台的交互,需要配置网络通信模块,本系统常见的选择包括 ESP8266 WiFi模块NB-IoT 模块。本文以 ESP8266 为例:

  • 通过串口(USART)与 STM32 通信。
  • 连接 WiFi 热点后,通过 MQTT 或 HTTP 协议与OneNET云平台建立连接。
  • 负责将采集的数据发送至云端并接收云端下发的控制命令。

2.4 执行器控制模块(LED)

LED作为远程控制对象:

  • 连接至STM32 GPIO,通过电阻限流。
  • 由单片机根据APP下发的控制命令实现点亮或熄灭。
  • 通过云端与APP实现交互,用户可在手机端一键控制。

2.5 电源模块

系统由 5V直流电源 供电:

  • STM32与DHT11工作在3.3V或5V环境下,需提供稳定电源。
  • ESP8266 模块要求3.3V电源,因此电路中需要使用 LDO 稳压芯片(如 AMS1117-3.3)。
  • 设计时需保证电源稳定,避免因电压波动导致通信异常。

3 程序设计

系统软件主要包括 主机程序云端交互逻辑,其核心分为:

  1. 传感器采集模块
  2. OneNET数据上传模块
  3. 云端指令解析模块
  4. LED控制模块
  5. APP交互与数据刷新逻辑

3.1 主程序框架

int main(void)
{
    System_Init();       // 系统初始化
    DHT11_Init();        // 初始化温湿度传感器
    ESP8266_Init();      // 初始化WiFi模块
    OneNET_Connect();    // 连接OneNET云平台
    
    while(1)
    {
        DHT11_ReadData(&temperature, &humidity);  // 采集温湿度
        OneNET_SendData(temperature, humidity);   // 上传至云端
        
        if(OneNET_ReceiveCmd(&ledState))          // 接收云端指令
        {
            if(ledState == 1)
                LED_On();
            else
                LED_Off();
        }
        
        Delay_ms(2000);   // 2秒一次数据上传
    }
}

3.2 温湿度采集模块

uint8_t DHT11_ReadData(uint8_t *temp, uint8_t *humi)
{
    uint8_t buffer[5];
    if(DHT11_ReadBytes(buffer))
    {
        *humi = buffer[0];
        *temp = buffer[2];
        return 1;
    }
    return 0;
}

此模块负责采集环境的温湿度信息,并以整型数据返回给主控。


3.3 OneNET 数据上传模块

系统通过 MQTT 协议与OneNET交互,STM32将采集到的数据封装为 JSON 格式上传。

void OneNET_SendData(uint8_t temp, uint8_t humi)
{
    char jsonBuf[64];
    sprintf(jsonBuf, "{\"Temperature\":%d,\"Humidity\":%d}", temp, humi);
    MQTT_Publish("onenet/device/data", jsonBuf);
}

3.4 云端指令接收模块

APP端可通过OneNET平台下发控制命令,STM32解析后执行。

uint8_t OneNET_ReceiveCmd(uint8_t *ledState)
{
    char cmdBuf[32];
    if(MQTT_Receive("onenet/device/cmd", cmdBuf))
    {
        if(strstr(cmdBuf, "LED_ON"))
        {
            *ledState = 1;
            return 1;
        }
        else if(strstr(cmdBuf, "LED_OFF"))
        {
            *ledState = 0;
            return 1;
        }
    }
    return 0;
}

3.5 LED 控制模块

void LED_On(void)
{
    GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}

void LED_Off(void)
{
    GPIO_SetBits(GPIOC, GPIO_Pin_13);
}

此模块根据云端下发的指令实现LED灯的开关操作。


4 手机APP交互设计

在新版OneNET物联网云平台中,手机APP是数据展示与控制的主要接口。

  1. 数据展示界面

    • 实时显示当前温度和湿度数据。
    • 通过折线图、数字显示等形式直观展现历史与实时数据。
  2. 设备控制界面

    • APP内置控制按钮,可发送 LED_ONLED_OFF 指令。
    • 通过MQTT消息下发,实现与硬件端的实时交互。
  3. 报警提示

    • 当温湿度超过设定阈值时,OneNET平台可触发报警,并通过APP推送消息。
    • 用户可即时获取环境异常信息。

5 总结

本系统通过 STM32F103C8T6 单片机DHT11传感器 实现了温湿度数据的实时采集,并通过 ESP8266 WiFi 模块 将数据上传至 新版OneNET物联网云平台。借助 手机APP,用户可随时查看环境信息,并可远程控制本地LED设备。

系统的特点包括:

  1. 实时性强:温湿度数据以秒级频率上传至云端。
  2. 交互性好:用户不仅能查看数据,还能下发控制指令。
  3. 易扩展性:在现有系统基础上,可进一步扩展光照、土壤湿度、空气质量等传感器,实现更完善的环境监控。
  4. 应用前景广阔:适用于智能家居、农业大棚、实验室环境监测等多种场景。

该设计展示了基于 STM32 + OneNET云平台 + 手机APP 的完整物联网应用流程,为后续更多的智慧环境监控系统提供了借鉴与参考。

Logo

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

更多推荐