STM32智能家居小助手

设计的目的

大部分家用电器开关仍旧是传统的机械式按键开关,原因是传统式的电器开关开发周期短,制作成本低,方案成熟,但是传统的遥控家电开关已经不能满足人们对家电控制的要求,传统的遥控器具有单一性, 每种遥控器只能控制一种家用电器,随着家用电器的逐步增加,使得众多的遥控器很难去分辨。随着科学技术的快速发展,人们对生活品质的要求也不断提高,开始追求更好的生活方式。因此,为了适应物质生活的需求,智能家居小助手系统应运而生。例如:回到家时,饭已煮好,房间温度合适,热水器中的水也已经加热,既舒服又方便。另外,用户还能随时改变家用电器的工作状态,既节能又安全。

智能家居( Smart Home)小助手系统是以家为平台,兼备建筑、自动化,智能化于一体的高效、舒适、安全、便利的家居环境。采用智能手机APP、网页、小程序等进行家电的控制具有夸时代的进步,因为通过WiFi的方式不再受到遥控器型号的限制,传统的家用电器开关需要匹配的遥控器才能进行有效的操作,当有了WiFi技术,操作的便利性得到很大的提高。

简介

STM32单片机设计的智能家居小助手,结合单片机的外围电路实现对整个系统的控制,报警电路由蜂鸣器组成,单片机显示部分采用OLED显示,可以通过查看OLED或者按键设置温湿度、光照强度的阀值,利用通过STM32单片机采集温湿度、光照强度、雨滴模块等的数据通过连接WIFI使用ESP8266模块发送数据到服务端,然后通过网页、小程序、APP来显示和修改数据,从而可以相互通信。而且我们只需要增加或者减小在核心板的传感器,从而测量环境中的数据。

设计思路

采用STM32单片机作为主控芯片,ESP8266 WIFI 模块作为无线接收和发射模块,利用手机 APP 、网页、小程序对家用电器进行控制。研究手机终端作为信号的发出源,通过连接WIFI 信号,利用相应的控制软件以 WIFI 网络信号为载体发送相关数据信号,WiFi 模块主要的任务就是作为一个载体,将终端发送来的信号传递给单片机,以单片机为中心的控制模块就实时完成数据的处理,CPU处理之后将会输出相应的电平控制继电器,来实灯光的亮灭等一系列智能家居的功能。

硬件电路模块STC89C52DHT11(温湿度模块)BH1750(光照强度模块)蜂鸣器LEDESP8266步进电机土壤湿度模块等等。

软件设计APP小程序网页

  • (1)单片机采集数据,可以通过OLED的UI菜单可以显示对应的数据。
  • (2)单片机通过串口发送数据给ESP8266,然后ESP8266通过WIFI发送数据到MQTT服务端。
  • (3)通过查看OLED,可以通过按键设置温湿度、光照强度、土壤湿度等每一个模块对应的阀值,从而更好的控制。
  • (4)通过小程序、APP、网页,可以控制LED、风扇等设备。
  • (5)系统设计完成3路家电开关的开启与关闭控制,相互之间不能有干扰。
  • (6)显示时间,这样方便实用。

硬件设备

软件小程序

设计流程

硬件

  • 首先通过STM32主控器读取温湿度及光照模块的具体数值,然后通过计算转为实际单位数值;将得到的具体环境数值通过ESP8266-wifi模块发送至远程服务器端,在通过前端显示出来。前端的显示目前由微信小程序实现。
  • 蜂鸣器作为环境报警响应,有被动式及主动式。被动式因环境参数超过预定标准触发。主动式可通过实体按键或小程序进行通断。LED作为日光灯功能,有自动式及主动式。自动式通过判断环境亮度自行触发。主动式可通过实体按键或小程序进行灯的通断。

软件

小程序设计

小程序使用 MPVUE 构架开发,使用开发工具:VSCODE+微信开发工具。

基础使用
  • 1.安装全局vue-cli
npm install --global vue-cli@2.9
  • 2.创建一个mpvue-quickstart模板的新项目
vue init mpvue/mpvue-quickstart project

3.安装依赖

cd project

npm install

npm run dev

成功后可以看到以下文件夹:

主要介绍src目录和static 目录 ,static 目录主要放静态文件。

src目录下有:

pages 主要用于写view ,compontents 写template,utils写public js

pages下边写view ,一般的文件结构都是类似 index.vue main.js main.json 这样的三个文件,

index.vue 写我们的vue文件,mpvue 支持大多数的vue语法,例如具体支持什么不支持什么:http://mpvue.com/mpvue/#_9 请传送致官网main.js :暴露index.vue 文件

main.json 写配置文件

使用微信api
  • 1.首先导出wx

然后在需要的页面使用

main.js

接下来是indx.vue 文件

wx.getLocation是获取当前的地理位置、速度。

整个index.vue文件如下

查看天气

服务器设计

我们使用自己的云服务器安装开源的EMQ服务器,通过EMQ,我们可以通过MQTT可以让8266和小程序、网页和APP结合。EMQ服务器可以实现高并发,多用户在线访问,也不会网络出现问题。

EMQ下载

下载地址:https://www.emqx.io/downloads#broker

下载界面如下图所示:

我们此处选择了开原版。

  • 版本号为:v4.2.11
  • 系统和软件:Linux/centos7/zip
  • 下载后的文件为: emqx-centos7-4.2.11-x86_64.zip
解压缩包

具体命令如下:

unzip  emqx-centos7-4.2.11-x86_64.zip

emqttd目录结构如下图所示:

bin目录结构如下图所示:

启动EMQ服务器

具体命令如下:

./emqttd start

该命令在bin目录下。

启动状态查询确认

具体命令如下:

./emqttd_ctl status

该命令在bin目录下。

浏览器访问确认

访问地址:http://39.97.125.79:18083

这里的IP地址,是我本地虚拟机中CentOS系统的IP地址,服务器部署在那台主机上,应该把IP地址换成对应主机的真实地址。

访问后会出现登陆界面,如下图所示:

输入用户名和密码,尝试是否能正常登陆。

  • 用户名:admin
  • 密码:public

登陆后如果出现下图的界面,则表示EMQ服务器已正常运行。

MQTT服务器安装完成,MQTT使用EMQX,STM32通过WIFI模块把数据上传MQTT服务器,然后小程序订阅STM32设备的主题,就可以获取STM32设备的数据,同样STM32可以订阅小程序的主题。

点击STM32智能家居小助手 - 古月居 可查看全文

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s1.28-helm安装kafka-Raft集群

参考文档 [Raft Kafka on k8s 部署实战操作 - 掘金 (juejin.cn)](https://juejin.cn/post/7349437605857411083?fromsearch-suggest)部署 Raft Kafka(Kafka 3.3.1 及以上版本引入的 KRaft 模式)在 Kubernetes (k8s) 上,可以简化 Kafka 集群…

Linux编程中进程的概念和环境变量

目录 概述 1 认识进程 1.1 进程的定义 1.2 进程状态 1.3 进程的调用 2 进程环境 2.1 进程ID 2.2 父进程与子进程 2.3 UID 和 GID 2.4 环境变量 2.4.1 通过main函数参数获取环境变量 2.4.2 environ 全局变量获取环境变量 2.4.3 getenv()函数获取环境变量 2.5 环境变…

Ubuntu22.04平台编译完美解决问题“error: GLSL 4.5 is not supported.”【GLSL(OpenGL着色器语言)】

GLSL介绍 GLSL(OpenGL着色器语言)是用于编写OpenGL着色器程序的语言。GLSL 4.5 是 GLSL 的一个版本,引入了许多新的特性和改进,旨在提高着色器编程的灵活性和性能。GLSL 4.5 工具通常是用于编写、调试和优化 GLSL 4.5 着色器代码…

Java基于微信小程序的校园外卖平台系统,附源码

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

怎么将本地VScode与Linux云服务器上的Vscode联动起来

首先我们打开本地刚刚下好的VScode, 下载remote SSH插件 按下F1 找到该选项, 点击 然后输入ssh 用户名公网地址 点击选择第一个 此时你的VScode左侧栏里就会出现这个图标 点进来后就可以看到主机已经加载进来了(如果没有, 关闭VScode重进…

工业4g路由器联网后迅速掉线是什么原因?

工业4G路由器连接上网后迅速掉线可能是由多种因素造成的。以下是一些建议的检查和解决步骤: 1、信号问题: 信号强度:检查工业路由器信号强度指示灯,如果信号弱,尝试移动路由器位置或添加外部天线来增强信号。 网络拥…

绘画尝试1

提示词:Elegant woman, standing in a picturesque courtyard, slender figure, graceful posture, elegant back, smooth neck line, flashing charming eyes. 绘画成果:

机器学习和深度学习

一、定义 机器学习是一种人工智能领域的分支,旨在使计算机系统能够自动从数据中学习和提高性能,而不需要明确的编程。简而言之,机器学习是利用经验来训练计算机系统,使其能够从输入数据中提取规律,并对新数据进行预测…

百度松果菁英班——机器学习实践四:文本词频分析

飞桨AI Studio星河社区-人工智能学习与实训社区 🥪jieba分词词频统计 import jieba # jieba中文分词库 ​ with open(test.txt, r, encodingUTF-8) as novelFile:novel novelFile.read() # print(novel) stopwords [line.strip() for line in open(stop.txt, r,…

mac老版本如何升级到最新版本

mac老版本如何升级到最新版本 老macbook升级新版本(Big sur、Monterey) 首先介绍我的电脑的机型及情况: 2015年初的MacBook Air 处理器是1.6Hz 双核Interl Core i5 内存4G 老版本只能升到10.13 想要升到最高版本的原因:想要注册…

React18从入门到实战

文章目录 一、React环境的搭建二、项目文件的介绍(1)package.json,他是项目存放依赖包的地方,里面包括了一些项目核心包及下载的其他插件包(2)src文件夹是项目源码目录,平时开发页面就在其中&am…

【ArcGIS微课1000例】0108:ArcGIS计算归一化差值植被指数

本文讲解ArcGIS中,基于Landsat8数据的NDVI归一化差值植被指数计算。 文章目录 一、加载数据二、归一化植被指数NDVI1. NDVI介绍2. NDVI计算三、注意事项一、加载数据 加载配套数据0108.rar中的Landsat8的8个单波段数据,如下所示: Landsat8波段信息对照表如下表所示: 接下来…

前端开发语言有那些?

前端开发语言有那些? 1、html 超文本标记语言:构建前端网页的基本结构,就象人的骨架一样。 2、css 层叠样式表:控制网页的样式和布局,就象人需要穿各种服式展现不同风采。 3、javascript 简称 JS 动态脚本语言&#x…

论文笔记:Detecting Pretraining Data from Large Language Models

iclr 2024 reviewer评分 5688 1 intro 论文考虑的问题:给定一段文本和对一个黑盒语言模型的访问权限,在不知道其预训练数据的情况下,能否判断该模型是否在这段文本上进行了预训练 这个问题是成员推断攻击(Membership Inference Attacks&…

SpriingBoot整合MongoDB多数据源

背景&#xff1a; MongoDB多数据源&#xff1a;springboot为3以上版本&#xff0c;spring-boot-starter-data-mongodb低版本MongoDBFactory已过时&#xff0c; 改为MongoDatabaseFactory。 1、pom引入&#xff1a; <dependency><groupId>org.springframework.boo…

axios取消请求,解决接口返回顺序错乱问题

下面的方案适用于系统中的某个请求的取消&#xff0c;项目的请求使用 axios 封装 使用场景&#xff1a;当页面有多个 tab&#xff0c;例如年、月、日的列表数据&#xff0c;当点击切换的时候要获取对应的数据&#xff0c;此时如果快速点击在tab直接反复横跳会出现下面的问题&am…

K8S - Service简介和 1个简单NodePort例子

大纲图 流量方向 如上图&#xff0c; 当用户or 别的service 从k8s 集群外部访问 集群内的services 流量方向有两种 一种是垂直方向&#xff0c; 通过域名 -> Load Balancer -> gateway -> services , 在k8s 一般是通过ingress 来实现&#xff0c; 而ingress 不是本文…

免费https详细教程

简单叙述一下https的定义和实现https的一些基本作用&#xff0c;然后会给到申请SSL证书的方式以及安装部署流程&#xff0c;最终实现网站的https访问。 随着互联网的快速发展&#xff0c;网络安全问题日益凸显。在互联网上传输敏感信息、进行在线交易和共享个人数据时&#xf…

nginx配置实例-负载均衡

目录 一、目的&#xff1a;实现效果 二、准备工作 三、实验部署 3.1修改第二台Tomcat服务器的监听端口为8081 3.2修改完成后&#xff0c;重新启动tomcat8081这台服务器。 3.3在浏览器测试 3.4在两台tomcat里面webapps目录中&#xff0c;创建名称是edu的文件夹&#xff0c…

Vue的学习之旅-part3

Vue的学习之旅-part1 vue的自带指令v-model的修饰符 一般用于input输入框中v-model.numberv-model.trimv-slot 作用域插槽具名插槽插槽-组件数据传递注意点1&#xff1a;注意点2&#xff1a; v-on: 绑定触发事件v-on监听事件的修饰符冒泡&#xff1a; 通过.stop阻止阻止默认行为…