标题:
基于STM32的多模态家居环境监控系统设计与实现程序
[打印本页]
作者:
YeHuAHua
时间:
2025-5-29 16:04
标题:
基于STM32的多模态家居环境监控系统设计与实现程序
本项目为本人设计项目以此来记录和分享,涉及使用的硬件有STM32F103系列,然后用到BH1750光照度传感器、LCD、超声波测距传感器、MQ2一氧化碳传感器、MQ7烟雾传感器、DHT11温湿度传感器、ESP8266-01sWiFi模块。实现了简单的家居环境的远程监测。远程监控我们使用的是OneNet云平台,检测到的数据通过OneJson的数据模式由ESP8266-01s模块以MQTT协议去发送给OneNet平台。以此实现远程监控。
BH1750:
SCL----PB6
SDA---PB7
ADDR---GND
LCD:
SCL----PB13
SDA---PB12
RES----PB11
DC-----PB15
CS-----PB14
BL-----PB10
超声波:
Trig----PA7
Echo----PA6
一氧化碳MQ2:
AO----PA0
烟雾MQ7:
AO----PA1
DHT11:
DA----PA4
ESP8266:
RX---PA2
TX---PA3
风扇:PA11
LED: PA9
执行——风扇和报警
温度大于30,湿度大于70,一氧化碳大于50,烟雾大于50
执行——灯
光照小于15
具体的执行机构还需要改正,楼主这里只是简单示范,可以根据项目开发的实际情况来拓展执行器。
Wifi-数据传输主要部分:
单片机源程序如下:
#include <string.h>
#include "sys.h"
#include "onenet.h"
#include "esp8266.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "LCD.h"
#include "dht11.h"
#include "adc_dma.h"
#include "mq2.h"
#include "mq7.h"
#include "timer.h"
#include "bh1750.h"
#include "gui.h"
#include "LCD.h"
#include "hc_sr501.h"
#include "hc_sr04.h"
#include "TFT_demo.h"
#include "pwm.h"
#include "key.h"
#include "beep.h"
uint32_t time = 0; // ms 计时变量
DHT11_Data_TypeDef DHT11_Data;
float value_light = 0.0; //光照度
float value_mq2 = 0.0; //烟雾浓度
float value_mq7 = 0.0; //一氧化碳浓度
float value_sr04 = 0.0; //超声波距离
u8 status_sr501 = 0; //人体红外检测到的值
int max_mq7 = 50; //一氧化碳浓度阈值
int max_mq2 = 50; //烟雾浓度阈值
int min_light = 15; //光照阈值
u8 LED_Light; //PWM灯光亮度
//硬件初始化
void Hardware_Init(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
delay_init(); //延时函数初始化
LCD_Init(); //液晶屏初始化
LCD_Clear(GRAY0);
Gui_DrawFont_GBK16(3,10,BLUE,GRAY0,(u8 *)"系统正在初始化");
Usart1_Init(115200); //串口1初始化为115200
Usart2_Init(115200); //串口2,驱动ESP8266用
LED_Init(); //LED初始化
SR501_Init(); //红外热释电
Hcsr04Init(); //超声波测距
ADCx_Init(); //ADC DMA初始化
DHT11_GPIO_Config(); //DHT11温湿度传感器初始化
BH1750_Init(); //光照
KEY_Init();
BEEP_Init();
PWM_TIM_Init(); //PWM频率=72000K/20*180=20Khz
TIM_SetCompare3(TIM3,0);
Gui_DrawFont_GBK16(4,30,RED,GRAY0,(u8*)"设备初始化完成");
Gui_DrawFont_GBK16(4,50,RED,GRAY0,(u8*)"正在连接网络。。。");
}
void Net_Init()
{
ESP8266_Init(); //初始化ESP8266
while(OneNet_DevLink()) //接入OneNET
delay_ms(500);
LED1 = 0; //入网成功
Gui_DrawFont_GBK16(4,70,RED,GRAY0,(u8*)"网络连接完成");
delay_ms(2000);
}
int main(void)
{
unsigned char *dataPtr = NULL;
unsigned short timeCount = 0; //发送间隔变量,初始化为0
char str[50]; // 扩大数组大小以避免缓冲区溢出
Hardware_Init(); //初始化外围硬件
Net_Init(); //网络初始化
GENERAL_TIM_Init(); //1MS系统定时
LCD_Clear(BLACK);
Gui_DrawFont_GBK16(25,4,BLACK,GRAY0,(u8 *)" 系统监控 ");
GUI_DrawRectangle(1, 1, 128-2, 128-2, WHITE); //边框
while(1)
{
delay_ms(10);
timeCount ++;
//接收数据
dataPtr = ESP8266_GetIPD(0);
if(dataPtr != NULL)
{
OneNet_RevPro(dataPtr);
}
if(timeCount >= 300) //发送间隔5s
{
/* 温湿度传感器获取数据*/
if( Read_DHT11(&DHT11_Data)==SUCCESS)/*调用Read_DHT11读取温湿度,若成功则输出该信息*/
{
sprintf(str, "温度:%d.%d ℃ ",DHT11_Data.temp_int,DHT11_Data.temp_deci);
Gui_DrawFont_GBK16(4,30,RED,BLACK,(u8 *)str);
sprintf(str, "湿度:%d.%d %c ",DHT11_Data.humi_int,DHT11_Data.humi_deci,'%');
Gui_DrawFont_GBK16(4,50,RED,BLACK,(u8 *)str);
}
else
{
printf("Read DHT11 ERROR!\r\n");//读取数据失败,串口打印:Read DHT11 ERROR.
Gui_DrawFont_GBK16(4,30,RED,BLACK,(u8 *)"ERROR!");
Gui_DrawFont_GBK16(4,50,RED,BLACK,(u8 *)"ERROR!");
}
value_sr04 = Hcsr04GetLength();/*超声波测距获取距离(CM)*/
status_sr501 = SR501_Check();/*人体检测*/
value_light = LIght_Intensity();/*光照度传感器获取数据*/
sprintf(str, "光照:%.1flx ",value_light);
Gui_DrawFont_GBK16(4,70,YELLOW,BLACK,(u8 *)str);
value_mq2 = MQ2_GetPPM();/*MQ2传感器获取烟雾数据*/
sprintf(str, "烟雾:%.1f ppm ",value_mq2);
Gui_DrawFont_GBK16(4,90,BLUE,BLACK,(u8 *)str);
value_mq7 = MQ7_GetPPM();/*MQ7传感器获取一氧化碳数据*/
sprintf(str, " CO :%.1f ppm ",value_mq7);
Gui_DrawFont_GBK16(4,110,GREEN,BLACK,(u8 *)str);
OneNet_SendData(); //发送数据
timeCount = 0;
ESP8266_Clear();
}
if((DHT11_Data.temp_int > 30) || (DHT11_Data.humi_int > 70) || ((int)value_mq2 >= max_mq2) || ((int)value_mq7 >= max_mq7))
{
BEEP = 0; //蜂鸣器报警
}
else
{
BEEP = 1; //蜂鸣器关闭
}
if(value_light < min_light)
{
LED2 = 0; //外接灯亮
}
else
{
LED2 = 1; //外接灯灭
}
}
}
复制代码
原理图: 无
仿真: 无
代码:
程序.7z
(253.71 KB, 下载次数: 0)
2025-5-31 05:25 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
55556hm
时间:
2025-6-10 12:02
东西很好
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1