怎么使用esp8266WiFi模块,js连接mqtt,实现简单的智能家居控制

怎么使用esp8266WiFi模块,js连接mqtt,实现简单的智能家居控制,第1张

开发资源

1、Esp8266 Wi-Fi模块

2、机智串口调试软件

3、51单片机或者STM32单片机或者其它单片机

4、Windows 10

主要设计思路

一句话概括:将esp8266 Wi-Fi 模块连接上能上网的路由器(手机开热点作为路由器也行),连接过程需要做一些配置,以跟机智云平台对接。之后智能终端(手机或平板)跟Wi-Fi模块绑定后即可远程或者局域网控制设备。

简易介绍机智云官方提供的文档资料

机智云给开发者提供了大量开发支持,如开源的安卓/苹果SDK、APP等,开发者直接在开源的架构上二次开发即可,从而减少开发工作量。文档中心提供大量的接入教程,非常详细,此处不再重复说明。

机智云官方文档中心链接:>

如果您是想通过esp8266WiFi模块的MQTT协议来实现智能家居控制的话,可以了解一下支持MQTT协议的esp8266WiFi模块,比如SKYLAB的WG219/WG229以及WG231。

MQTT WiFi模块

MQTT 最初由 IBM 于上世纪 90 年代晚期发明和开发。它最初的用途是将石油管道上的传感器与卫星相链接。顾名思义,它是一种支持在各方之间异步通信的消息协议。异步消息协议在空间和时间上将消息发送者与接收者分离,因此可以在不可靠的网络环境中进行扩展。虽然叫做消息队列遥测传输,但它与消息队列毫无关系,而是使用了一个发布和订阅的模型。在 2014 年末,它正式成为了一种 OASIS 开放标准,而且在一些流行的编程语言中受到支持(通过使用多种开源实现)。

物联网设备选择MQTT协议的原因分析

物联网 (IoT) 设备必须连接互联网。通过连接到互联网,设备就能相互协作,以及与后端服务协同工作。互联网的基础网络协议是 TCP/IP。MQTT(消息队列遥测传输) 是基于 TCP/IP 协议栈而构建的,已成为 IoT 通信的标准。

MQTT 是一种轻量级的、灵活的网络协议,致力于为 IoT 开发人员实现适当的平衡:

1、这个轻量级协议可在严重受限的设备硬件和高延迟/带宽有限的网络上实现。

2、它的灵活性使得为 IoT 设备和服务的多样化应用场景提供支持成为可能。

WG219

WG219是一款基于ESP8266芯片方案的小尺寸低功耗低成本串口WiFi模块,符合80211b / g / n 无线模块标准,支持UART-WiFi -以太网数据传输。专为移动设备和物联网应用设计,可将用户的物理设备连接到WiFi无线网络上,进行互联网或局域网通信,实现联网功能。

WG229

WG229是一款基于ESP8266芯片方案的小尺寸低功耗低成本串口WiFi模块,符合80211b / g / n 无线模块标准,支持UART-WiFi -以太网数据传输。专为移动设备和物联网应用设计,可将用户的物理设备连接到WiFi无线网络上,进行互联网或局域网通信,实现联网功能。另外WG229仅需要通过出串口使用AT指令控制,就能满足大部分的网络功能需求。WG229高性能、低功耗、低成本、支持串口透传等特性,使得WG229在高集成、低功耗自动化和传感器解决方案的理想解决方案,WG229和LCS6260 Pin对Pin兼容,可替代ESP8266方案的ESP-12F。

支持MQTT协议的IoT UART接口WiFi模块也都是支持对接云端服务的。LCS6260支持对接阿里云、涂鸦云,WG219/WG229/WG231支持对接阿里云。

一般来说,一款家电产品的智能化开发可能需要耗费几个月的时间,而且非常考验设备厂商的资源与人才整合能力,成本投入高。如果不需要代码开发就能实现智能化,这可以有效解决设备厂商的智能化烦恼,低成本快速完成繁重的开发任务,大大提高市场应变能力。

机智云的零代码开发方案,无需厂商编写代码,只需按照开发步骤完成设置,即可轻松实现设备智能化开发,大幅降低研发门槛和维护成本。硬件方面,机智云拥有MCU自助代码生成工具,可以在线实时获取。还有SoC免开发方案以及一站式的PCBA公版设计方案,组装即用,快速上市。软件方面,除了免费使用智家公版APP外,机智云AIoT云平台还支持厂商零代码自助开发APP/小程序,提供开源框架,厂商只需完成简单的业务逻辑处理,即可快速实现APP/微信开发;提供APP SDK,封装手机与硬件端、云端的通信协议,厂商只需关注APP的UI和UE设计即可快速完成APP开发;提供APP在线编辑工具——赛博坦,零代码自定义产品logo、名称、主颜色、模板等,拖拉拽快速完成功能配置。

Gokit是个机智云推出的开发套件;ESP8266是个WIFI模块。Gokit可以通过ESP8266这个WIFI模块实现WIFI连接(路由或AP)。Gokit也可以通过其他WIFI模块实现WIFI连接(路由或AP)。Gokit(或其他开发板、MCU)要接上机智云的云平台,可以通过WIFI模块或GPRS模块实现联网,前提是WIFI模块或GPRS模块需要具备作为网关的功能(其实就是使用专门的对应机智云服务器连接的固件)。机智云官方有公布合作开发支持的通讯模块列表,可以直接选用。另外,也可以与机智云签订协议,获取网络协议,自行使用任何网络通讯设备进行开发。总之,机智云服务端摆在那,MCU端在你手上,中间需要联系双方的网关,ESP8266只是网关载体的其中一种选择

产品开发后,设备可以远程实现OTA升级。OTA 英文全称是Over-the-Air Technology,即空间下载技术。当设备连上云端时会收到OTA升级通知,再通过>

信息转换是Android上层客户端与STM32底层控制通信的关键,Android上层客户端无法直接通过串口和底层STM32进行通信。而且在串口通信中,很容易出现数据的丢失。且是非握手的协议,即发送端不知道接收端是否收到发送的信息。

技术实现要素:

本发明的目的是:解决Android上层客户端无法直接通过串口和底层STM32进行通信的技术问题。

本发明提供了一种Android上层客户端与STM32底层通信方法,来实现上层通过串口和底层进行通信,包括以下步骤:

步骤S100:Android上层客户端向STM32底层传送信息;包括以下子步骤:步骤S110:使用USB转RS232连接线将微型USB接口连接平板USB接口,用于平板供电和数据传输;普通USB接口接5v电源,为FTID模块和平板供电;RS232接口输出或接受RS232串口数据信息;步骤S120:RS232通用串口信息经过RS232电平转TTL电平模块,其中,采用max232芯片实现电平转换,最终被转换成TTL信息;步骤S130:TTL信息被底层STM32接收。

步骤S200:STM32底层向Android上层客户端传送信息;包括以下子步骤:步骤S210:STM32底层通过各种传感器采集信息;步骤S220:采集到的信息经过TTL转RS232模块转换成RS232通用串口信息进行传输;其中,采用max232芯片实现电平转换;步骤S230:传输的信息经过解码显示在安卓上层客户端。

本发明的另一个目的是:解决串口之间数据传输易丢失的问题。

优选的,该方法所传送的信息数据采用符号#,标记数据终止。

优选的,该方法所传送的信息数据采用符号$,标记数据开始。

本发明提供了一种模拟握手协议的数据传输格式,使得数据的传输更加可靠。

有益效果:本发明实现了Android上层客户端与STM32底层控制通信的信息转换,有效地解决了上层与底层不能直接通信的问题,而且较为实用,简单;同时通信中采用的数据传输格式,模拟了握手协议,使得传输更加的可靠。

附图说明

图1为本发明实施例提供的基于Android上层客户端与STM32底层通信方法的系统结构示意图。

图2为本发明实施例提供的Android上层客户端与STM32底层通信方法的数据包发送格式。

具体实施方式

为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。

本实施例是将Android上层客户端与STM32底层通信方法用于传感器数据传送。首先连接在STM32F103主控板上的各种传感器采集数据,经过主控板进行数据处理之后,通过无线串口模块发送数据到PC端。

PC端运行一个JAVA程序,程序定义串口接口,当无线数传开始工作后,串口就会打开,java程序就能接收来自串口的数据。接收到来自串口的数据后,程序通过Socket和安卓客户端连接上,打开输出流。再对接收到的数据进行处理和分发。处理时,进行数据解析,每一种数据都与相应的输出流对应,通过该输出流传输到安卓客户端。并且在Eclipse控制台输出接受的数据以检测是否传输出错。

之后打开安卓客户端,客户通过socket套接字和电脑相连,可以互相通信。客户端连上服务器后,接收来自服务器端的数据并作出相应判断和处理。客户端定义了5个线程,用来接受和处理不同种类的数据。同时将数据存储到数据库。

具体过程如下:请参照图1,安卓上层客户端与STM32底层控制通信,是通过STM32底层控制—电脑服务器端—安卓客户端实现的。这一模式实现较为方便,传输数据可靠。

STM32底层通过传感器获得环境的相关参数,其中包括温度、心率、湿度、烟雾浓度、是否摔倒等数据。然后将电脑和STM32底层控制通过无线数传连接,这些数据通过无线数传传到电脑串口上,等待电脑服务器端的接收。这些数据按照自定义的格式来传输。格式为“$No,data#”。No为0,表示湿度。No为1表示心率,No为2表示温度,No为3表示烟雾浓度,No为4表示是否摔倒。

电脑服务器端是用Ecl ipse写的Java程序。程序定义串口接口,当无线数传开始工作后,串口就会打开,java程序就能接收来自串口的数据。接收到来自串口的数据后,程序通过Socket和安卓客户端连接上,打开输出流。再对接收到的数据进行处理和分发。处理时,进行数据解析,每一种数据都与相应的输出流对应,通过该输出流传输到安卓客户端。并且在Eclipse控制台输出接受的数据以检测是否传输出错。

安卓客户端主要是用来提醒用户并向用户提供实时环境信息的。客户通过socket套接字和电脑相连,可以互相通信。客户端连上服务器后,就可接收来自服务器端的数据并作出相应判断和处理。客户端定义了5个线程,用来接受和处理不同种类的数据。客户端每个界面都有相应环境参数的正常范围值和相关介绍。种类0环境湿度、种类2环境温度,如果温湿度在正常范围,则用默认黑体字显示当前环境湿度。若不在正常的范围,则用红色字体提示用户注意。种类1是心率,若在正常范围,则用默认黑体字显示当前心率,弱不在正常范围,则用红字字体显示当前心率,并且提示是过高还是过低。过高则建议休息,过低则建议去检查身体。而且这些数据和发生的准确时间将会存储到数据库。种类3是烟雾浓度,若不正常,则讲烟雾浓度和时间记录到数据库,以便检查是否有过烟雾异常。种类4判断是否摔倒。若摔倒,则手机震动提示用户,而且将摔倒时间存储到数据库。这样一来,不仅能够实时显示当前环境状况,又能查询是否有过异常,如心跳、摔倒等,主要针对年轻人方便检查老年人一段时间内的异常状况。

图2中的数据格式为“$No,data#”。No为0,表示湿度。No为1表示心率,No为2表示温度,No为3表示烟雾浓度,No为4表示是否摔倒,整个通信过程,采用此数据格式来进行数据传输。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。STM32作为主控芯片,ESP8266作为外设,利用串口传递信息,通过机智云平台实现STM32与手机之间的数据传输!之所以选择机智云平台,是因为机智云平台相关配套的软件工具非常齐全,而且和正点合作,按照原子哥的精神推出有详细的基于STM32的教程,非常适合对云服务的认知处于一脸懵的人对其进行初步的探索STM32板子和ESP8266模块必不可少,下载机智云的DEMO APP,链接:机智云DEMO APP

(2)ESP8266的固件,链接:GAgent for ESP8266 04020034

(3)串口调试工具,链接:机智云串口调试助手 for win7\win8\win10 v235

(4)使用MCU代码自动生成工具,自动生成MCU代码,使用方法链接:MCU代码生成工具介绍

(5)这个链接包含乐鑫官方烧录工具,机智云串口调试工具,ESP8266固件,以及原子哥详细的机智云教程的PDF资料;提取码为:txs8:工具

步骤有四:

(1)注册机智云,创建新产品,使用MCU代码生成工具自动生成代码;

(2)刷ESP8266固件,并在机智云的串口助手上进行调试;

(3)将生成的代码移植到自己的工程;

(4)联网,调试;

1、创建产品,生成代码

11 创建产品简介

创建产品的过程中要弄明白几个关键要素之间的关系,Product Key,Product Secret,以及数据点所包含的内容!

首先Product Key和Product Secret可以理解为你所创建产品的登录账号和密码,后面自动生成的代码会把这个写进协议里面,这样的话后期把程序烧录进MCU入网之后,手机会通过这个获取你所创建的产品信息!

接下来以最简单的控制LED为例!

比如:实现的目标既可以在MCU开发板控制三个LED的亮灭,又可以在手机上控制,而且在开发板上控制时手机上可以显示当前LED的亮灭状态!那么你可以创建一个产品,然后产品里面有三个数据点!这三个数据点就是指这三个LED!然后三个LED中每一个又包含“亮”“灭”两种状态!

这里的产品就像是用MDK写STM32点亮发光二极管的时候要建立的工程类似!然后因为三个LED有且只有两种状态所以我们设置的数据包类型为布尔值!然后我们希望手机端和开发板上都可以控制所以数据读写类型设置为可写!

通讯模块列表协议进行管理。机智云官方有公布合作开发支持的通讯模块列表,可以直接选用。另外,也可以与机智云签订协议,获取网络协议,自行使用任何网络通讯设备进行开发。总之,机智云服务端摆在那,MCU端在你手上,中间需要联系双方的网关,ESP8266只是网关载体的其中一种选择。

以上就是关于怎么使用esp8266WiFi模块,js连接mqtt,实现简单的智能家居控制全部的内容,包括:怎么使用esp8266WiFi模块,js连接mqtt,实现简单的智能家居控制、传统电器要进行智能化升级,需要怎么做、怎么使用esp8266WiFi模块,js连接mqtt,实现简单的智能家居控制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9663265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存