物联网---ESP32

物联网---ESP32

一、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

c 复制代码
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地址

c 复制代码
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和设备名称

相关推荐
雪兽软件5 小时前
商业物联网:拥抱生产力的未来
物联网
WINDHILL_风丘科技6 小时前
Softing工业将OPC UA信息建模集成到边缘应用和安全集成服务器中
物联网·网关·工业边缘·opc·工业自动化
网易独家音乐人Mike Zhou14 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
2401_8827275718 小时前
BY组态-低代码web可视化组件
前端·后端·物联网·低代码·数学建模·前端框架
畅联云平台21 小时前
美畅物联丨智能分析,安全管控:视频汇聚平台助力智慧工地建设
人工智能·物联网
东芝、铠侠总代136100683931 天前
浅谈TLP184小型平面光耦
单片机·嵌入式硬件·物联网·平面
BY—-组态1 天前
web组态软件
前端·物联网·工业互联网·web组态·组态
Vodka~1 天前
物联网——UNIX时间戳、BKP备份寄存器、RTC时钟
物联网·实时音视频
电子科技圈1 天前
XMOS携手合作伙伴晓龙国际联合推出集成了ASRC等功能的多通道音频板
科技·嵌入式硬件·mcu·物联网·音视频·iot
IT枫斗者1 天前
如何解决Java EasyExcel 导出报内存溢出
java·服务器·开发语言·网络·分布式·物联网