【单片机毕业设计选题24003】-基于STM32和阿里云的家庭安全监测体系 ...

金歌  金牌会员 | 2024-8-26 03:39:54 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 921|帖子 921|积分 2763

体系功能:

此设计采用STM32单片机收罗环境温湿度,烟雾浓度和一氧化碳浓度显示在OLED上,并将这些信息上报至阿里云平台。
1. 上电连接手机热点后自动连接阿里云,可通过阿里云平台收到体系上报的温湿度,烟雾
浓度,一氧化碳数据以及体系状态信息,并可以通过阿里云下发风扇开关命令。
2. 硬件体系包含四个机械按键,第一个按键为体系显示界面切换,第二个和第三个按键
为当前显示界面的设定阈值增减,第四个按键为手动开启/关闭风扇。
3. 体系有三个显示界面,第一个界面显示温湿度/继电器状态/体系状态,第二个界面
显示烟雾传感器设定阈值及状态,第三个界面显示一氧化碳传感器设定阈值及状态。体系功能框图:
资料获取方法



重要功能模块原理图




体系重要功能模块代码

初始化代码:
  1.   /* USER CODE BEGIN 1 */
  2.   /* USER CODE END 1 */
  3.   /* MCU Configuration--------------------------------------------------------*/
  4.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  5.   HAL_Init();
  6.   /* USER CODE BEGIN Init */
  7.     InitVar();
  8.   /* USER CODE END Init */
  9.   /* Configure the system clock */
  10.   SystemClock_Config();
  11.   /* USER CODE BEGIN SysInit */
  12.   /* USER CODE END SysInit */
  13.   /* Initialize all configured peripherals */
  14.   MX_GPIO_Init();
  15.   MX_USART1_UART_Init();
  16.   MX_USART2_UART_Init();
  17.   MX_ADC1_Init();
  18.   /* USER CODE BEGIN 2 */
  19. //uart2打开接收中断
  20.     HAL_UART_Receive_IT(&huart2, (uint8_t*)&uart2RecBuff, 1);
  21.    
  22.     InitOled();
  23.     InitOledDisp();
  24.     ResetDHT11();
  25. //初始化ESP8266
  26.     ESP8266_Init();   
  27.     HAL_Delay(100);
  28.     OledFill(0x00);     //全屏熄灭  
复制代码
ESP8266接入阿里云代码:
  1. //硬件复位ESP8266
  2.     HAL_GPIO_WritePin(ESP8266RST_GPIO_Port, ESP8266RST_Pin, GPIO_PIN_RESET);
  3.          HAL_Delay(250);
  4.     HAL_GPIO_WritePin(ESP8266RST_GPIO_Port, ESP8266RST_Pin, GPIO_PIN_SET);
  5.          HAL_Delay(500);
  6. //关闭板载LED
  7.     HAL_GPIO_WritePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin, GPIO_PIN_SET);
  8.          ESP8266_Clear();
  9. //测试AT指令
  10.          printf("AT Testing\r\n");
  11.          while(ESP8266_SendCmd("AT\r\n", "OK", 200))
  12.          {
  13.                   HAL_Delay(1000);
  14.          }
  15.          HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
  16.          HAL_Delay(500);
  17. //设置为Station   
  18.          printf("set CWMODE\r\n");
  19.          while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK", 200))
  20.          {
  21.                   HAL_Delay(1000);
  22.          }
  23.          HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
  24.          HAL_Delay(500);
  25. //上电不自动连接AP
  26.          printf("set CWAUTOCONN\r\n");
  27.          while(ESP8266_SendCmd("AT+CWAUTOCONN=0\r\n", "OK", 200))
  28.          {
  29.                   HAL_Delay(1000);
  30.          }
  31.          HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
  32.          HAL_Delay(500);
  33. //关闭回显
  34.     printf("set ATE0\r\n");
  35.     while(ESP8266_SendCmd("ATE0\r\n", "OK", 200))
  36.     {
  37.         HAL_Delay(1000);
  38.     }
  39.     HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);  
  40.     HAL_Delay(500);
  41. //配置WIFI
  42.          printf("set Wifi\r\n");
  43.          while(ESP8266_SendCmd("AT+CWJAP=""WIFI_SSID"",""WIFI_PASSWD""\r\n", "OK", 500))
  44.          {
  45.                   HAL_Delay(1000);
  46.     }      
  47.          HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
  48.          HAL_Delay(500);
  49. //MQTT USER CONFIG
  50.     printf("mqtt config\r\n");
  51.     while(ESP8266_SendCmd("AT+MQTTUSERCFG=0,1,""MQTT_CLIENT_ID"",""MQTT_USER_NAME"",""MQTT_PASSWD"",0,0,""\r\n", "OK", 500))
  52.     {
  53.         HAL_Delay(1000);
  54.     }  
  55.     HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
  56.     HAL_Delay(1000);
  57. //MQTT连接服务器
  58.     printf("mqtt broker\r\n");
  59.     while(ESP8266_SendCmd("AT+MQTTCONN=0,""BROKER_ASDDRESS"",1883,0\r\n", "OK", 500))
  60.     {
  61.         HAL_Delay(1000);
  62.     }  
  63.     HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);
  64. HAL_Delay(500);
复制代码
读传感器数据:
  1. //读传感器值,AD值
  2. void ReadSensorVal(void)
  3. {
  4. //获取温度值
  5.     getTempVal = DHT11_Data.temp_int;
  6. //获取湿度值
  7.     getHumiVal = DHT11_Data.humi_int;
  8. //获取烟雾传感器值
  9.     getMQ2Val = ReadADCChannel(ADC_CHANNEL_4);
  10. //获取一氧化碳传感器值
  11.     getMQ7Val = ReadADCChannel(ADC_CHANNEL_5);
  12. //烟雾和一氧化碳超标后需打开风扇,自动开风扇
  13.     if((getMQ2Val>setMQ2Val)||(getMQ7Val>setMQ7Val))
  14.     {
  15.         relayState = true;
  16.         RELAY_ON();
  17.     }
  18.     else
  19.     {
  20.         relayState = false;
  21.     }
  22. //四个传感器值中任意一个超标都报警
  23.     if((getMQ2Val>setMQ2Val)||(getMQ7Val>setMQ7Val)
  24.         ||(getTempVal>setTempVal)||(getHumiVal>setHumiVal))
  25.     {
  26.         sysAlarm = true;
  27.         BUZZER_ON();
  28.     }
  29.     else
  30.     {
  31.         sysAlarm = false;
  32.         BUZZER_OFF();
  33.     }
  34. }
复制代码
体系资料

此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,体系框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表