1. 项目概述
智慧厨房安全系统是一个基于STM32微控制器的物联网项目,旨在提高厨房安全性和用户体验。该系统通过各种传感器监测厨房环境,如温度、湿度、烟雾浓度等,并通过Wi-Fi将数据传输到云端进行分析和存储。用户可以通过手机APP实时查看厨房状态,接收警报通知,远程控制设备。
本项目涵盖了嵌入式开发、后端服务器、前端应用和云平台等全栈技术,是一个综合性的物联网解决方案。
2. 系统设计
2.1 硬件设计
硬件系统主要包括:
- STM32F4系列微控制器作为主控
- DHT22温湿度传感器
- MQ-2烟雾传感器
- MQ-5可燃气体传感器
- ESP8266 Wi-Fi模块
- 蜂鸣器和LED用于本地警报
- OLED显示屏用于显示实时数据
硬件系统架构图:
2.2 软件架构
软件系统包括:
- STM32固件:采用FreeRTOS实时操作系统
- MQTT Broker:用于设备和服务器间的通信
- 后端服务器:使用Python Flask框架
- 数据库:采用MySQL存储历史数据
- Web前端:基于Vue.js框架
- 移动APP:使用Flutter开发跨平台应用
- Home Assistant:集成用于智能家居控制
软件系统架构图:
3. 代码实现
3.1 STM32固件核心代码
以下是STM32固件的主要结构,使用FreeRTOS创建了两个任务:主任务和MQTT发布任务。
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#include "sensors.h"
#include "wifi.h"
#include "mqtt_client.h"
// 互斥信号量
SemaphoreHandle_t xDataMutex;
// 全局传感器数据结构体
SensorData_t gSensorData;
// 主任务函数
void vMainTask(void *pvParameters)
{
while(1)
{
// 获取互斥信号量
xSemaphoreTake(xDataMutex, portMAX_DELAY);
// 读取传感器数据
ReadSensorData(&gSensorData);
// 释放互斥信号量
xSemaphoreGive(xDataMutex);
// 检查阈值
CheckThresholds(&gSensorData);
// 任务延时
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
// MQTT发布任务函数
void vMQTTPublishTask(void *pvParameters)
{
while(1)
{
// 获取互斥信号量
xSemaphoreTake(xDataMutex, portMAX_DELAY);
// 发布传感器数据
MQTT_PublishSensorData(&gSensorData);
// 释放互斥信号量
xSemaphoreGive(xDataMutex);
// 任务延时
vTaskDelay(pdMS_TO_TICKS(5000));
}
}
// 主函数
int main(void)
{
// 硬件初始化
HardwareInit();
// 创建互斥信号量
xDataMutex = xSemaphoreCreateMutex();
// 创建主任务
xTaskCreate(vMainTask, "MainTask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL);
// 创建MQTT发布任务
xTaskCreate(vMQTTPublishTask,