STM32使用ESP-01S连接WiFi通过云平台与手机APP联动

ESP-01S测试

        我们买回来ESP-01S模块之后,首先要对模块的好坏进行测试,是否能正常通过串口通信,是否能正常连接手机热点或WiFi,一般模块买回来默认出厂烧录了AT固件,如果我们需要使用一些特殊的协议(如MQTT协议)需要找到对应的固件进行烧录,这里要讲到的是通过AT指令连接巴法云,默认的固件满足需求,不需要重新烧录固件,如果需要烧录其他固件的操作可参考其他博客:

ESP8266-01s MQTT固件烧录_esp8266-01s烧录-CSDN博客

ESP-01S接线

这里我们可以通过使用USB转TTL跟ESP-01S进行连接,接线如下:

USBESP
RXTX
TXRX
GNDGND
3V3VCC

正常只需要连接这四根线就能进行测试模块的好坏,其他接口用于下载模式的连接使用。 

 巴法云注册

  • 网址:https://cloud.bemfa.com/

  • 使用QQ邮箱进行注册:

 

巴法云的重要参数

 

 

  • 私钥:每个用户的私钥不同,这个是后面单片机和APP进行订阅和发布的重要参数
  • 主题:主题名称可以自己设定,用于后面单片机和APP对主题的订阅和发布
  • esp-01s连接巴法云的AT指令:https://cloud.bemfa.com/docs/src/app/at.html
  • TCP协议接入简介:https://cloud.bemfa.com/docs/src/tcp.html

 什么是订阅和发布?

订阅和发布是一种消息通信模式。在该模式中,有两类参与者:发布者和订阅者。

        发布者负责产生和发布消息,它们不关心消息是谁接收和处理的。发布者将消息发送到一个中心位置,通常称为消息队列或主题。它们有时也被称为发布/订阅中心。

        订阅者负责订阅感兴趣的消息。它们告诉发布/订阅中心它们希望接收哪些类型的消息。一旦有消息与其订阅条件匹配,订阅者将接收到该消息。

        订阅和发布模式的一个重要特点是解耦。发布者和订阅者之间没有直接的联系,它们之间通过发布/订阅中心进行通信。这种解耦使得发布者和订阅者可以独立进行扩展和改变,而不会影响彼此的功能。

        订阅和发布模式在实践中广泛应用于各种场景,例如事件驱动系统、消息传递系统和分布式系统等。它提供了一种灵活和可扩展的方式来处理消息通信。

简单来说,单片机可以做订阅者也可以做发布者,单片机可以订阅云平台上的topic主题,如果其他订阅者(例如手机APP)有发布消息到云平台,云平台接收到消息之后,会将这个消息下发到所有的订阅者那里,这时单片机就会收到消息或者指令,单片机也可以是发布者,例如单片机采集一些传感器数据,然后通过ESP-01S联网上云,将采集到的数据发布(推送)到云平台,云平台收到数据之后就可以下发到所有订阅者那里,如果手机APP订阅了这个topic主题,APP上就会显示单片机采集到的数据。

ESP-01S联网上云

esp8266连接到usb调试工具,通过串口可以进行调试,以下步骤请顺序执行。

1、测试esp8266是否正常

AT

正常返回:

OK

2、 设置路由器模式 1 station模式 2 AP路由器模式 3 station+AP混合模式

AT+CWMODE=3

正常返回:

OK

3、 设置模块WIFI名称,WIFI密码(可以设置成自己的手机热点名称和密码)

AT+CWJAP="newhtc","qq123456"

正常返回:

OK

4、 开启透明传输模式

AT+CIPMODE=1

正常返回:

OK

5 、连接服务器和端口(固定的服务器网址和端口,不需要修改)

AT+CIPSTART="TCP","bemfa.com",8344

正常返回:

OK

6 、进入透传模式,下面发的都会无条件传输

AT+CIPSEND

正常返回:

>

7、 如果需要订阅主题,发送这个订阅指令,发送完订阅,控制台推送的话,8266就可以收到推送消息了(将私钥修改成自己注册的巴法云私钥,topic主题修改成自己创建的主题名称)

cmd=1&uid=4d9ec352e0376f2110a0c601a2857225&topic=data

正常返回:

cmd=1&res=1

8 如果需要推送指令,发布数据指令(这里同样修改uid私钥和topic主题)

cmd=2&uid=4d9ec352e0376f2110a0c601a2857225&topic=light002&msg=#32#27.80#ON#

正常返回:

cmd=2&res=1

9 发送心跳 ,发任意数据都相当于心跳,随意发点啥就行,60s内不发,连接就会断开,就收不到订阅消息了

cmd=0&msg=ping

正常返回:

cmd=0&res=1

10如果真的断开连接了,重新开始第五步连接就行

说明:支持发布订阅模式,第7条cmd=1为订阅,uid是用户私钥,控制台获取,topic是需要订阅的主题名称,控制台可以任意创建,字母/数字。

第八条cmd=2是发布消息指令,msg是需要发布的消息,发什么消息随意自定义即可。

手机APP制作 

这里推荐这个up主的APP教学视频

 

我们通过网址在线设计:http://ai2.17coding.net/?locale=zh_CN#4846647255236608 

进行APP设计,视频内容较多,按需学习。或者我们也可以通过下载一些软件进行离线设计,操作如下:app inventor离线版2021_巴法云 (bemfa.com)

注意:我们下载的手机AI伴侣和电脑的设计界面的版本要对应,不然可能调试不了

STM32通过ESP-01S联网上云

 打开例程,修改一些参数(热点名称密码、用户私钥、订阅主题等)

STM32单片机通过ESP用TCP协议将采集到的传感器数据发布到云平台 

采集到的手机如下:

云平台接收到数据后,会推送订阅了该主题的设备收到的数据,如果设计的手机APP上订阅了该主题,就可以接收到数据并显示,如下:

 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【云岚到家-即刻体检】-day07-2-项目介绍及准备

【云岚到家-即刻体检】-day07-2-项目介绍及准备 1 项目介绍1)项目简介2)界面原型3)实战目标 2 搭建实战环境1)服务端2)管理端前端工程3)用户端前端工程4)测试 3 熟悉项目代码1)接口文…

《程序猿之设计模式实战 · 观察者模式》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

【混淆矩阵】Confusion Matrix!定量评价的基础!如何计算全面、准确的定量指标去衡量模型分类的好坏??

【混淆矩阵】Confusion Matrix!定量评价的基础! 如何计算全面、准确的定量指标去衡量模型分类的好坏?? 文章目录 【混淆矩阵】Confusion Matrix!定量评价的基础!1. 混淆矩阵2.评价指标3.混淆矩阵及评价指标…

【AI大模型】Transformer模型:Postion Embedding概述、应用场景和实现方式的详细介绍。

一、位置嵌入概述 \1. 什么是位置嵌入? 位置嵌入是一种用于编码序列中元素位置信息的技术。在Transformer模型中,输入序列中的每个元素都会被映射到一个高维空间中的向量表示。然而,传统的自注意力机制并不包含位置信息,因此需要…

强化学习Reinforcement Learning|Q-Learning|SARSA|DQN以及改进算法

一、强化学习RL 强化学习是机器学习的一个重要的分支,是一种有效的工具,在文献中被广泛用于解决MDP问题。在一个强化学习过程中,一个智能体只能通过和它所处的环境互动学习最优策略。特别地,智能体首先观察自己当前的状态&#xf…

CRE62539 不同尾缀功率不同

CRE62539MSQ 是一款内置高压 MOS 功率开关管的高性能多模式原边控制的12W开关电源芯片。CRE62539MSQ以较少的外围元器件、较低的系统成本设计出高性能的交直流转换开关电源。CRE62539MSQ 提供了极为全面和性能优异的智能化保护功能,包括逐周期过流保护、软启动、芯片…

Linux:RPM软件包管理以及Yum软件包仓库

挂载光驱设备 RPM软件包管理 RPM软件包简介 区分软件名和软件包名 软件名:firefox 软件包名:firefox-52.7.0-1.el7.centos.x86_64.rpm 查询软件信息 查询软件(参数为软件名) ]# rpm -qa #当前系统中所有已安装的软件包 ]# r…

Elment-plus组件失效(没有样式)(0916)

在学习Vue3时,使用Element-plus组件库开发登录页面,发现无法显示反馈组件的样式 然后查找相关博客后,发现原来是因为我使用按需导入,然后又在登录页面导入,导致组件样式失效 删除导入语句后,成功显示反馈组…

大数据处理技术:HBase的安装与基本操作

目录 1 实验名称 2 实验目的 3 实验内容 4 实验原理 5 实验过程或源代码 5.1 Hbase数据库的安装 5.2 创建表 5.3 添加数据、删除数据、删除表 5.4 使用Java操作HBase 6 实验结果 6.1 Hbase数据库的安装 6.2 创建表 6.3 添加数据、删除数据、删除表 6.4 使用Java操…

Linux进阶 修改文件权限

linux文件权限 查看文件权限 用 ls -l 查看当前目录下文件权限 各部分对应的内容: 第一个字符代表这个文件类型[d]:目录[-] :文件[l]:连结档(link file);[b]:装置文件里面的可供储存的接口设备(可随机存取装置)[c]:装置文件里面的串行端口设备,例如键盘、鼠标(一次性…

Linux常用目录结构

一、Linux常用目录结构 目录名 目录作用 /bin/ 存放系统命令的目录,普通用户和超级用户都可以执行。 是/usr/bin/目录的软链接 /sbin/ 存放系统命令的目录,只有超级用户才可以执行。是/ usr/ sbin/目录的软链接 /usr/bin/ 存放系统命令的目录,普通用户和超级用户都可以…

在麒麟操作系统中查看进程运行时间

在麒麟操作系统中查看进程运行时间 1、使用ps命令查看进程运行时间1.1 基本命令结构1.2 示例:查看sshd进程的运行时间 2、总结 💖The Begin💖点点关注,收藏不迷路💖 在Linux操作系统中,包括麒麟&#xff08…

神经网络通俗理解学习笔记(4) 深度生成模型VAE、GAN

深度生成模型 什么是生成式模型蒙特卡洛方法变分推断Variational Inference变分自编码器VAE生成对抗网络Generative Adversarial NetworkDiffusion 扩散模型VAE和GAN 代码实现 什么是生成式模型 判别式和生成式模型 判别式:CNN/RNN/transformer;生成式:AE/VAE/GAN 判别式模型学…

【例题】lanqiao3236 小蓝的零花钱

样例输入 6 3 1 2 3 4 5 6样例输出 2解题思路 在序列中选取一个位置将序列分成两段,要求每一段中偶数和奇数的数量都相等尽可能多地进行这个操作,但每次操作都需要花费代价切割需要花费的代价为切割两端的元素的差的绝对值在他的预算范围内&#xff0…

基于51单片机的智能风扇控制系统Protues仿真设计

目录 一、设计背景 二、实现功能 三、仿真演示 四、源程序(部分) 一、设计背景 在当今这个科技日新月异的时代,家电产品正以前所未有的速度向智能化、自动化迈进,旨在为用户带来更加便捷、舒适的生活体验。电风扇,…

一次RPC调用过程是怎么样的?

注册中心 RPC(Remote Procedure Call)翻译成中文就是 {远程过程调用}。RPC 框架起到的作用就是为了实现,调用远程方法时,能够做到和调用本地方法一样,让开发人员更专注于业务开发,不用去考虑网络编程等细节…

数据库基础(MySQL)

目录 1. 概述 2. MySQL安装准备 3. SQL概述 3.1 什么是SQL 3.2 SQL通用语法 3.3 SQL分类 4. DDL 4.1 操作数据库 4.1.1 C(Create)创建 4.1.2 R(Retrieve)查询 4.1.3 U(Update):修改 4.1.4 D(Delete):删除 4.1.5 使用数据库 4.2 操作表 4.2.1 C(Create):创建 4.2…

苹果已确定9月iPhone 16系列发布会,然而这些产品不会亮相

近日,科技巨头苹果公司正式宣布将于9月举办一年一度的iPhone 16系列发布会。 这场备受瞩目的活动吸引了全球众多科技爱好者的目光。 然而,在发布会前夕,有消息传出,部分备受期待的产品将不会亮相。 究竟哪些产品会惊艳登场&…

QT + WebAssembly + Vue环境搭建

Qt6.7.2安装工具 emsdk安装 git clone https://github.com/emscripten-core/emsdk.git cd emsdk emsdk install 3.1.50 emsdk activate 3.1.50 Qt Creator配置emsdk 效果 参考 GitHub - BrockReece/vue-wasm: Vue web assembly loader Emscripten cmake多版本编译-CSDN博客 …

我的标志:奇特的头像

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>与妖为邻</title><style>figure.log…