基于STM32设计的智能学习台灯(华为云IOT)(238)
文章目录
- 一、前言
- 1.1 项目介绍
- 【1】开发背景
- 【2】项目实现的功能
- 【3】项目硬件模块组成
- 【4】ESP8266工作模式配置
- 1.2 设计思路
- 【1】整体设计思路
- 【2】整体构架
- 【3】上位机开发思路
- 1.3 项目开发背景
- 【1】选题的意义
- 【2】可行性分析
- 【3】参考文献
- 【4】摘要
- 1.4 开发工具的选择
- 【1】设备端开发
- 【2】上位机开发
- 1.5 系统功能总结
- 1.6 系统框架图
- 1.7 设备原理图
- 1.8 硬件实物图
- 二、硬件选型
- 2.1 STM32开发板
- 2.2 PCB板
- 2.3 USB下载线
- 2.4 ESP8266 WIFI
- 2.5 杜邦线(2排)
- 2.6 稳压模块
- 2.7 电源插头
- 2.8 监控摄像头
- 2.9 MQ135空气质量检测
- 2.10 DHT11温湿度模块
- 2.11 BH1750光敏传感器
- 2.12 LED白色照明灯模块
- 2.13 蜂鸣器模块
- 2.14 人体感应-热释电模块(买2个)
- 三、部署华为云物联网平台
- 3.1 物联网平台介绍
- 3.2 开通物联网服务
- 3.3 创建产品
- (1)创建产品
- (2)填写产品信息
- (3)产品创建成功
- (4)添加自定义模型
- 【1】brightness 灯光亮度
- 【2】mode_type 运行模式 1自动模式 0手动模式 整型
- 【3】LED_SW 灯开关 1开启 0关闭 整型
- 【4】HumanBody_Flag 人体检测 1有人 0无人 整型
- 【5】time_close 自动关灯时间
- (6)BH1750 环境光强
- (7)MQ135 空气质量
- (8)DHT11_T 环境温度
- (9)DHT11_H 环境湿度
- (5)创建完成
- 3.4 添加设备
- (1)注册设备
- (2)根据自己的设备填写
- (3)保存设备信息
- (4)设备创建完成
- (5)设备详情
- 3.5 MQTT协议主题订阅与发布
- (1)MQTT协议介绍
- (2)华为云平台MQTT协议使用限制
- (3)主题订阅格式
- (4)主题发布格式
- 3.6 MQTT三元组
- (1)MQTT服务器地址
- (2)生成MQTT三元组
- 3.7 模拟设备登录测试
- (1)填入登录信息
- (2)打开网页查看
- (3)MQTT登录测试参数总结
- 3.8 创建IAM账户
- 3.9 获取影子数据
- 3.10 修改设备属性
- 四、STM32设备端代码设计
- 4.1 硬件连线
- 4.2 取模软件使用
- 4.3 通信协议
- 7.4 自动模式运行逻辑
- 4.5 自动模式控制逻辑
- 4.6 ESP8266初始化
- 4.7 KEIL工程
- 4.8 串口打印效果
- 4.9 代码移植需要改的地方
- 五、Qt开发入门与环境搭建
- 5.1 Qt是什么?
- 5.2 Qt版本介绍
- 5.3 Qt开发环境安装
- 5.4 开发第一个QT程序
- 5.5 调试输出
- 5.6 QT Creator常用的快捷键
- 5.7 QT帮助文档
- 5.8 UI设计师使用
- 5.9 按钮控件组
- 5.10 布局控件组
- 5.11 基本布局控件
- 5.12 UI设计师的布局功能
- 六、上位机开发
- 6.1 Qt开发环境安装
- 6.2 新建上位机工程
- 6.3 设计UI界面与工程配置
- 【1】打开UI文件
- 【2】开始设计界面
- 6.4 设计代码
- 【1】获取token
- 【2】获取影子数据
- 【3】解析数据更新界面
- 【4】判断设备是否离线
- 【5】获取设备最新数据上传时间
- 【5】界面的数据更新
- 【6】处理服务器返回的数据
- 【7】设备远程控制
- 6.5 编译Windows上位机
- 6.6 配置Android环境
- 【1】选择Android编译器
- 【2】创建Android配置文件
- 【3】配置Android图标与名称
- 【3】编译Android上位机
- 6.7 交互命令
- 6.8 模拟设备联调
- 6.9 增加视频播放功能
- 七、视频监控
- 7.1 购买ECS服务器
- 7.2 登录ECRS服务器
- 7.3 部署NGINX服务器
- (1)先安装一些工具
- (2)获取Nginx二进制源码
- (3)获取nginx-rtmp-module
- (4)编译nginx
- (5)修改Nginx的配置文件
- (6)设置开机启动
- (7)控制nginx服务的3个命令: 启动、停止、重启
- (8)进行rtmp推流
- (9)nginx保存推流视频文件
- (10)rtmp直播流转为hls直播流
- 7.4 视频推流测试
- 7.5 配置监控摄像头
- 7.6 配置监控摄像头2
- 八、使用STM32代码的流程以及注意事项
- 8.1 第一步
- 8.2 第二步
- 8.3 第三步
- 8.4 第四步
- 8.5 第五步
- 九、完整STM32代码
基于STM32设计的智能学习台灯(华为云IOT)(238)
一、前言
1.1 项目介绍
【1】开发背景
随着科技的快速发展和人们生活水平的提高,智能化家居设备逐渐成为了现代家庭不可或缺的一部分。青少年作为家庭的重要组成部分,其学习环境和健康状况备受家长关注。在这样的背景下,一款专为青少年学习设计的智能台灯应运而生,通过智能化手段提升青少年的学习体验,同时保障其身体健康。
传统的台灯往往只具备单一的照明功能,无法根据环境和使用者的需求进行智能调节。此外,家长在监督子女学习时,往往需要亲自到场查看,这对于工作繁忙的
相关文章:

基于STM32设计的智能学习台灯(华为云IOT)(238)
文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成【4】ESP8266工作模式配置1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要1.4 开发工具的选择【1…...

网络层协议 --- IP
序言 在这篇文章中我们将介绍 IP协议,经过这篇文章的学习,我们就会了解运营商到底是如何为我们提供服务的以及平时我们所说的内网,公网到底又是什么,区别是什么? IP 地址的基本概念 1. IP 地址的定义 每一个设备接入…...

Java虚拟机(JVM)介绍
**Java虚拟机(JVM)**是Java平台的核心组件,它提供了一个运行时环境,使得Java程序可以在不同的操作系统和硬件平台上运行而无需修改。 JVM的架构 JVM主要由以下几个部分组成: 类加载器(Class Loader…...

1000题-计算机网络系统概述
术语定义与其他术语的关系SDU(服务数据单元)相邻层间交换的数据单元,是服务原语的表现形式。在OSI模型中,SDU是某一层待传送和处理的数据单元,即该层接口数据的总和。 - SDU是某一层的数据集,准备传递给下一…...

Authentication Lab | IP Based Auth Bypass
关注这个靶场的其它相关笔记:Authentication Lab —— 靶场笔记合集-CSDN博客 0x01:IP Based Auth Bypass 前情提要 有些开发人员为了图方便,会给站点设置一个 IP 白名单,如果访问站点的用户的 IP 在白名单内,则允许访…...

linux中的火墙优化策略
1.火墙介绍 1. netfilter 2. iptables 3. iptables | firewalld 2.火墙管理工具切换 在rocky9 中默认使用的是 firewalld firewalld -----> iptables dnf install iptables - services - y systemctl stop firewalld systemctl disable firewalld systemctl mask fi…...

GO网络编程(三):海量用户通信系统1:登录功能初步
一、准备工作 需求分析 1)用户注册 2)用户登录 3)显示在线用户列表 4)群聊(广播) 5)点对点聊天 6)离线留言 主界面 首先,在项目根目录下初始化mod,然后按照如下结构设计目录: 海量用户通信系统/ ├── go.mod ├── client/ │ ├──…...

Windows安全加固详解
一、补丁管理 使用适当的命令或工具,检查系统中是否有未安装的更新补丁。 Systeminfo 尝试手动安装一个系统更新补丁。 • 下载适当的补丁文件。 • 打开命令提示符或PowerShell,并运行 wusa.exe <patch_file_name>.msu。 二、账号管…...

JavaScript函数基础(通俗易懂篇)
10.函数 10.1 函数的基础知识 为什么会有函数? 在写代码的时候,有一些常用的代码需要书写很多次,如果直接复制粘贴的话,会造成大量的代码冗余; 函数可以封装一段重复的javascript代码,它只需要声明一次&a…...

云RDS MySQL迁移至本地MySQL
本地准备工作 1.安装:percona-xtrabackup 上传percona-xtrabackup-2.3.9-Linux-x86_64.tar.gz包到/usr/local tar -zxvf percona-xtrabackup-2.3.9-Linux-x86_64.tar.gz mv percona-xtrabackup-2.3.9-Linux-x86_64 percona-xtrabackup 2.创建数据目录 cd /data/ mkdir rds-mys…...

【C++ 11】nullptr 空指针
文章目录 【 0. 问题背景 】0.1 野指针和悬空指针0.2 传统空指针 NULL0.3 传统空指针的局限性 【 1. 基本用法 】【 2. nullptr 的应用 】2.1 nullptr 解决 NULL 的遗留BUG2.2 简单实例 【 0. 问题背景 】 0.1 野指针和悬空指针 总结 野指针悬空指针产生原因指针变量未被初始…...

Flutter + Three.js (WebView)实现桌面端3d模型展示和交互
文章目录 flutter(桌面端)瓶颈一、Flutterthree.js二、Flutterthree.js 实现思路1.在Flutter 中使用webview 进行嵌套2.开启上面嵌套的页面地址2.在含有three.js 的html 中引入模型3.两个页面之间进行通信,如图: 总结 flutter(桌面端)瓶颈 Flutter 本身…...

学习日志35
拆卸线问题(Disassembly Line Balancing Problem, DLBP)是生产工程和运筹学中的一个特殊问题,它涉及到将废弃产品有效地拆解成可回收利用的部件和材料。随着环保意识的增强和资源回收技术的发展,DLBP逐渐成为研究的热点。这类问题…...

http cache-control
Cache-Control 是 HTTP 协议中用于控制缓存行为的重要头部字段。它定义了客户端和服务器端如何缓存资源,以及缓存的有效期。以下是关于 Cache-Control 的详细解释: 请求指令 max-age 指示客户端接受的响应最大年龄。如果缓存的响应超过这个年龄&#x…...

kubernetes 中的微服务
微服务:用控制器来完成集群的工作负载,那么应用如何暴漏出去?需要通过微服务暴漏出去后才能被访问 - Service是一组提供相同服务的Pod对外开放的接口。 - 借助Service,应用可以实现服务发现和负载均衡。 - service默认只支持…...

电脑无法无线投屏的解决办法
在前司的时候经常遇到电脑无法使用无线投屏器的情况,今天就来聊聊如何解决。 1.不会连接。这种情况,经常发生在WIN10升级WIN11之后,一般是两种办法,一种是同时按键盘上的WINDOWS和K键,右下角就会出来连接的图标&#…...

【多重循环在Java中的应用】
多重循环在Java中的应用 介绍 多重循环是将一个循环嵌套在另一个循环体内的编程结构。Java中的 for、while 和 do...while 循环均可作为外层循环和内层循环。建议使用两层嵌套,最多不超过三层,以保持代码的可读性。 在多重循环中,外层循环执…...

JVM(Java Virtual Machine) 详解
1. JVM 内存区域划分 一个 Java 写的程序,跑起来就得到了一个 Java 进程(资源分配的基本单位) JVM 上面运行的字节码指令 1) 程序计数器(比较小的空间),保存了下一条要执行的指令的地址 这个不是 CPU 的…...

【进阶OpenCV】 (4)--图像拼接
文章目录 图像拼接1. 读取图片2. 计算图片特征点及描述符3. 建立暴力匹配器4. 特征匹配5. 透视变换6. 图像拼接 总结 图像拼接 图像拼接是一项将多张有重叠部分的图像(这些图像可能是不同时间、不同视角或者不同传感器获得的)拼成一幅无缝的全景图或高分…...

pg if条件语句
1.语法: 2.区别 IF 语句: 只能在 PL/pgSQL 中使用,不适合在直接的 SQL 查询中使用。没有返回值,仅仅是控制逻辑流程。适合用在存储过程、函数和触发器中。 CASE 语句(在 PL/pgSQL 中): 可以在 P…...

Pikachu-unsafe upfileupload-getimagesize
什么是getimagesize()? getimagesize()是PHP中用于获取图像的大小和格式的函数。它可以返回一个包含图像的宽度、高度、类型和MIME类型的数组。 由于返回的这个类型可以被伪造,如果用这个函数来获取图片类型,从而判断是否时图片的话ÿ…...

SOA是什么
SOA SOA 即 Service-Oriented Architecture(面向服务的架构)。 一、定义 SOA 是一种软件设计方法和架构理念,它将应用程序的不同功能单元(称为服务)通过定义良好的接口和契约联系起来。这些服务可以独立部署、独立运…...

构建高效团队,内部CRM系统的益处详解
内部CRM系统的最大优势之一是它能够集中并系统化客户信息,包括联系方式、购买历史、偏好设置、服务记录等。这种集中式的数据管理使企业能够快速响应客户需求,预测客户行为,提供个性化的服务或产品。更重要的是,它有助于建立一个统…...

Linux文件属性
Linux 文件基本属性 为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限: - chown (change owner) &#…...

什么是Anaconda
目录 1. [什么是Anaconda](#什么是Anaconda) 2. [安装Anaconda](#安装Anaconda) - [检查系统](#检查系统) - [下载Anaconda](#下载Anaconda) - [安装Anaconda](#安装Anaconda) 3. [启动Anaconda Navigator](#启动Anaconda-Navigator) 4. [创建与管理环境](#创建与管理环…...

ubuntu24开启启动脚本
因为我是在之前装的是windows和ubuntu双系统,所以想在ubuntu中自动挂载和开启时做些自己的脚本处理开发环境。 我的脚本如下: truedei@truedei-code:~$ cat mount.shsudo umount /media/truedei/*#sudo ntfsfix /dev/sda3 #sudo ntfsfix /dev/sda4 #sudo ntfsfix /dev/sda5…...

流浪地球行星发动机
随着电影《流浪地球2》的热播,影片中的行星发动机构想激发了社会各界对科幻与未来科技的广泛讨论。本文深入剖析了行星发动机的科学原理,包括重力助推、行星转移轨道以及重核聚变等核心技术,揭示了其在推动地球逃离太阳系过程中的关键作用。通…...

云岚到家,使用Elasticsearch实现服务的搜索功能,使用Canal+MQ完成服务信息与ES索引同步。MQ
为什么使用elasticsearch?数据很多么? 项目使用Elasticsearch是实现了门户上对服务的搜索。 平台上的服务数据是并不是很多,全国所有区域下的服务信息加一起几千条,之所以使用Elasticsearch是因为: 1、公司架构师在系统架构时…...

【图论】迪杰特斯拉算法
文章目录 迪杰特斯拉算法主要特点基本思想算法步骤示例 实现迪杰斯特拉算法基本步骤算法思路 总结 迪杰特斯拉算法 迪杰特斯拉算法是由荷兰计算机科学家艾兹赫尔迪杰特斯拉(Edsger W. Dijkstra)在1956年提出的,用于解决单源最短路径问题的经…...

四、Python基础语法(数据类型转换)
数据类型转换就是将一种类型的数据转换为另外一种类型的数据,数据类型转换不会改变原数据,是产生一个新的数据。 变量 要转换为的类型(原数据) -> num int(28) 一.int()将其他类型转换为整型 1.整数类型的字符串转换为整型 num1 28 print(type…...