1 系统功能介绍

本设计是 基于STM32单片机的OneNet物联网环境检测系统,该系统旨在实现温湿度、光照强度和烟雾浓度等环境数据的实时采集,并通过物联网技术将这些数据上传至OneNet云平台。用户可以通过网页或手机APP实时查看环境数据。系统由STM32单片机作为核心控制单元,结合ESP8266 WiFi模块进行数据传输,并通过各类传感器实时监测环境变化。

1.1 数据采集

系统通过传感器实时采集以下环境参数:

  • 温湿度:使用温湿度传感器(如DHT11或DHT22)实时监测环境中的温度和湿度。
  • 光照强度:通过光照传感器(如BH1750)采集环境光照强度数据。
  • 烟雾浓度:使用烟雾传感器(如MQ-2)监测空气中的烟雾浓度。

1.2 数据上传与显示

采集到的数据通过STM32单片机处理后,通过ESP8266 WiFi模块上传至OneNet物联网云平台,云平台接收到数据后,用户可通过网页或手机APP查看实时数据。

1.3 用户交互

用户可以通过网页或手机APP查看环境参数的实时变化。通过物联网的便捷性,用户无需直接与硬件交互即可获取所需信息。


2 系统电路设计

系统电路设计由多个模块组成,每个模块负责特定的功能。以下是各个模块的详细电路设计。

2.1 STM32单片机电路

STM32单片机是系统的核心控制单元,负责数据采集、处理和传输。STM32具有多个I/O接口,可以连接各类传感器和通信模块。系统中使用的是STM32F103C8T6,以下是STM32在本系统中的主要功能:

  • GPIO接口:用于连接温湿度传感器(DHT11/DHT22)、光照传感器(BH1750)和烟雾传感器(MQ-2)。
  • USART接口:与ESP8266 WiFi模块通信,通过串口协议将处理后的数据发送至WiFi模块。
  • ADC接口:用于接收光照传感器和烟雾传感器的模拟信号,将其转换为数字信号供STM32处理。

STM32的低功耗特性和高性能处理能力,使得它非常适合用作物联网传感器节点的控制器。

2.2 温湿度传感器电路

本系统使用DHT11或DHT22温湿度传感器进行环境温湿度的采集。该传感器通过单线制协议与STM32单片机连接,主要包括以下部分:

  • 数据接口:DHT11/DHT22通过一个单独的数字IO引脚与STM32进行数据通信。
  • 电源电路:温湿度传感器工作在3.3V到5V的电压范围内。使用稳压电路为传感器提供稳定的工作电压。
  • 数据采集:通过控制数据线的电平,STM32单片机可以采集到温湿度数据,并进行相应的处理。

温湿度传感器是环境监测系统中非常重要的一部分,它帮助系统实时监测环境中的温湿度变化。

2.3 光照传感器电路

系统使用BH1750光照传感器来测量环境中的光照强度。光照传感器的工作原理和电路设计如下:

  • I2C接口:BH1750光照传感器通过I2C接口与STM32进行通信。STM32的I2C接口接收传感器的数字信号。
  • 电源电路:光照传感器的工作电压为3.3V,通过STM32的电源模块进行供电。
  • 数据采集:STM32通过I2C读取光照传感器的数字信号,并将数据传输至OneNet云平台。

光照强度的实时监测对于智能家居、农业等应用至关重要,可以根据采集到的光照强度数据调节其他系统参数。

2.4 烟雾传感器电路

MQ-2烟雾传感器用于检测空气中的烟雾浓度。该传感器通过模拟输出信号与STM32单片机连接,电路设计如下:

  • 模拟输出:MQ-2传感器的模拟输出通过STM32的ADC接口读取,将烟雾浓度数据转换为数字信号。
  • 电源电路:MQ-2传感器工作在5V电压下,因此需要使用稳压模块将电压稳定输出。
  • 数据采集:通过读取传感器的模拟信号,STM32将数据转化为浓度值,并进行处理和上传。

烟雾浓度监测功能是系统中非常关键的一部分,能够及时检测空气质量并上传至云平台。

2.5 ESP8266 WiFi模块电路

ESP8266 WiFi模块用于实现物联网通信,负责将系统采集到的环境数据实时上传至OneNet云平台。模块的电路设计如下:

  • 通信接口:ESP8266通过UART(串口)与STM32单片机进行数据通信。STM32通过USART接口将数据发送至WiFi模块。
  • 电源电路:ESP8266模块工作在3.3V电压下,系统需要一个稳定的3.3V电源供电。
  • 数据传输:ESP8266通过WiFi连接云平台,并使用HTTP协议上传数据。

ESP8266模块使得系统具备了无线通信能力,能够通过互联网将环境数据上传至OneNet物联网云平台,实现远程监控。


3 程序设计

本系统的程序设计使用了STM32 HAL库,程序主要包括数据采集、数据处理、蓝牙通信、数据上传等模块。以下是各个模块的详细设计说明。

3.1 主程序

主程序负责初始化所有硬件模块,并实现数据采集、处理和传输。它会循环运行,定时获取各个传感器的数据,并将数据发送到OneNet云平台。

#include "stm32f1xx_hal.h"
#include "dht11.h"
#include "bh1750.h"
#include "mq2.h"
#include "esp8266.h"

// 定义传感器接口和数据缓存
uint8_t temperature, humidity;
uint16_t light_intensity, smoke_concentration;

void SystemClock_Config(void);
void MX_GPIO_Init(void);
void MX_USART1_UART_Init(void);
void Sensor_Init(void);
void Data_Collect(void);
void Data_Upload(void);

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  Sensor_Init();

  while (1)
  {
    Data_Collect();      // 采集数据
    Data_Upload();       // 上传数据到OneNet
    HAL_Delay(5000);     // 每5秒钟采集一次数据
  }
}

3.2 数据采集程序

数据采集程序负责从各个传感器读取数据,并存储到相应的变量中。每个传感器的读取操作如下:

温湿度传感器

void Read_DHT11(void)
{
  // 使用DHT11传感器获取温湿度数据
  temperature = DHT11_ReadTemperature();
  humidity = DHT11_ReadHumidity();
}

光照传感器

void Read_BH1750(void)
{
  // 使用I2C读取BH1750光照强度数据
  light_intensity = BH1750_ReadLightIntensity();
}

烟雾传感器

void Read_MQ2(void)
{
  // 使用ADC读取MQ-2烟雾传感器数据
  smoke_concentration = MQ2_ReadConcentration();
}

3.3 数据上传程序

数据上传程序负责将采集到的数据发送到OneNet云平台。它通过ESP8266模块与云平台建立WiFi连接,并使用HTTP协议上传数据。

void Data_Upload(void)
{
  // 格式化数据
  char data[100];
  sprintf(data, "Temperature=%d, Humidity=%d, Light=%d, Smoke=%d", temperature, humidity, light_intensity, smoke_concentration);

  // 连接到OneNet并上传数据
  ESP8266_ConnectWiFi("SSID", "Password");
  ESP8266_SendData("http://api.onenet.com/data", data);
}

3.4 传感器初始化程序

在系统启动时,需要对各个传感器进行初始化,确保它们可以正常工作。

void Sensor_Init(void)
{
  DHT11_Init();     // 初始化温湿度传感器
 
Logo

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

更多推荐