基于STM32F10X系列单片机的环境检测站(0基础友好)
代码在最后,外设驱动函数在主页免费资源中,往期有关于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.3V2.各硬件引脚默认位置(可自行修改)
硬件名称引脚名称对应I/OLED-PA2DHT22温湿度传感器DATPA10MQ135气体质量传感器AOPB0SG90舵机180度PWMPA0TB6612FNG电机驱动PWM1PA1(另外两个电平引脚接PA&PA5)光敏传感器AOPB1蜂鸣器I/OPA8OLEDSCLPB8SDAPB9
三、主程序示例
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
| 上一篇: 蒜苔和韭苔有什么区别?记住这几点 |
下一篇: 陕西省地质环境监测总站(陕西省地 |
推荐分享
- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039
