ToB企服应用市场:ToB评测及商务社交产业平台
标题:
【单片机毕业设计选题24003】-基于STM32和阿里云的家庭安全监测体系
[打印本页]
作者:
金歌
时间:
2024-8-26 03:39
标题:
【单片机毕业设计选题24003】-基于STM32和阿里云的家庭安全监测体系
体系功能:
此设计采用STM32单片机收罗环境温湿度,烟雾浓度和一氧化碳浓度显示在OLED上,并将这些信息上报至阿里云平台。
1. 上电连接手机热点后自动连接阿里云,可通过阿里云平台收到体系上报的温湿度,烟雾
浓度,一氧化碳数据以及体系状态信息,并可以通过阿里云下发风扇开关命令。
2. 硬件体系包含四个机械按键,第一个按键为体系显示界面切换,第二个和第三个按键
为当前显示界面的设定阈值增减,第四个按键为手动开启/关闭风扇。
3. 体系有三个显示界面,第一个界面显示温湿度/继电器状态/体系状态,第二个界面
显示烟雾传感器设定阈值及状态,第三个界面显示一氧化碳传感器设定阈值及状态。体系功能框图:
资料获取方法
重要功能模块原理图
体系重要功能模块代码
初始化代码:
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
InitVar();
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
MX_ADC1_Init();
/* USER CODE BEGIN 2 */
//uart2打开接收中断
HAL_UART_Receive_IT(&huart2, (uint8_t*)&uart2RecBuff, 1);
InitOled();
InitOledDisp();
ResetDHT11();
//初始化ESP8266
ESP8266_Init();
HAL_Delay(100);
OledFill(0x00); //全屏熄灭
复制代码
ESP8266接入阿里云代码:
//硬件复位ESP8266
HAL_GPIO_WritePin(ESP8266RST_GPIO_Port, ESP8266RST_Pin, GPIO_PIN_RESET);
HAL_Delay(250);
HAL_GPIO_WritePin(ESP8266RST_GPIO_Port, ESP8266RST_Pin, GPIO_PIN_SET);
HAL_Delay(500);
//关闭板载LED
HAL_GPIO_WritePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin, GPIO_PIN_SET);
ESP8266_Clear();
//测试AT指令
printf("AT Testing\r\n");
while(ESP8266_SendCmd("AT\r\n", "OK", 200))
{
HAL_Delay(1000);
}
HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
HAL_Delay(500);
//设置为Station
printf("set CWMODE\r\n");
while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK", 200))
{
HAL_Delay(1000);
}
HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
HAL_Delay(500);
//上电不自动连接AP
printf("set CWAUTOCONN\r\n");
while(ESP8266_SendCmd("AT+CWAUTOCONN=0\r\n", "OK", 200))
{
HAL_Delay(1000);
}
HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
HAL_Delay(500);
//关闭回显
printf("set ATE0\r\n");
while(ESP8266_SendCmd("ATE0\r\n", "OK", 200))
{
HAL_Delay(1000);
}
HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
HAL_Delay(500);
//配置WIFI
printf("set Wifi\r\n");
while(ESP8266_SendCmd("AT+CWJAP=""WIFI_SSID"",""WIFI_PASSWD""\r\n", "OK", 500))
{
HAL_Delay(1000);
}
HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
HAL_Delay(500);
//MQTT USER CONFIG
printf("mqtt config\r\n");
while(ESP8266_SendCmd("AT+MQTTUSERCFG=0,1,""MQTT_CLIENT_ID"",""MQTT_USER_NAME"",""MQTT_PASSWD"",0,0,""\r\n", "OK", 500))
{
HAL_Delay(1000);
}
HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
HAL_Delay(1000);
//MQTT连接服务器
printf("mqtt broker\r\n");
while(ESP8266_SendCmd("AT+MQTTCONN=0,""BROKER_ASDDRESS"",1883,0\r\n", "OK", 500))
{
HAL_Delay(1000);
}
HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
HAL_Delay(500);
复制代码
读传感器数据:
//读传感器值,AD值
void ReadSensorVal(void)
{
//获取温度值
getTempVal = DHT11_Data.temp_int;
//获取湿度值
getHumiVal = DHT11_Data.humi_int;
//获取烟雾传感器值
getMQ2Val = ReadADCChannel(ADC_CHANNEL_4);
//获取一氧化碳传感器值
getMQ7Val = ReadADCChannel(ADC_CHANNEL_5);
//烟雾和一氧化碳超标后需打开风扇,自动开风扇
if((getMQ2Val>setMQ2Val)||(getMQ7Val>setMQ7Val))
{
relayState = true;
RELAY_ON();
}
else
{
relayState = false;
}
//四个传感器值中任意一个超标都报警
if((getMQ2Val>setMQ2Val)||(getMQ7Val>setMQ7Val)
||(getTempVal>setTempVal)||(getHumiVal>setHumiVal))
{
sysAlarm = true;
BUZZER_ON();
}
else
{
sysAlarm = false;
BUZZER_OFF();
}
}
复制代码
体系资料
此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,体系框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4