1 基于STM32单片机的新版ONENET物联网云平台环境检测系统

本系统以STM32单片机作为核心控制器,利用DHT11温湿度传感器实时采集环境的温湿度信息,并通过WiFi模块接入网络,将采集的数据上传到新版OneNET物联网云平台。用户可通过手机或PC端访问OneNET云平台,实时查看温湿度的变化情况,实现远程监测与管理。本设计不仅体现了物联网技术与嵌入式系统的结合,也展现了在智慧家居、农业监控和环境检测等领域的应用价值。


2 系统功能介绍

本系统的功能主要包括以下几个方面:

  1. 温湿度采集功能:使用DHT11温湿度传感器采集当前环境的温度与湿度信息。
  2. 数据处理功能:STM32单片机对采集到的温湿度数据进行解析与处理,将其转换为可读的数值形式。
  3. 数据上传功能:通过ESP8266 WiFi模块连接至网络,并按照OneNET物联网云平台的通信协议,将温湿度信息周期性上传至云端。
  4. 远程监控功能:用户可通过OneNET的可视化界面或移动端应用,实时查看环境数据。
  5. 系统扩展性:本系统可扩展加入更多传感器,例如气压、光照或空气质量传感器,实现多维度的环境检测。

该系统结构简洁,功能实用,尤其适用于物联网入门实验和嵌入式课程设计。


3 系统电路设计

系统的硬件设计主要由STM32单片机最小系统电路、DHT11温湿度传感器电路、ESP8266 WiFi模块电路、电源电路等部分组成。

3.1 STM32单片机最小系统电路

STM32单片机是系统的核心控制单元,负责数据采集、处理和通信管理。

  • 芯片型号:STM32F103C8T6
  • 主要外设:USART串口用于与ESP8266模块通信;GPIO接口用于连接DHT11传感器。
  • 电源:采用3.3V稳压供电,保证低功耗稳定运行。
  • 时钟电路:外部晶振提供稳定的时钟源,保证系统运行精度。

3.2 DHT11温湿度传感器电路

DHT11是一款常用的数字温湿度传感器,具有价格低廉、响应速度快、接口简单的特点。

  • 输出接口:单总线数字信号,通过一个GPIO口与STM32相连。
  • 电源:3.3V供电,兼容STM32电平。
  • 测量范围:温度0~50℃,湿度20%~90%RH,精度满足一般监测需求。

3.3 ESP8266 WiFi模块电路

ESP8266模块用于实现WiFi联网功能,将采集的数据上传至OneNET物联网平台。

  • 通信方式:通过USART串口与STM32进行AT指令交互。
  • 供电电压:3.3V,电流需求较高,需保证电源稳定。
  • 功能:负责建立TCP连接并向云平台传输数据。

3.4 电源电路

系统采用USB 5V供电,经AMS1117稳压芯片转换为3.3V,供给STM32、DHT11和ESP8266模块使用。为防止电源干扰,电源部分增加了电解电容和陶瓷电容滤波。


4 程序设计

程序设计分为温湿度采集程序、数据解析程序、WiFi通信程序和OneNET协议数据上传程序几个部分。

4.1 DHT11温湿度采集程序设计

DHT11通过单总线协议与STM32通信,需严格按照时序进行读写。以下为DHT11数据采集的核心程序:

uint8_t DHT11_ReadByte(void) {
    uint8_t i, data = 0;
    for (i = 0; i < 8; i++) {
        while (!DHT11_DATA); // 等待高电平
        delay_us(40);        // 延时判断
        if (DHT11_DATA)
            data |= (1 << (7 - i));
        while (DHT11_DATA); // 等待低电平
    }
    return data;
}

uint8_t DHT11_ReadData(uint8_t *temp, uint8_t *humi) {
    uint8_t buf[5], i;
    DHT11_Start();
    if (DHT11_Check() == 0) {
        for (i = 0; i < 5; i++)
            buf[i] = DHT11_ReadByte();
        if ((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4]) {
            *humi = buf[0];
            *temp = buf[2];
            return 0;
        }
    }
    return 1;
}

4.2 数据解析与存储程序设计

在读取到DHT11的原始数据后,STM32需将其转换为整型或浮点数格式,方便后续上传与显示。

void Data_Process(uint8_t temp, uint8_t humi) {
    printf("Temp: %d C, Humi: %d %%\r\n", temp, humi);
}

4.3 ESP8266 WiFi通信程序设计

ESP8266模块通过AT指令与STM32进行串口通信,建立TCP连接后才能将数据上传至OneNET。

void ESP8266_SendCmd(char *cmd) {
    USART_SendString(cmd);
    delay_ms(500);
}

void ESP8266_Init(void) {
    ESP8266_SendCmd("AT+RST\r\n");  
    ESP8266_SendCmd("AT+CWMODE=1\r\n");  
    ESP8266_SendCmd("AT+CWJAP=\"SSID\",\"PASSWORD\"\r\n");  
    ESP8266_SendCmd("AT+CIPSTART=\"TCP\",\"183.230.40.39\",6002\r\n"); // OneNET服务器
}

4.4 OneNET协议数据上传程序设计

OneNET平台提供了简单的TCP透传接口,用户可将温湿度数据以JSON格式打包上传。

void OneNET_SendData(uint8_t temp, uint8_t humi) {
    char json[64];
    sprintf(json, "{\"Temperature\":%d,\"Humidity\":%d}", temp, humi);
    char cmd[80];
    sprintf(cmd, "AT+CIPSEND=%d\r\n", strlen(json));
    USART_SendString(cmd);
    delay_ms(200);
    USART_SendString(json);
}

4.5 主循环程序设计

主循环负责周期性采集温湿度数据并上传至OneNET云平台。

int main(void) {
    uint8_t temp, humi;
    System_Init();
    ESP8266_Init();
    while (1) {
        if (DHT11_ReadData(&temp, &humi) == 0) {
            Data_Process(temp, humi);
            OneNET_SendData(temp, humi);
        }
        delay_ms(5000); // 每5秒上传一次
    }
}

5 总结

本设计基于STM32单片机,通过DHT11采集温湿度信息,结合ESP8266 WiFi模块与OneNET物联网云平台实现远程数据上传与显示。系统在硬件设计上采用模块化结构,保证了电路的简洁与稳定;在软件设计上充分利用了STM32的串口与时序控制能力,实现了传感器采集、数据解析和云端通信的有机结合。

该系统不仅适合实验室教学和物联网课程设计,也能在智慧农业、仓储管理、家庭环境监控等实际应用中推广使用。未来可以在此基础上扩展空气质量监测、光照检测和智能控制功能,形成更完善的物联网环境监测解决方案。

Logo

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

更多推荐