目录
一、前言
项目成品图片:
哔哩哔哩视频链接:
STM32智能厨房安全检测系统
(资料分享见文末)
二、项目简介
1.功能详解
STM32智能厨房安全检测系统
功能如下:
- 单片机STM32F103C8T6核心板
- OLED显示当前烟雾浓度,当前环境温湿度
- 火焰传感器检测当前厨房是否发生火灾
- 按键可用于调节报警阈值
- 火灾、燃气泄漏、温度过高触发蜂鸣器报警
- 报警下触发执行动作:浇水灭火、打开窗、排风等
- 手机APP检测环境信息以及报警显示
- 手机APP可远程设置阈值大小
2.主要器件
- STM32F103C8T6最小系统板
- DS18B20温度传感器
- OLED 屏幕
- 火焰传感器
- MQ-7一氧化碳传感器
- ESP8266-01S模块(WIFI)
- 继电器
- 风扇模块
- 水泵模块
- 舵机
三、原理图设计
四、PCB硬件设计
PCB图
五、程序设计
int main(void)
{
delay_init(); //延时函数初始化
NVIC_Configuration(); //中断优先级配置
I2C_Configuration(); //IIC初始化
KEY_GPIO_Init(); //按键引脚初始化
delay_ms(200);
OLED_Init(); //OLED液晶初始化
OLED_CLS(); //清屏
OLED_ShowStr(0, 2, " loading... ", 2,0);//显示加载中
ESP8266_Init(); //ESP8266初始化
Adc_Init(); //adc初始化
MOTOR_GPIO_Init(); //舵机初始化
DS18B20_GPIO_Init(); //温度初始化
DS18B20_Init(); //初始化显示
delay_ms(1000);
delay_ms(1000);
OLED_CLS(); //清屏
displayInitInterface(); //显示初始界面
TIM3_Init(99,71); //定时器初始化,定时100us
Get_Temperature(); //获取温度
delay_ms(100);
Get_Temperature(); //获取温度
delay_ms(1000);
//Tout = ((arr+1)*(psc+1))/Tclk ;
//Tclk:定时器输入频率(单位MHZ)
//Tout:定时器溢出时间(单位us)
while(1)
{
keyscan(); //按键扫描
if(setn == 0)
{
if(shuaxin == 1) //大概300ms刷新一次数据
{
Get_Temperature(); //获取温度
Get_Smoke(); //获取烟雾
shuaxin = 0;
}
if(FLAME == 0) //检测到火焰
{
delay_ms(10);
if(FLAME == 0)
{
if(flameFlag == 0)
{
OLED_DrawBMP(88,4,120,8,(unsigned char *)BMP); //显示火焰图片
}
flameFlag = 1;
RELAY = 1; //检测到有火,开启水泵
}
}
else
{
if(flameFlag == 1)
{
OLED_ShowStr(88, 4, " ", 2,0);
OLED_ShowStr(88, 6, " ", 2,0);
}
flameFlag = 0;
RELAY = 0; //关闭水泵
}
if(temperature>=setTempValue || smoke>=setSmokeValue || flameFlag)BEEP=1;else BEEP=0; //检测到温度烟雾超标火焰蜂鸣器报警
if(temperature>=setTempValue || smoke>=setSmokeValue)FAN=1;else FAN=0; //烟雾温度超标都开启风扇
if(smoke>=setSmokeValue || flameFlag)PWM=15;else PWM=5; //烟雾超标或者是检测到火焰,舵机动作,模拟关闭阀门
}
UsartSendReceiveData();
delay_ms(10);
}
}
六、实验效果
七、资料内容