STM32项目分享:智能家居(机智云)系统
目录
一、前言
二、项目简介
1.功能详解
2.主要器件
三、原理图设计
四、PCB硬件设计
1.PCB图
2.PCB板及元器件图
五、程序设计
六、实验效果
七、资料内容
项目分享
一、前言
项目成品图片:

哔哩哔哩视频链接:
https://www.bilibili.com/video/BV1qb4y1N7mr/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2
(资料分享见文末)
二、项目简介
1.功能详解
基于STM32的智能家居(机智云)系统。
功能如下:
- 采集温湿度:系统通过DHT11模块采集温湿度
- 烟雾监测:通过MQ-2模块采集环境中烟雾浓度
- 煤气监测:通过MQ-7一氧化碳模块采集环境中一氧化碳浓度
- 空气质量监测:通过MQ-7空气质量传感器采集环境空气质量情况
- 大气压强采集:通过BMP280采集环境气压大小
- 窗帘控制:通过步进电机模拟窗帘开关
- LED灯控制:控制LED灯
- OLED显示:显示温湿度、烟雾浓度、一氧化碳浓度、空气质量、大气压强等信息
- 蜂鸣器报警:危险情况下本地蜂鸣器触发报警
- 自动模式:设置自动模式,系统根据光强大小控制窗帘和LED灯的开闭
- 手动模式:设置手动模式,APP手动控制窗帘和LED灯的开关
- WIFI通信:使用ESP8266等进行WiFi远程通信
- 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 *)¤tDataPoint);//机智云协议处理Canshu_Change(key_value);t++;delay_ms(100);}
}
六、实验效果


七、资料内容
项目分享
相关文章:
STM32项目分享:智能家居(机智云)系统
目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板及元器件图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…...
游戏盾之应用加速,何为应用加速
在数字化时代,用户对于应用程序的防护要求以及速度和性能要求越来越高。为了满足用户的期望并提高业务效率,应用加速成为了不可忽视的关键。 应用加速是新一代的智能分布式云接入系统,采用创新级SD-WAN跨域技术,针对高防机房痛点进…...
Java 基础面试题
文章目录 重载与重写抽象类与接口面向对象a a b 与 a b 的区别final、finalize、finallyString、StringBuild、StringBuffer位运算反射 重载与重写 重载:是在同一个类中,方法名相同,方法参数类型,个数不同,返回类型…...
Nginx 1.26.0 爆 HTTP/3 QUIC 漏洞,建议升级更新到 1.27.0
据悉,Nginx 1.25.0-1.26.0 主线版本中涉及四个与 NGINX HTTP/3 QUIC 模块相关的中级数据面 CVE 漏洞,其中三个为 DoS 攻击类型风险,一个为随机信息泄漏风险,影响皆为允许未经身份认证的用户通过构造请求实施攻击。目前已经紧急发布…...
uniadmin引入iconfont报错
当在uniadmin中引入iconfont后,出现错误: [plugin:vite:css] [postcss] Cannot find module ‘E:/UniAdmin/uniAdmin/static/fonts/iconfont.woff2?t1673083050786’ from ‘E:\UniAdmin\uniAdmin\static\fonts\iconfont.css’ 这是需要更改为绝对路径…...
Vue3【三】 使用TS自己编写APP组件
Vue3【三】 使用TS自己编写APP组件 运行截图 目录结构 注意目录层级 文件源码 APP.vue <template><div class"app"><h1>你好世界!</h1></div> </template><script lang"ts"> export default {name:App //组…...
数字IC后端物理验证PV | TSMC 12nm Calibre Base Layer DRC案例解析
基于TSMC 12nm ARM A55 upf flow后端设计实现训练营将于6月中旬正式开班!小班教学!目前还有3个名额,招满为止!有需要可以私信小编 ic-backend2018报名。吾爱IC社区所有训练营课程均为直播课! 这个课程支持升级成双核A…...
Echarts 在指定部分做文字标记
文章目录 需求分析1. demo1样式调整2. demo22. demo3 定位解决需求 实现在Echarts的折线图中,相同Y值的两点之间显示’abc’ 分析 1. demo1 使用 ECharts 的 markLine 功能来在相邻两个点之间添加标记。其中,我们通过设置标记的 yAxis 和 label 来控制标记的位置和显示内…...
如何发布自己的npm插件包
随着JavaScript在前端和后端的广泛应用,npm(Node Package Manager)已成为JavaScript开发者不可或缺的工具之一。通过npm,开发者可以轻松共享和使用各种功能模块,极大地提高了开发效率。那么,如何将自己开发的功能模块发布为npm插件包,与全球的开发者共享呢?本文将进行全…...
AI和机器人引领新一轮农业革命
AI和机器人技术在农业领域的应用正在迅速发展,未来它们可能会实现厘米级精度的自主耕作。 精确种植:AI算法可以分析土壤条件、气候数据和作物生长周期,以决定最佳种植地点和时间。 土壤管理:利用传感器和机器学习,机器…...
【Kubernetes】三证集齐 Kubernetes实现资源超卖(附镜像包)
目录 插叙前言一、思考和原理二、实现步骤0. 资料包1. TLS证书签发2. 使用 certmanager 生成签发证书3. 获取secret的内容 并替换CA_BUNDLE4.部署svc deploy 三、测试验证1. 观察pod情况2. 给node 打上不需要超售的标签【可以让master节点资源不超卖】3. 资源实现超卖4. 删除还…...
国产Sora免费体验-快手旗下可灵大模型发布
自从OpenAI公布了Sora后,震爆了全世界,但由于其技术的不成熟和应用的局限性,未能大规模推广,只有零零散散的几个公布出来的一些视频。昨日,快手成立13周年,可灵(Kling)大模型发布&am…...
linux嵌入式设备测试wifi信号强度方法
首先我们要清楚设备具体链接在哪个wifi热点上 执行:nmcli dev wifi list rootubuntu:/home/ubuntu# nmcli dev wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS > * 14:EB:08:51:7D:20 wifi22222_5G Infr…...
【名词解释】Unity的Inputfield组件及其使用示例
Unity的InputField组件是一个UI元素,它允许用户在游戏或应用程序中输入文本。InputField通常用于创建表单、登录界面或任何需要用户输入文本的场景。它提供了多种功能,比如文本验证、占位符显示、输入限制等。 功能特点: 文本输入ÿ…...
Android 安装调试 TelephonyProvider不生效
直接安装TelephonyProvider的时候,(没有重启)发现数据库没有生效。 猜测应该是原本的数据库没有删除后重建更新。 解决方法:杀掉phone进程 adb shell am force-stop com.android.phone 查看device进程 adb shell ps | grep <…...
【C++】STL中List的基本功能的模拟实现
前言:在前面学习了STL中list的使用方法,现在我们就进一步的讲解List的一些基本功能的模拟实现,这一讲博主认为是最近比较难的一个地方,各位一起加油。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 …...
C语言基础——函数
ʕ • ᴥ • ʔ づ♡ど 🎉 欢迎点赞支持🎉 个人主页:励志不掉头发的内向程序员; 专栏主页:C语言基础; 文章目录 前言 一、函数的概念 二、库函数 2.1 库函数和头文件 2.2 库函数的使用/…...
《精通ChatGPT:从入门到大师的Prompt指南》第1章:认识ChatGPT
第1章:认识ChatGPT 1.1 ChatGPT是什么 ChatGPT,全称为Chat Generative Pre-trained Transformer,是由OpenAI开发的一种先进的自然语言处理模型。它利用了深度学习中的一种技术——Transformer架构,来生成类人文本。ChatGPT通过对…...
智慧视觉怎么识别视频?智慧机器视觉是通过什么步骤识别视频的?
智慧视觉功能怎么识别视频?智慧视觉是搭载在智能设备比如手机、AI盒子、机器视觉系统上的一个应用程序或特性,采用计算机视觉和人工智能的技术来识别图像或视频中的内容。如果想了解视频识别,就要明白智慧视觉功能会涉及的以下几个关键步骤和…...
NineData蔡冬者参与编写墨天轮《2023年中国数据库行业年度分析报告》正式发布!
为明晰发展脉络,把握未来趋势,墨天轮于5月29日正式发布 《2023年中国数据库年度行业分析报告》。该报告由墨天轮联合业界专家学者共同编写,共330页,旨在梳理和洞察中国数据库行业的发展趋势、技术创新、市场动态以及面临的挑战&am…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
