物联网---ESP32

news2025/1/13 15:31:28

物联网---ESP32

  • 一、TCP/IP协议(互联网协议)
  • 二、MQTT协议(通信协议)
    • 2.1 MQTT基本原理
    • 2.2 连接MQTT服务端
  • 三、ESP32
    • 3.1 ESP介绍
    • 3.2 ESP32连接云端
      • 3.2.1 ESP32连接WIFI/MQTT
      • 3.2.2 OneNET云端

一、TCP/IP协议(互联网协议)

  • TCP/IP是一组用于互联网及其他网络中数据传输的通信协议。它定义了如何将数据从一台计算机发送到另一台计算机,包括数据的格式、传输方法以及如何确保数据的完整性和可靠性
  • TCP/IP通常被描述成四层模型

  1.应用层:提供应用程序间的通信和数据交换服务。常见的应用层协议有HTTP、FTP、SMTP、DNS等
  2.传输层:提供端到端的通信服务,确保数据能够可靠地从源主机传输到目标主机。主要的传输层协议是TCP(稳定)和UDP(快)
  3.网络层:负责数据包路由选择传输,确保数据能够从源主机传输到目标主机。主要是IP(地址)

  IP地址目前分为IPv4和IPv6,v4是由4个十进制数字组成,v6是由8个十六进制组成
  在局域网中,路由器通过WIFI连接到PC、移动端和ESP8266,路由器会给每个设备分配一个IP地址(局域网的IP地址),当路由器连接到网络服务器时,例如电信、联通等,就可以实现上网
  网关的作用就是负责将互联网连接到各个设备

在这里插入图片描述

  4.链路层(网络接口层):负责在物理网络上传输数据帧,定义了如何在本地网络中传输数据。包括以太网、WIFI等协议

二、MQTT协议(通信协议)

  • MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议
  • MQTT特点:相互可独立空间可分离时间可异步

2.1 MQTT基本原理

  MQTT客户端首先将数据发送给MQTT服务器,然后MQTT服务器保存必要的数据,再把信息发送给其他客户端
  主题和订阅:当客户端发布主题信息后,当有其他客户端订阅了某主题的信息,MQTT服务器就会把主题信息发送给订阅过的客户端

  如下图所示,汽车客户端向服务端发送主题“汽车速度”的信息,手机和PC端订阅了主题“汽车速度”信息,然后MQTT服务器发送数据

在这里插入图片描述

2.2 连接MQTT服务端

  • MQTT客户端之间要想实现通讯,无论是发布消息还是订阅消息,必须要通过MQTT服务器
  • 连接MQTT服务端步骤

  1.客户端向服务端发送连接请求
  客户端向服务端发送一个CONNECT数据包

在这里插入图片描述

  下图是CONNECT数据包(报文)内容

在这里插入图片描述

  2.服务端向客户端发送连接确认
  服务端向客户端发送一个CONNACK的数据包

在这里插入图片描述

  下图是CONNACK数据包的内容

在这里插入图片描述

三、ESP32

3.1 ESP介绍

  • ESP32是一款无线通信单片机,有32位处理器,内置SRAM闪存2.2V-3.6V供电,支持WIFI蓝牙,时钟为26MHz32KHz晶振,包括GPIO、UART、SPI、I2C、PWM、ADC等外设
  • 固件下载方式主要是UART下载
  • 网络协议是IPv4、IPv6、TCP/UDP/HTTP/MQTT
  • 用户配置方式有AT+指令集云端服务器安卓/IOS APP
  • 开发ESP32主要使用的环境是ESP-IDF和Arduino IDE两种

  下图为ESP32管脚布局,具体芯片有所不同,但大致一样
  其中EN为芯片使能,高电平有效,GND接地,VCC接3.3V电压,剩余引脚包括GPIO、串口、ADC管脚等,具体见ESP32用户手册

在这里插入图片描述

3.2 ESP32连接云端

  • ESP32和STM32之间的数据收发方式包括串口、I2C、SPI等
  • ESP32连接WIFI的三种模式:STAAPAPSTA
  • STA(station):此种模式下,设备本身不接受无线的接入,可以看作是一个终端站点设备,是一个客户端,处在STA模式下的设备,可以连接到AP节点进行网络访问,STA模式下的设备之间的通信可以通过AP进行转发实现。例如手机、平板连接到路由器
  • AP:无线接入点,是一个无线网络的中心节点,可以看作是一个服务器,提供无线接入服务,其他无线设备允许接入该节点,所有接入该节点设备的无线信号数据都要通过它才能进行交换和相互访问,例如无线路由器、热点就是工作在AP模式下
  • APSTA:此模式是一种混合模式,指的是设备在工作时,同时支持AP和STA模式,AP和STA的特性可以同时进行

3.2.1 ESP32连接WIFI/MQTT

  下面是STM32通过串口通信发送AT指令来控制ESP32连接WIFI

ESP32_SendCmd("AT+RST\r\n", "OK")//复位,保证ESP32从一个已知的状态开始
ESP32_SendCmd("AT+CWMODE=1\r\n", "OK")//设置WIFI模式:STA
ESP32_SendCmd("AT+CWDHCP=1,1\r\n", "OK")//开启DHCP,使得ESP32从路由器中获取IP地址
ESP32_SendCmd("AT+CWJAP=\"abc\",\"abc123456\"\r\n", "GOT IP")//连接指定的WIFI:网络名称+密码

  下面是STM32通过串口通信发送AT指令来控制ESP32连接到MQTT服务器
  连接MQTT服务器之前,确保ESP32已经连接到WIFI并获得了有效的IP地址

ESP32_SendCmd("AT+CIPSTART=\"TCP\",\"mqtts.heclouds.com\",1883\r\n", "CONNECT")//AT+CIPSTART=<type>,<remote_addr>,<remote_port>:指定协议类型TCP/UDP 远程服务器地址:IP地址或者域名 服务器端口号

3.2.2 OneNET云端

  • 登录OneNET官网,点击开发者中心产品开发创建产品

在这里插入图片描述

  • 选择其他行业设备接入

在这里插入图片描述

  • 产品开发设置物模型添加自定义功能点,将需要的元素逐个添加即可

在这里插入图片描述

  • 设备管理添加设备
  • 创建产品下的所有设备都会有创建的属性,例如上面的温度,数据就以属性的方式上传

在这里插入图片描述

在这里插入图片描述

  • 登录设备(登录OneNET)
  • ESP32接入OneENT步骤:生成Token连接MQTT消息组包(将MQTT协议包发送给ESP32,ESP32转发给MQTT服务器)

在这里插入图片描述

在这里插入图片描述

  • ESP32上传数据

  • OneNET平台订阅MQTT主题,ESP32向主题发送消息(温湿度等),OneNET收到消息,所有发送给主题的消息都认定为属性上报,OneNET解析属性,执行操作,保存到平台

  • 上传主题为:$sys/{pid}/{device-name}/thing/property/post:产品ID和设备名称
    在这里插入图片描述

  • OneNET下发命令

  • ESP32需要订阅主题才可以收到OneNET平台下发的数据

  • 下发主题为$sys/{pid}/{device-name}/thing/property/set,产品ID和设备名称

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

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

相关文章

MySQL集群 主从复制 和 高可用 配置详解

安装数据库 1、环境依赖 [rootmysql-node10 ~]# yum install cmake gcc-c openssl-devel ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm rpcgen.x86_64 -y2、下载软件包 3、进行解压 [rootmysql ~]# tar zxf mysql-boost-5.7.44.tar.gz4、生成源码 #进入…

zotero同步之infiniteCLOUD网盘 WebDAV

zotero zotero打开 编辑->首选项->同步 一、数据同步 数据同步&#xff0c;申请并登录zotero账号&#xff0c;免费额度300M&#xff0c;用于存储条目信息。 二、文件同步 有zotero和WebDAV两种形式&#xff0c;zotero是直接把pdf存储在zotero账号中&#xff0c;免费…

【面试问题汇总】

面试问题汇总: Math.round函数:基础加0.5,向下取整 MySQL查询执行流程: 当我们执行一条SQL查询语句时,MySQL数据库会按照以下步骤进行处理: 语法解析器会对SQL语句进行解析,检查SQL语法是否正确。元数据查询器会检查查询的表和字段是否存在,以及当前用户是否具有相应…

前端通过draggable结合fabricjs实现拖拽至画布生成元素自定义编排功能

前端通过draggable结合fabricjs实现拖拽自定义编排功能 太久没有更新了&#xff0c;主要最近行情不太好失业了一段时间&#xff0c;一度到怀疑人生&#xff0c;然后就是做的东西大多没有什么含金量&#xff0c;没什么好分享的就很尴尬。 刚好最近遇到一个奇葩的需求&#xff0…

SparkSQL日期时间模式详解

datatime使用场景 CSV/JSON数据源使用模式字符串来解析和格式化日期时间内容。日期时间函数用于转换StringType类型到DateType或TimestampType类型&#xff0c;反之亦然。例如&#xff0c;unix_timestamp, date_format, to_unix_timestamp, from_unixtime, to_date, to_timest…

SQL AI 工具:颠覆数据库管理与分析的创新力量

一、SQL AI 工具的兴起与发展 在当今数字化的时代&#xff0c;数据量呈现爆炸式增长&#xff0c;企业和个人对于高效管理和分析数据的需求日益迫切。传统的数据库管理和查询方式&#xff0c;对于非技术人员来说存在较高的门槛&#xff0c;操作复杂且耗时。这一背景为 SQL AI 工…

Redis Cluster(无中心化设计)

目录 1 Redis Cluster 的介绍 1.1 Redis Cluster 工作原理 1.2 Redis Cluster特点如下 1.3 Redis cluster 架构 1.4 Redis cluster 主从架构 1.5 Redis Cluster 部署架构说明 1.6 创建redis cluster的前提 2 部署redis cluster 2.1 修改Redis主配置文件参数 2.2 查看端口是否启…

vue 实现简单AI聊天程序(二): python 对接通义千问API

申请账号流程&#xff0c;参考&#xff1a;https://blog.csdn.net/u012917925/article/details/140794192 登录阿里云&#xff0c;然后找到阿里云百炼&#xff0c;创建一个API KEY 配置环境变量&#xff1a;https://help.aliyun.com/zh/model-studio/developer-reference/con…

java直接内存

Java中的内存从广义上可以划分为两个部分&#xff0c;一部分是受JVM管理的堆内存&#xff0c;另一部分则是不受JVM管理的堆外内存&#xff0c;也称为直接内存。直接内存由操作系统来管理&#xff0c;这部分内存的应用可以减少垃圾收集对应用程序的影响。 直接内存概述 直接内…

酒店PMS系统源码之会员系统读取身份证-CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、酒店 PMS&#xff08;&#xff09;会员系统 1. 客户关系管理&#xff1a;帮助酒店有效地管理会员信息&#xff0c;包括个人资料、消费记录、偏好等&#xff0c;从而更好地了解会员需求&#xff0c;提供个性化的服务和优惠。 2. 会员忠诚度提升&#xff1a;通过积分、折扣、…

使用CORS解决跨域问题

CORS&#xff08;Cross-Origin Resource Sharing&#xff09;跨域资源共享 因为浏览器的同源策略才出现了跨域问题。 CORS是一套机制&#xff0c;用于浏览器校验跨域请求。 它的基本理念是&#xff1a; 只要服务器明确表示允许&#xff0c;则校验通过服务器明确拒绝或没有表…

读取FTP中不同文件格式的文件流后导出到浏览器

序言 有一个新的需求&#xff0c;前端提供下载的入口&#xff0c;后端能将指定了全路径的各种文件格式的文件下载到浏览器。 对于压缩的zip文件格式需要解析后写入到txt文件格式的文件中&#xff0c;其他的写入原本的文件格式的文件中。 1、连接ftp <!-- jsch-sftp连接…

构建第一个zk

1 必要步骤 视频学习&#xff1a;5. Circcom 中的基本算术电路_哔哩哔哩_bilibili 文字学习&#xff1a;https://hackmd.io/YlNLZS2ESI21OSqdTW_mPw/S1jqN-h80/edit 第五课&#xff0c;circom实践&#xff0c;需要安装 1 vscode 2 rust&#xff1a;Windows安装Rust环境&…

【C++】模拟(例题 学习)

引言 模拟就是用计算机来模拟题目中要求的操作。 模拟题目通常具有码量大、操作多、思路繁复的特点。由于它代码量大&#xff0c;经常会出现难以查错的情况&#xff0c;如果在考试中写错是相当浪费时间的。 注&#xff1a;模拟没有基础思路和模板&#xff0c;所以要多刷题锻…

vscode中文设置(一招解决)

打开vscode 点击这个Estentions图标 搜索Chinese,直接安装,重启就生效了

Jmeter提取token并设置为全局变量

参考文章&#xff1a;Jmeter提取token并设置为全局变量&#xff08;最详细的步骤&#xff09;_jmeter提取token到全局变量-CSDN博客 一般来说&#xff0c;系统内大多数接口&#xff0c;都需要先获取登录后的token值&#xff0c;所以我们需要创建一个获取token的接口&#xff0c…

es相关概念、索引操作(相当于mysql中的数据库操作)

文章目录 1、概念2、索引操作&#xff08;index&#xff09;2.1、查询索引&#xff08;数据库&#xff09;2.2、创建索引&#xff08;数据库&#xff09;2.3、查看单个索引&#xff08;数据库&#xff09;2.4、删除索引&#xff08;数据库&#xff09; 1、概念 RDBMSesMongoDB…

87.游戏改造-UI修正全面分析

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;86.游戏改造-UI修正暴力分析 首先来到下图位置 一个函数上来就 ECX4 这种不用想直接就看…

羚羊软件:处理sql server 2008 R2 Error 9003

在很多情况下,服务器突然断电或其他原因会造成&#xff0c;数据库附加时出现&#xff1a;错误代码为90003的错误。 解决办法&#xff1a; 1、新建一个同名得数据库&#xff08;Ly_Men_16_2005&#xff09;。 2、停止SQL服务。 3、用原来得主数据库文件&#xff0c;覆盖新建得…

使用在AMD GPU上运行的ROCm进行大语言模型的自然语言处理任务

Performing natural language processing tasks with LLMs on ROCm running on AMD GPUs — ROCm Blogs 在这篇博客中&#xff0c;您将学习如何使用在AMD的Instinct GPU上运行的ROCm进行一系列流行且有用的自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;使用不同的大…