【单片机毕业设计选题24074】-基于阿里云的空气质量监控系统

系统功能:

手机开启2.4G WiFi热点后再给系统上电

系统操作说明:

上电后OLED显示 “欢迎使用空气监控系统请稍后”,两秒后显示Connecting...表示

正在连接阿里云,正常连接阿里云后显示第一页面,如长时间显示Connecting...请

检查WiFi网络是否正确。

第一页面第一行显示系统状态信息,第二行显示温湿度值,第三行显示二氧化碳和PM2.5

值,第四行显示系统模式(手动或自动)。

短按B4按键可切换到第二页面

短按B7按键可切换系统模式

第二页面第一行显示二氧化碳设定,第二行显示获取到的二氧化碳值,第三行显示设定的

二氧化碳值,第四行显示风扇状态。

短按B4按键可切换到第三页面

短按B5按键可增加二氧化碳设定阈值

短按B6按键可减小二氧化碳设定阈值

手动模式下短按B7按键可开关风扇

第三页面第一行显示PM2.5设定,第二行显示获取到的PM2.5值,第三行显示设定的PM2.5值,

第四行显示风扇状态。

短按B4按键可切换到第一页面

短按B5按键可增加PM2.5设定阈值

短按B6按键可减小PM2.5设定阈值

手动模式下短按B7按键可开关风扇

系统连接阿里云后,可在阿里云平台查看到系统上报的温湿度值,二氧化碳值,PM2.5值和

风扇开关状态。

主要功能模块原理图:

电源时钟烧录接口:

单片机和按键输入电路:

传感器采集电路:

继电器控制电路:

资料获取地址

系统主要功能模块代码

初始化代码:

  /* 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_USART3_UART_Init();/* USER CODE BEGIN 2 *///在HAL库初始化串口1后调用HAL_Delay(100);SetUart1RxToInput();HAL_Delay(50);//uart1打开接收中断HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1);//uart2打开接收中断HAL_UART_Receive_IT(&huart2, (uint8_t*)&uart2RecBuff, 1);//uart3打开接收中断HAL_UART_Receive_IT(&huart3, (uint8_t*)&uart3RecBuff, 1);  InitOled();InitOledDisp();ResetDHT11();//初始化ESP8266ESP8266_Init(); /* USER CODE END 2 */

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);

系统控制代码:

//系统信息更新void SystemControl(void){static uint8_t updateCnt = 0;updateCnt++;   if(updateCnt>=SYSTEM_UPDATE_INTER){updateCnt = 0;if(DHT11ReadData()==0)  //DHT11温湿度读取OK{;}Aliyun_SendData();}ReadSensorVal();}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/381312.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识C++|模板初阶

🍬 mooridy-CSDN博客 🧁C专栏(更新中!) 目录 🍉1. 泛型编程 🍉2. 函数模板 🥝2.1 函数模板概念 🥝2.2 函数模板格式 🥝2.3 函数模板的原理 &#x1f95…

elementUI在手机端使用遇到的问题总结

之前的博客有写过用vue2elementUI封装手机端选择器picker组件,支持单选、多选、远程搜索多选,最终真机调试的时候发现有很多细节样式需要调整。此篇博客记录下我调试过程中遇到的问题和解决方法。 一、手机真机怎么连电脑本地代码调试? 1.确…

Android 11 HAL层集成FFMPEG

1.集成目录: android/vendor/noch/common/external/NoboMediaCodec 2.文件夹目录 3. Android.mk实现 # Copyright #LOCAL_PATH : $(call my-dir)SF_COMMON_MK : $(LOCAL_PATH)/common.mkinclude $(call first-makefiles-under,$(LOCAL_PATH))4.common.mk实现 # #…

视觉巡线小车——STM32+OpenMV(三)

目录 前言 一、OpenMV代码 二、STM32端接收数据 1.配置串口 2.接收数据并解析 总结 前言 通过视觉巡线小车——STM32OpenMV(二),已基本实现了减速电机的速度闭环控制。要使小车能够自主巡线,除了能够精准的控制速度之外&#xff0…

微信被好友屏蔽朋友圈/拉黑/删除?教你几招悄悄验证

微信这一国民级的社交软件,基本上渗入了大家日常生活的方方面面,沟通、支付、购物、娱乐都可以在上面一站式解决。微信功能虽然很全面,但某些功能细节设计也会让人感到困惑,比如我们被朋友拉黑或者删除,微信是不会通知…

数学建模--优劣解距离法TOPSIS

目录 简介 TOPSIS法的基本步骤 延伸 优劣解距离法(TOPSIS)的历史发展和应用领域有哪些? 历史发展 应用领域 如何准确计算TOPSIS中的理想解(PIS)和负理想解(NIS)? TOPSIS方法在…

【NLP自然语言处理】基于BERT实现文本情感分类

Bert概述 BERT(Bidirectional Encoder Representations from Transformers)是一种深度学习模型,用于自然语言处理(NLP)任务。BERT的核心是由一种强大的神经网络架构——Transformer驱动的。这种架构包含了一种称为自注…

宝塔SSL续签失败

我有2个网站a和b(文字中用baidu.com替换我的域名) b是要续签那个,但续签报错: nginx version: nginx/1.22.1 nginx: [emerg] host not found in upstream "github.com" in /www/server/panel/vhost/nginx/proxy/a.bai…

分享 2 个 .NET EF 6 只更新某些字段的方法

前言 EF 更新数据时,通常情况下,是更新全部字段的,但实际业务中,更新全部字段的情况其实很少,一般都是修改其中某些字段,所以为了实现这个目标,很多程序员通常会这样作: 先从数据库…

Nginx 怎样处理请求的熔断机制?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会! 文章目录 Nginx 怎样处理请求的熔断机制?一、什么是熔断机制二、Nginx 中的熔断机制原理(一)基于错误率(二)基于…

超级写手:AI笔耕者的未来图谱

在数字化时代,人工智能(AI)正悄然改变着各行各业的传统作业方式。其中,“超级写手”——AI scribes,作为一种新兴的垂直应用场景,正以其独特的魅力吸引着投资者的目光。本文将深入探讨AI写手的市场背景、技术栈、投资策略及其潜在应用领域,带您一窥这个未来写作助手的广…

动手学深度学习——5.卷积神经网络

1.卷积神经网络特征 现在,我们将上述想法总结一下,从而帮助我们设计适合于计算机视觉的神经网络架构。 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对…

Docker构建LNMP环境并运行Wordpress平台

1.准备Nginx 上传文件 Dockerfile FROM centos:7 as firstADD nginx-1.24.0.tar.gz /opt/ COPY CentOS-Base.repo /etc/yum.repos.d/RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c make && \useradd -M -s /sbin/nologin nginx && \cd /o…

解决 go 引用私有包,安装失败

问题描述 go mod tidy 或者 go run main.go 时,提示失败,例如 no such host(设置GOPRIVATE)或者 x509: certificate signed by unknown authority 之类的报错(设置GOINSECURE) 解决 在各种 insteadof 方…

Android音视频—OpenGL 与OpenGL ES简述,渲染视频到界面基本流程

文章目录 OpenGL 简述特点和功能主要组件OpenGL ES当前状态 OpenGL ES 在 Android 上进行视频帧渲染总体流程 OpenGL 简述 OpenGL(Open Graphics Library)是一个跨平台的、语言无关的应用程序编程接口(API),用于开发生…

通过albumentation对目标检测进行数据增强(简单直接)

albumentation官方文档看不懂?xml文件不知道如何操作?下面只需要修改部分代码即可上手使用 要使用这个方法之前需要按照albumentation这个库还有一些辅助库,自己看着来安装就行 pip install albumentation pip install opencv-python pip install json…

昇思25天学习打卡营第25天 | RNN实现情感分类

学习心得:RNN实现情感分类 在自然语言处理(NLP)的领域中,情感分类是一个极具挑战性的任务,它要求模型能够准确地从文本中识别出情感倾向。通过使用MindSpore框架和RNN模型进行情感分类,我获得了许多有关构…

Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

创建仓库 创建一个Springboot项目,勾选web将该项目创建git本地仓库,再创建远程仓库推送上去 创建TestController RestControllerRequestMapping("/test")public class TestController {GetMapping("/hello")public String sayHell…

linux进程优先级——优先值、调度算法、进程性质

前言:本篇内容主要讲解linux下进程的优先级。 优先级的内容相对较少, 最重要的内容就是cpu的调度方法。 内容相对容易理解。 ps:本节内容适合了解冯诺依曼和操作系统的管理方式以及进程PCB的友友们进程观看 进程的优先级是什么 进程的优先级…

智汇云舟:双引擎模式,为合作伙伴带来实在的利润和回报

2024年是智汇云舟新渠道政策的元年,今年上半年,智汇云舟基于视频孪生产品的升级,对合作伙伴的共创模式进行了升级,从以往的“渠道模式”升级为“合伙模式”,从而实现能力升级,为智汇云舟渠道业务的发展带来…