智能家居项目

一.智能家居设计思路

1703039885757

二.系统方案设计

1703040549829

三.系统框架

系统框架分为:感知层,传输层,应用层

1703040580844

四.硬件篇

准备工作

硬件:MCU(STC89C52/STM32)及USB线、esp8266-01s(wifi模块),温湿度传感器(DHT11),CH340模块(板载)

软件:emqx、keil、cubemax,串口调试助手,ISP下载工具,微信小程序开发者,

链接地址:https://mqttx.app/zh

硬件接线

1703040711470

1684550223315

 

1703041114870

DHT11引脚

接线:

1704172661690

4.1DHT11温湿度模块

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。该传感器包括一个电容式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连。

1703045215200

DHT11工作时序

1704173046892

4.2ESP8266-01s模块

1.模块简介

1.1简介

1.2ESP8266的开发环境:

  1、AT指令开发,开发简单,只需知道AT指令集,以及它的通信方式即可,但是需要MCU与其通信,不能独立完成某项功能,烧录过程相对与其它开发方式来说比较麻烦。   2、使用lua脚本进行开发,NodeMCU本质也是ESP8266,只是它的固件是与lua脚本语言交互,可以节省资源,开发简单,代码量少,但是lua解释器执行效率较低。   3、Arduino IDE开发,使用C语言进行编程,集编程和烧录一体,并且还有许多的库函数可以使用。Arduino IDE相对lua需要写的带代码较长。如果要查看底层的代码,表较麻烦,不容易查看。   4、VS Code 配置Arduino开发环境,可以在VS Code 进行编程和烧录,使用快捷键一键烧录,使用方便,并且还自带代码补全功能,还可以很方便的查看底层原代码,推荐使用这种方式。

1.3开发方式

2.AT指令

2.1AT指令类型

AT指令类型:

AT测试指令:AT

AT配置指令:AT+cmd=<值>

AT查询指令:AT+cmd?

1703041977748

注:需要模块升级

TXD-U --- RXD

RXD-U --- TXD

GND --- IO0 --升级的时候需要连接

5V --- 3V3

GND --- GND

2.2常用指令

2.3MQTT方法发送数据到服务器全流程指令

2.4UDP方法发送数据到服务器全流程指令

2.5TCP方法发送数据到服务器全流程指令

2.6.STC89C516操作ESP8266-01S

总结:上面讲的都是AT指令,真正应用都要在STC89C51中,STC89C51连接ESP8266也是使用串口发送AT指令,与串口助手用法是一样的。

具体实现看下面代码

STC89C516通过串口发送AT指令需要在最后加"\r\n"(0x0D 0x0A)作为回车

2.7 模块测试以及程序设计

 

五.服务器篇

1.MQTT协议特点

概念:MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。做为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

特点: MQTT协议运行在TCP/IP或其他网络协议,提供有序、无损、双向连接。其特点包括:

2.MQTT协议原理

(1)MQTT实现方式

1703043899145

实现MQTT协议需要:客户端和服务器端 MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。 MQTT传输的消息分为:主题(Topic)和负载(payload)两部分 Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload) payload,可以理解为消息的内容,是指订阅者具体要使用的内容

3.MQTT客户端

一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以:

4 MQTT服务器

MQTT服务器以称为“消息代理”(Broker),可以是一个应用程序或一台设备。它是位于消息发布者订阅者之间,它可以:

5.搭建自己的MQTT服务器

(1)搭建框图

搭建之前需要在腾讯云服务器上购买一个自己的云服务器(华为云、阿里云、腾讯云、移动云)

1703043929904

(2)当前主流的MQTT服务器代理

(3)云服务器安装EMQX

点击网址连接进入到首页

1703044092819

点击网页左下角切换成中文。

1718094555561

点击立即下载,选择Linux操作系统。

1703044254189

下载安装MQTT,在云服务器中安装后,启动EMQX。

6.服务器开放端口

进入到安全中心,放开端口,增加防火墙放开端口。

(注:每个云服务商不一样,详细见云服务器控制台)

腾讯云服务器如下:

1703044343050

放开以下端口:

EMQX管理界面:18083

ssl:8883 --- 加密通道

Tcp:1883 -- 未加密通道

ws:8083 ---微信小程序

wss:8084 ---微信小程序加密通道

 

7.浏览器登录MQTT管理界面

登录地址:云服务器IP地址:端口号

eg:127.0.0.1:18083

腾讯云服务器地址:http://43.138.234.120:18083/

默认账号密码:admin /public

1703044367506

修改成中文

1703044385169

MQTT服务器测试

连接服务器

1703044405797

订阅默认消息,同时发布消息,显示已接收和已发布则代表测试成功如下图。

1703044424418

8.客户端测试工具

MQTTX

下载方式

链接地址:https://mqttx.app/

1703044444313

1703044462589

 

 

MQTTX软件MQTT协议主题发布/订阅测试

发布主题:/my/sub

订阅主题:/my/Pub

(1)打开软件

1703044486903

(2)订阅主题

1703044512618

向该主题/my/sub发送消息

1703044536032

发送消息hello world情况

1703044569493

 

六.小程序篇

一.注册微信小程序

点击 “立即注册” 按钮进行注册(右上角)。注册的账号类型可以是订阅号、服务号、小程序以及企业微信,我们选择 “小程序” 即可。

1702948492349

激活邮箱之后,选择主体类型为 “个人类型”,并按要求登记主体信息,主体信息提交后不可修改。

1702948878378

二.微信开发者工具

1702949102661

1)新建项目

1702949410369

17029493597001702949462900

2)微信小程序页面介绍

1702949935098

3)项目的组成

1702950446660

 

4)页面信息

1702950681926

5)新建页面信息组成

1702951006398

三.基本语法

1、基本语法

1)小程序的模板语法约等于vue的模板语法

2)导入文件

3)wxss

4)事件

5)表单的绑定

6)内置的api

7)生命周期

2、微信小程序内置标签

 

3、微信小程序标题与tabbar制作

4、小程序头部页面制作

wxml文件

wxss文件

5、小程序数据区域制作

wxml文件

wxss样式

6、数据绑定

7、小程序与服务器交互

1704677630448

https://www.emqx.com/zh/mqtt-client-sdk

1704678109068

下载地址:unpkg.com/mqtt/dist/mqtt.min.js

1704678644805

四、MQTT 使用

前提:需要导入mqtt包文件至微信小程序。

使用 EMQ X Cloud 提供的 免费公共 MQTT 服务器 作为本次测试的 MQTT 服务器地址,服务器接入信息如下:

1、免费MQTT服务器

2、自建腾讯云服务器

3、连接MQTT服务器步骤

微信小程序使用 WebSocket 的方式连接到 MQTT 服务器,但连接的 URL 地址中请使用 wxs 协议名称,连接及初始化数据的关键代码:

4、连接MQTT服务器

5、订阅主题

6、接收消息

7、按键推送消息

8、小程序完整代码

1)wxml文件
2) wxss 文件
3) js文件