STM32项目分享:基于stm32的室内环境监测装置设计与实现
“我们不做一锤子买卖,只做技术成长的长期伙伴!”
目录
一、视频展示
二、项目简介
三、原理图设计
四、PCB硬件设计
五、程序设计代码
六、资料分享
一、视频展示
基于stm32的室内环境监测装置设计与实现 -视频分享
二、项目简介
主控:STM32F103C8T6
显示:OLED显示屏
传感器:
DHT11温湿度传感器
mq2烟雾传感器
光照传感器
esp8266wifi透传模块
led灯
加湿继电器+除湿继电器+加温继电器+降温继电器
声光报警:蜂鸣器+led灯
功能:
1、屏幕实时显示当前温湿度,烟雾浓度,光照数据。
2、可按键设置阈值,包括最高温度阈值,最低温度阈值,最高湿度阈值,最低湿度阈值,最大烟雾浓度,最低光照。
3、当温度高于设定的阈值时,模拟的空调设备会自动打开进行降温,一旦温度低于阈值便关闭空调停止降温;湿度低于设定阈值时,外接的加湿器设备会开启进行加湿,高于阈值时则关闭加湿器停止加湿;烟雾浓度高于设定阈值时,蜂鸣器报警设备会打开发出警报,低于阈值时便关闭蜂鸣器报警设备停止报警;光照强度低于设定阈值时,补光设备会打开进行补光,高于阈值时则关闭灯光停止补光。
4、手机连接单片机可接受单片机数据,并可控制单片机。
三、原理图设计
四、PCB硬件设计
五、程序设计
#include "stm32f10x.h" // Device header
#include "delay.h"
#include "lcd.h"
#include "dht11.h"
#include "IOput.h"
#include "usart.h"
#include "adc.h"extern u8 res;u8 gz,sw;
u8 show_flag,show1_flag,max_wd=40,dec_wd=10,dec_gz=30,max_yw=70,max_sd=70,dec_sd=20,count=0;u8 smok,light;extern u8 res;
void wifi(){if(res=='a'){res=0;set_flag=1;}else if(res=='b'){res=0;add_flag=1;}else if(res=='c'){res=0;dec_flag=1;}}int main (void)
{delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);DHT11_Init();OLED_Init();delay_ms(1);OLED_Clear();Adc_Init();output_init();input_init();Usart1_Init(9600);delay_ms(50);while(1){wifi();count++;DHT11_Read_Data(&temp,&humi);light=100-Get_Adc_Average(1,10)*100/4096; smok=Get_Adc_Average(0,10)*100/4096; key_scan(1,0,0);if(set_flag==1){OLED_Clear();set_flag=0;show_flag++;if(show_flag>=7){show_flag=0;}}if(show_flag==0){OLED_ShowCH(0,0," ڻ װ ");OLED_ShowCH(0,2," ¶ :");OLED_ShowNum(40,2,temp,2,16);OLED_ShowCH(64,2,"ʪ :");OLED_ShowNum(104,2,humi,2,16);OLED_ShowCH(0,4," :");OLED_ShowNum(40,4,light,2,16);OLED_ShowCH(64,4," :");OLED_ShowNum(104,4,smok,2,16);if(temp>=max_wd || humi<=dec_sd || temp<=dec_wd || humi>=max_sd){OLED_ShowCH(0,6," ¶Ȼ ʪ 쳣 ");}else{OLED_ShowCH(0,6," ");}}if(show_flag==1){OLED_ShowCH(0,0," ֵ ");OLED_ShowCH(0,2," ֵ:");OLED_ShowNum(60,4,dec_gz,2,16);if(add_flag==1){res=0;add_flag=0;dec_gz++;}if(dec_flag==1){res=0;dec_flag=0;dec_gz--;}if(dec_gz>=100 || dec_gz<=0){dec_gz=0;}}if(show_flag==2){OLED_ShowCH(0,0," ¶ ֵ ");OLED_ShowCH(0,2," ֵ:");OLED_ShowNum(60,4,max_wd,2,16);if(add_flag==1){res=0;add_flag=0;max_wd++;}if(dec_flag==1){res=0;dec_flag=0;max_wd--;}if(max_wd>=100 || max_wd<=0){max_wd=0;}if(max_wd<=dec_wd)max_wd=dec_wd+1;}if(show_flag==3){OLED_ShowCH(0,0," ¶ ֵ ");OLED_ShowCH(0,2," ֵ:");OLED_ShowNum(60,4,dec_wd,2,16);if(add_flag==1){res=0;add_flag=0;dec_wd++;}if(dec_flag==1){res=0;dec_flag=0;dec_wd--;}if(dec_wd>=100 || dec_wd<=0){dec_wd=0;}if(dec_wd>=max_wd)dec_wd=max_wd-1;}if(show_flag==4){OLED_ShowCH(0,0," ʪ ֵ ");OLED_ShowCH(0,2," ֵ:");OLED_ShowNum(60,4,dec_sd,2,16);if(add_flag==1){res=0;add_flag=0;dec_sd++;}if(dec_flag==1){res=0;dec_flag=0;dec_sd--;}if(dec_sd>=100 || dec_sd<=0){dec_sd=0;}if(dec_sd>=max_sd)dec_sd=max_sd-1;}if(show_flag==5){OLED_ShowCH(0,0," ʪ ֵ ");OLED_ShowCH(0,2," ֵ:");OLED_ShowNum(60,4,max_sd,2,16);if(add_flag==1){res=0;add_flag=0;max_sd++;}if(dec_flag==1){res=0;dec_flag=0;max_sd--;}if(max_sd>=100 || max_sd<=0){max_sd=0;}if(max_sd<=dec_sd)max_sd=dec_sd+1;}if(show_flag==6){OLED_ShowCH(0,0," ֵ ");OLED_ShowCH(0,2," ֵ:");OLED_ShowNum(60,4,max_yw,2,16);if(add_flag==1){res=0;add_flag=0;max_yw++;}if(dec_flag==1){res=0;dec_flag=0;max_yw--;}if(max_yw>=100 || max_yw<=0){max_yw=0;}}if(temp>=max_wd) // {jdq1=0;}else{jdq1=1;}if(humi<=dec_sd)// ʪ{jdq2=0;}else{jdq2=1;}if(temp<=dec_wd)// {jdq3=0;}else{jdq3=1;}if(humi>=max_sd)// ʪ{jdq4=0;}else{jdq4=1;}if(smok>=max_yw)BEEP=0;elseBEEP=1;if(light<=dec_gz)led=1;elseled=0;if(count>=50){count=0;UsartPrintf(USART1,"temp:%d\r\n",temp);UsartPrintf(USART1,"humi:%d\r\n",humi);UsartPrintf(USART1,"light:%d\r\n",light);UsartPrintf(USART1,"smok:%d\r\n",smok);UsartPrintf(USART1,"\r\n");}}
}
六、资料分享
点击即可查看当前资料分享。