STM32项目分享:智能家居(机智云)系统

2024-06-08 12:04

本文主要是介绍STM32项目分享:智能家居(机智云)系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板及元器件图

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1qb4y1N7mr/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2

(资料分享见文末) 

二、项目简介

1.功能详解

基于STM32的智能家居(机智云)系统。

功能如下:

  1. 采集温湿度:系统通过DHT11模块采集温湿度
  2. 烟雾监测:通过MQ-2模块采集环境中烟雾浓度
  3. 煤气监测:通过MQ-7一氧化碳模块采集环境中一氧化碳浓度
  4. 空气质量监测:通过MQ-7空气质量传感器采集环境空气质量情况
  5. 大气压强采集:通过BMP280采集环境气压大小
  6. 窗帘控制:通过步进电机模拟窗帘开关
  7. LED灯控制:控制LED灯
  8. OLED显示:显示温湿度、烟雾浓度、一氧化碳浓度、空气质量、大气压强等信息
  9. 蜂鸣器报警:危险情况下本地蜂鸣器触发报警
  10. 自动模式:设置自动模式,系统根据光强大小控制窗帘和LED灯的开闭
  11. 手动模式:设置手动模式,APP手动控制窗帘和LED灯的开关
  12. WIFI通信:使用ESP8266等进行WiFi远程通信
  13. APP功能:使用机智云APP,包括功能有控制并显示LED灯和窗帘的状态、显示当前温湿度、烟雾浓度、一氧化碳浓度和空气质量等信息。

2.主要器件

  • STM32F103C8T6最小系统板
  • DHT11温湿度传感器
  • OLED显示屏(7针SPI协议)
  • WiFi模块(ESP8266-01s)
  • MQ-2烟雾传感器
  • MQ-7一氧化碳传感器
  • MQ-135空气质量传感器
  • BMP280气压传感器
  • 28BYJ51步进电机
  • 蜂鸣器
  • LED灯

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板及元器件图

五、程序设计 

int main(void)
{	u8 t=0;int key_value;		//按键值uart_init(115200);	 		//串口初始化为115200delay_init();	    //延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级Adc1_Channe_Init();			//ADC通道初始化KEY_Init();					//按键引脚初始化bmp280Init();//while(DHT11_Init());	LED_Init();		  			//初始化与LED连接的硬件接口MOTOR_Init();OLED_Init();				//OLED初始化OLED_Clear();				//OLED清屏Gizwits_Init();		gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入delay_ms(500);
while(1){Get_Data(0);if(gz_value<=A_gz_value&&mode==0){LED0=0;curtain_flag=0;}else if(gz_value>A_gz_value&&mode==0){LED0=1;curtain_flag=1;}if(last_curtain_flag!=curtain_flag&&mode==0){BUJING_Cotrol(curtain_flag,3,270);last_curtain_flag = curtain_flag;}if(last_curtain_flag!=currentDataPoint.valueCurtain&&mode==1){BUJING_Cotrol(currentDataPoint.valueCurtain,3,270);curtain_flag = currentDataPoint.valueCurtain;last_curtain_flag = currentDataPoint.valueCurtain;}	if(mode==1){LED0=!currentDataPoint.valueLED;}
if(DHT11_Temp>=A_DHT11_Temp||DHT11_Hum<=A_DHT11_Hum||Pre>=A_pre||m135_value<=A_m135_value||m2_value>=A_m2_value||m7_value>=A_m7_value){BEEP=!BEEP;}else BEEP = 0;key_value = KEY_Scan(0);if(key_value==2){display_contrl++;}if(display_contrl%2==0&&t>=10){OLED_ShowCHinese(0,0,0);OLED_ShowCHinese(16,0,2);sprintf((char*)buff,":%2dC",DHT11_Temp);OLED_ShowString(32,0,buff,16);	//显示温度OLED_ShowCHinese(64,0,1);OLED_ShowCHinese(82,0,2);sprintf((char*)buff,":%2d%%",DHT11_Hum);OLED_ShowString(96,0,buff,16);//显示湿度	OLED_ShowCHinese(0,2,3);OLED_ShowCHinese(16,2,4);sprintf((char*)buff,":%2dhpa     ",Pre);OLED_ShowString(32,2,buff,16);//显示气压OLED_ShowCHinese(0,4,5);OLED_ShowCHinese(16,4,6);OLED_ShowCHinese(32,4,7);OLED_ShowCHinese(48,4,8);sprintf((char*)buff,":%4dppm",gz_value);OLED_ShowString(64,4,buff,16);//显示光照强度OLED_ShowCHinese(0,6,9);OLED_ShowCHinese(16,6,10);OLED_ShowCHinese(32,6,11);OLED_ShowCHinese(48,6,12);sprintf((char*)buff,":%4dppm",m135_value);OLED_ShowString(64,6,buff,16);//显示空气质量}else if(display_contrl%2==1&&t>=10){OLED_ShowCHinese(0,0,13);OLED_ShowCHinese(16,0,14);OLED_ShowCHinese(32,0,15);OLED_ShowCHinese(48,0,16);sprintf((char*)buff,":%4dppm",m2_value);OLED_ShowString(64,0,buff,16);//显示M2数据OLED_ShowCHinese(0,2,17);OLED_ShowCHinese(16,2,18);OLED_ShowCHinese(32,2,19);OLED_ShowCHinese(48,2,20);sprintf((char*)buff,":%4dppm",m7_value);OLED_ShowString(64,2,buff,16);//显示M7数据OLED_ShowCHinese(0,4,5);OLED_ShowCHinese(16,4,6);OLED_ShowCHinese(32,4,7);OLED_ShowCHinese(48,4,8);sprintf((char*)buff,":%4dppm",gz_value);OLED_ShowString(64,4,buff,16);//显示光照强度OLED_ShowCHinese(0,6,9);OLED_ShowCHinese(16,6,10);OLED_ShowCHinese(32,6,11);OLED_ShowCHinese(48,6,12);sprintf((char*)buff,":%4dppm",m135_value);OLED_ShowString(64,6,buff,16);//显示M135数据}userHandle();		//用户数据采集WIFI_Contection(key_value);//WiFi连接控制gizwitsHandle((dataPoint_t *)&currentDataPoint);//机智云协议处理Canshu_Change(key_value);t++;delay_ms(100);}
}

六、实验效果 

七、资料内容

项目分享

这篇关于STM32项目分享:智能家居(机智云)系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1042128

相关文章

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压