首页 分享 基于STM32F10X系列单片机的环境检测站(0基础友好)

基于STM32F10X系列单片机的环境检测站(0基础友好)

来源:花匠小妙招 时间:2026-02-04 11:40

代码在最后,外设驱动函数在主页免费资源中,往期有关于DHT22传感器的讲解

在学习STM32的过程中,既要扎实掌握基础知识,也要通过实际项目不断巩固和深化理解。本期我们将通过实现桌面环境监测站项目,逐步掌握GPIO输出、GPIO输入、中断、定时器、输出比较以及ADC转换等关键模块的应用,最终实现环境温湿度与光照强度的实时监测功能。

一、功能简述

系统可实时监测多项环境参数,包括温度、湿度、空气质量(涵盖氨气、苯系物、酒精蒸气、一氧化碳、二氧化硫及其他硫化物)以及环境光照强度。当检测到空气质量下降时,系统会自动触发以下联动机制:通过舵机模拟开窗动作、启动蜂鸣器报警装置并开启换气风扇。针对光照变化,系统会通过单片机控制的LED灯自动调节亮度,例如在光线变暗时增强照明。目前温湿度调控功能尚未实现,但可通过加装继电器模块并修改程序代码来扩展功能,实现空气加湿器和散热风扇的智能响应。

所需硬件 LED1DHT22温湿度传感器1MQ135气体质量传感器1SG90舵机180度1TB6612FNG电机驱动1光敏传感器1蜂鸣器1

二、引脚与供电说明

1.各硬件所需驱动电压

涉及硬件的电压 LED5VDHT22温湿度传感器3.3VMQ135气体质量传感器5VSG90舵机180度5VTB6612FNG电机驱动5V光敏传感器3.3V蜂鸣器3.3V

2.各硬件引脚默认位置(可自行修改)

硬件名称引脚名称对应I/OLED-PA2DHT22温湿度传感器DATPA10MQ135气体质量传感器AOPB0SG90舵机180度PWMPA0TB6612FNG电机驱动PWM1PA1(另外两个电平引脚接PA&PA5)光敏传感器AOPB1蜂鸣器I/OPA8OLEDSCLPB8SDA

PB9

三、主程序示例

main.c

#include "ConFig.h"

int main(void)

{

EMS_Init();

OLED_ShowString(1,1,"Light:");

OLED_ShowString(3,1,"Temp:000.0C");

OLED_ShowString(4,1,"Humi:000.0%");

OLED_ShowString(2,1,"AQI:");

while (1)

{

EMS_Update();

EMS_Response();

EMS_Display();

Delay_ms(2000);

}

}

cpp

运行

EMS.c

#include "ConFig.h"

#include "EMS.h"

float AQ;

uint16_t Light;

float Humidity = 0;

float Temperature = 0;

void EMS_Init(void)

{

AD_Init();

Buzzer_Init();

LightSensor_Init();

OLED_Init();

MQ135_Init();

DHT22_Init();

Servo_Init();

Motor_Init();

LEDOC_Init();

}

void EMS_Update(void)

{

AQ = MQ135_GetPPM();

Light = LightSensor_GetData();

DHT22_ReadDate(&Humidity,&Temperature);

}

void EMS_Response(void)

{

switch(AQ_Degree())

{

case 1:

Motor_Setspeed(-50);

Buzzer_ON();

Delay_ms(200);

Buzzer_OFF();

Delay_ms(100);

Buzzer_ON();

Delay_ms(200);

Buzzer_OFF();

Delay_ms(100);

break;

case 2:

Motor_Setspeed(-25);

Buzzer_ON();

Delay_ms(200);

Buzzer_OFF();

Delay_ms(100);

Buzzer_ON();

Delay_ms(200);

Buzzer_OFF();

Delay_ms(100);

break;

case 3:

case 4:

case 5:

Motor_Setspeed(0);

Servo_Angle(0);

break;

}

LEDOC_Light(((float)Light/3500*100)-50);

}

void EMS_Display(void)

{

switch(AQ_Degree())

{

case 1:

OLED_ShowString(2,5,"VeryBad ");

break;

case 2:

OLED_ShowString(2,5,"Bad ");

break;

case 3:

OLED_ShowString(2,5,"Medium ");

break;

case 4:

OLED_ShowString(2,5,"Good ");

break;

case 5:

OLED_ShowString(2,5,"VeryGood");

break;

}

switch(Light_Degree())

{

case 1:

OLED_ShowString(1,7,"VeryDark ");

break;

case 2:

OLED_ShowString(1,7,"Dark ");

break;

case 3:

OLED_ShowString(1,7,"Medium ");

break;

case 4:

OLED_ShowString(1,7,"Bright ");

break;

case 5:

OLED_ShowString(1,7,"VeryBright");

break;

}

OLED_ShowNum(3,6,Temperature,3);

OLED_ShowNum(3,10,(uint16_t)(Temperature*100)%100,2);

OLED_ShowNum(4,6,Humidity,3);

OLED_ShowNum(4,10,(uint16_t)(Humidity*100)%100,2);

}

uint8_t AQ_Degree(void)

{

if(AQ > 1000) return 1;

if(AQ <= 1000 && AQ > 100) return 2;

if(AQ <= 100 && AQ > 50) return 3;

if(AQ <= 50 && AQ > 20) return 4;

if(AQ <= 20) return 5;

}

uint8_t Light_Degree(void)

{

if(Light > 3500) return 1;

if(Light <= 3500 && Light > 1500) return 2;

if(Light <= 1500 && Light > 700) return 3;

if(Light <= 700 && Light > 200) return 4;

if(Light <= 200) return 5;

}

cpp

运行

EMS.h

#ifndef __EMS_H

#define __EMS_H

void EMS_Init(void);

void EMS_Response(void);

void EMS_Update(void);

void EMS_Display(void);

uint8_t AQ_Degree(void);

uint8_t Light_Degree(void);

#endif

cpp

运行

ConFig.h

#ifndef __CONFIG_H

#define __CONFIG_H

#include "stm32f10x.h"

#include "MQ135.h"

#include "LightSensor.h"

#include "DHT22.h"

#include "Buzzer.h"

#include "Motor.h"

#include "Servo.h"

#include "PWM.h"

#include "LED_OC.h"

#include "OLED.h"

#include "AD.h"

#include "Delay.h"

#include "EMS.h"

#endif

cpp

运行

四、代码现象展示

现象演示

本项目其他支持及驱动函数在主页有免费资源自取哦点击跳转

相关知识

基于STM32F10X系列单片机的环境检测站(0基础友好)
基于单片机的仓库环境无线监测系统(论文+源码)
自来水水质检测 花都水质检测站 水质检测 视频
基于STM32单片机的环境监测系统设计与实现
基于STM32单片机的智能加湿器设计.docx
基于51单片机的光照强度检测(光敏电阻)
【课时提高练】跨学科实践活动1 微型空气质量“检测站”的组装与使用 (含答案)2024
基于单片机的便携式土壤温湿度测量仪的设计
基于单片机的自动喷淋系统设计【毕业设计】
基于51单片机的自动浇花灌溉系统设计

网址: 基于STM32F10X系列单片机的环境检测站(0基础友好) https://www.huajiangbk.com/newsview2555895.html

所属分类:花卉
上一篇: 蒜苔和韭苔有什么区别?记住这几点
下一篇: 陕西省地质环境监测总站(陕西省地

推荐分享