当前位置: 首页 > news >正文

【单片机毕业设计选题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();//初始化ESP8266ESP8266_Init();   HAL_Delay(100);OledFill(0x00);     //全屏熄灭  

ESP8266接入阿里云代码:

//硬件复位ESP8266HAL_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);//关闭板载LEDHAL_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);//上电不自动连接APprintf("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);//配置WIFIprintf("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 CONFIGprintf("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三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

相关文章:

  • ARM架构简明教程
  • 项目3:从0开始的RPC框架(扩展版)-3
  • STM32学习笔记(八)--DMA直接存储器存取详解
  • css display:grid布局,实现任意行、列合并后展示,自适应大小屏幕
  • VMR,支持30+种编程语言的SDK版本管理器,支持Windows/MacOS/Linux。
  • 手写实现call函数和应用场景
  • 刷题记录(240619)
  • JSON学习
  • .Net多线程Threading相关详解
  • 数据库大作业——音乐平台数据库管理系统
  • 爬虫的法律风险是什么?以及合法使用爬虫技术的建议。
  • 基于深度学习的光流预测
  • Elasticsearch搜索引擎(高级篇)
  • k8s快速上手实操
  • llama-factory微调chatglm3
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Android Volley源码解析
  • css的样式优先级
  • echarts花样作死的坑
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Js基础知识(一) - 变量
  • MD5加密原理解析及OC版原理实现
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 后端_MYSQL
  • 回顾 Swift 多平台移植进度 #2
  • 将回调地狱按在地上摩擦的Promise
  • 嵌入式文件系统
  • 算法之不定期更新(一)(2018-04-12)
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 正则表达式小结
  • 自制字幕遮挡器
  • 移动端高清、多屏适配方案
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​TypeScript都不会用,也敢说会前端?
  • ​数据链路层——流量控制可靠传输机制 ​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Panda3d 碰撞检测系统介绍
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • # 透过事物看本质的能力怎么培养?
  • (04)odoo视图操作
  • (11)MATLAB PCA+SVM 人脸识别
  • (20050108)又读《平凡的世界》
  • (27)4.8 习题课
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (多级缓存)多级缓存
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (实战篇)如何缓存数据
  • (一)Linux+Windows下安装ffmpeg
  • (一)VirtualBox安装增强功能
  • (一)基于IDEA的JAVA基础10
  • (一)认识微服务
  • (转)c++ std::pair 与 std::make