STM32 简易智能家居嵌入式系统设计蓝图

声明

本文为物联网产品设计蓝图,不包括程序设计。

文章目录

  • 声明
  • 前言
  • 一、项目需求
    • 1. 1 数据采集
    • 1.2 执行器控制
    • 1.3 人机交互
    • 1.4 功能
    • 1.5 场景联动
    • 1.6 数据分析
  • 二、项目评估
    • 2.1 软硬件
      • 2.1.1 硬件
      • 2.1.2 软件
    • 2.2 设备通讯方式及网络协议
  • 三、技术预研
    • 3.1 MQTT平台评估
      • 3.1.1 方案一 ❌
      • 3.1.1 方案二 ✔
    • 3.2 嵌入式设备接入云平台
      • 3.2.1 AT-MQTT ✔
      • 3.2.2 TCP组包 ❌
    • 3.3 移动终端接入云平台
      • 3.3.1 方案一 ❌
      • .3.3.2 方案二 ✔
    • 3.4 OLED显示
    • 3.5 DHT11温湿度
    • 3.6 HC-bh1750光照度
    • 3.7 设备配网
      • 3.7.1 TCP通信
      • 3.7.2 Smart Config
      • 3.7.3 UDP广播
      • 3.7.4 AT-WEB
      • 3.7.5 基于tcp实现web服务器
      • 3.7.6 BLE配网 ✔
    • 3.8 构建用户画像
      • 3.8.1 用户属性数据及用户行为数据分析
        • 3.8.1.1 用户行为数据
        • 3.8.1.2 用户属性数据
      • 3.8.2 数据基本处理
    • 3.9 数据可视化
    • 3.10 前端UI设计
  • 四、项目实现
    • 4.1 初期准备
    • 4.2 原理图及PCB
    • 4.3 单片机开发
      • 4.3.1 功能开发
      • 4.3.2 设备接入云
        • 4.3.2.1 数据上报
        • 4.3.2.2 命令下发
      • 4.3.3 手动/自动功能
      • 4.3.4 设备按键功能
      • 4.3.5 OLED显示
      • 4.3.6 外设通信
    • 4.4 前后端开发
      • 4.4.1 前端开发
      • 4.4.2 后端开发
        • 4.4.2.1 MQTT Broker
        • 4.4.2.2 Node.js
        • 4.4.2.3 消息处理逻辑
      • 4.4.3 数据库设计
      • 4.4.4 前后端通讯
        • 4.4.4.1 发送消息
        • 4.4.4.2 接收消息
    • 4.5 数据分析
  • 五、项目优化
  • 六、参考资料

前言

  • 由于本项目应用于课程设计来展示智能家居系统,故不考虑成本以及功耗问题
  • 本项目从感知层、网络层、应用层全面展示物联网产品的开发流程
  • 使用STM32作为主控,采集温度、湿度、光照度等环境参数,配合人体检测进行简单的场景联动
  • 条件有限,故使用LED和OLED模拟执行器控制输出
  • 本项目配备APP,可以远程监测和控制设备

一、项目需求

说明:项目需求描述了该项目所需要实现的功能。

1. 1 数据采集

  1. 通过温湿度传感器采集环境温度、湿度
  2. 通过热释电红外模块检测物体运动
  3. 通过光照传感器检测环境亮度

1.2 执行器控制

  1. 电灯亮度调节及启停控制
  2. 空调温度调节及启停控制
  3. 加湿器启停控制

1.3 人机交互

  1. 按键输入
  2. LED灯指示
  3. OLED显示
  4. APP交互

1.4 功能

  1. LED灯可以自动根据环境亮度自动调节亮度,可以通过APP调节控制
  2. 空调可以自动根据环境温度自动调节温度,可以通过APP调节控制
  3. 加湿器可以通过环境湿度自动启停,可以通过APP调节控制
  4. 温度、湿度、光照度及运动检测可以在APP上显示
  5. 热释电红外传感器用于配合其他传感器完成场景联动

1.5 场景联动

  1. 检测到主人回家ÿ

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

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

相关文章

一张图文深入了解信息量概念

通信原理第10页最后一段: 概率论告诉我们,事件的不确定程度可以用其出现的概率来描述。因此,消息中包含的信息量与消息发生的概率密切相关。消息出现的概率越小,则消息中包含的信息量就越大。 这句话怎么理解呢? 比如…

安利6款免费又高清的视频转GIF方法,值得收藏

前言 平时我们在聊天的时候会发的很多有趣表情包,其实有些就是视频里面的画面,觉得好玩有趣就被网友转换成了GIF,聊天的时候就可以用这些表情包来代表当时的心情。 如何将视频转成GIF动图?对于还不知道怎么将视频转成GIF的朋友&a…

【C语言】(8)宏定义

1. 简介 宏定义(#define)是C语言预处理指令的一种,用于为程序中的值或代码片段创建别名。宏定义可以使代码更加简洁、易于维护,并且可以提高代码重用性。 2. 基本用法 定义常量 宏可以用来定义常量,代替硬编码的数字或字符串,…

MyBatis --- 常用注解

目录 前言 1. Mapper 2. Select 3. Insert 4. Update 5. Delete 6. Results 注意事项: 前言 MyBatis是一款强大的持久层框架,通过注解的方式,可以更便捷地进行数据库操作。本文将介绍MyBatis中常用的注解以及在使用这些注解时需要注意…

uniapp微信小程序-秋云u-charts层级过高

一、先说问题 想在这个每个圆环上面定位一些百分比或者定位一些东西,微信小程序端可以,真机调试不行,打算提高层级不行 二、解决 点击底下开启2d就可以, 也就是在你的图表上加上 :canvas2d"true"

Vue 插槽讲解

什么是插槽? Slot 通俗的理解就是“占坑”,在组件模板中占好了位置,当使用该组件标签时候,组件标签里面的内容就会自动填坑(替换组件模板中slot位置)并且可以作为承载分发内容的出口。 简单的来说为了更加…

Adobe ColdFusion 任意文件读取漏洞复现(CVE-2023-26361)

0x01 产品简介 Adobe ColdFusion是美国奥多比(Adobe)公司的一套快速应用程序开发平台。该平台包括集成开发环境和脚本语言。 0x02 漏洞概述 Adobe ColdFusion平台 filemanager.cfc接口存在任意文件读取漏洞,攻击者可通过该漏洞读取系统重要文件(如数据库配置文件、系统配…

流畅的Python(六)-使用一等函数实现设计模式

一、核心要义 《设计模式:可复用面向对象软件的基础》一书中有23个设计模式,其中有16个在动态语言中"不见了或者简化了"。作为动态语言之一的Python, 我们可以利用一等函数简化其中的某些设计模式,本章主要介绍如何使用一等函数重…

c++ QT 信号的个人理解 信号就是独立文件调用的一种“协议”

一. 简介 就我个人来理解,信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁。 信号和槽机制是 Qt 的核心机制,可以让编程人员将互不相关的对象绑定在一起&a…

写一段防止sql注入的sql查询

要防止SQL注入攻击,可以使用参数化查询或预编译查询来防止恶意SQL代码的注入。下面是一个使用参数化查询的示例: DECLARE username nvarchar(50) ?; DECLARE password nvarchar(50) ?;SELECT * FROM users WHERE username username AND password …

边缘计算在电力行业的应用:挑战与机遇

摘要: 随着电力行业的数字化转型,边缘计算作为一种新兴技术,正在变得日益重要。通过将数据处理能力带到网络的边缘,即接近数据产生的地方,边缘计算能显著提高电力系统的实时性和效率。然而,这一变革同时带来…

如何用web界面打开华为防火墙

目录 1.创建一个虚拟网卡 2.cloud操作 3.防火墙上操作 4. 登录 1.创建一个虚拟网卡 2.cloud操作 3.防火墙上操作 4. 登录

Elasticsearch 中使用MustNot等同于不登录遇到的坑

1、在写关键词推荐时,需要把当前文章过滤掉,不能再推荐自己的文章,所以再es中需要用到 MustNot属性查询 /// <summary> /// 服务中心es检索 /// </summary> /// <param name="input"></param> /// <returns></…

Netty的解码器和编码器

链路图 一个完整的RPC请求中&#xff0c;netty对请求数据和响应数据的处理流程如下图所示 网络线路中传输的都是二进制数据&#xff0c;之后netty将二进制数据解码乘POJO对象&#xff0c;让客户端或者服务端程序处理。 解码的工具称为解码器&#xff0c;是一个入站处理器InBo…

磁盘数据恢复软件开发计划

无用:pyfilesystem2 :不适合磁盘数据恢复 pip install fs --trusted-host pypi.tuna.tsinghua.edu.cnpyfilesystem2 doc pdf 有用的? 直接python读取磁盘例子 直接python读取磁盘例子 ntfs结构遍历例子: nneonneo/ntfsrecover ntfsrecover.py 没啥用:PabloLec/Reco…

物联网协议Coap之C#基于Mozi的CoapClient调用解析

目录 前言 一、CoapClient相关类介绍 1、CoapClient类图 2、CoapClient的设计与实现 3、SendMessage解析 二、Client调用分析 1、创建CoapClient对象 2、实际发送请求 3、Server端请求响应 4、控制器寻址 总结 前言 在之前的博客内容中&#xff0c;关于在ASP.Net Co…

node.js 分布式锁看这篇就够用了

Redis SETNX 命令背后的原理探究 当然&#xff0c;让我们通过一个简单的例子&#xff0c;使用 Redis CLI&#xff08;命令行界面&#xff09;来模拟获取锁和释放锁的过程。 在此示例中 获取锁: # 首先&#xff0c;设置锁密钥的唯一值和过期时间(秒) 127.0.0.1:6379> SET …

数字三角形(很经典的动态规划问题)

给定一个如下图所示的数字三角形&#xff0c;从顶部出发&#xff0c;在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点&#xff0c;一直走到底层&#xff0c;要求找出一条路径&#xff0c;使路径上的数字的和最大。 73 88 1 02 7 4 4 4 5 2 6 …

OpenCV:绘制图像中mask的最小外接矩形

在计算机视觉和图像处理中&#xff0c;我们经常需要计算直线与外接矩形边的交点。这在进行边缘检测、图像分割、目标跟踪等任务时非常有用。本文将介绍如何使用OpenCV和NumPy计算直线与外接矩形边的交点&#xff0c;并展示如何在实际图像中绘制直线。 1.使用OpenCV读取图像 i…

第2章-神经网络的数学基础——python深度学习

第2章 神经网络的数学基础 2.1 初识神经网络 我们来看一个具体的神经网络示例&#xff0c;使用 Python 的 Keras 库 来学习手写数字分类。 我们这里要解决的问题是&#xff0c; 将手写数字的灰度图像&#xff08;28 像素28 像素&#xff09;划分到 10 个类别 中&#xff08;0…