物联网技术:ESP32核心功能与应用解析
物联网—ESP32
一、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协议(通信协议)
2.1 MQTT基本原理
MQTT客户端首先将数据发送给MQTT服务器,然后MQTT服务器保存必要的数据,再把信息发送给其他客户端
主题和订阅:当客户端发布某主题信息后,当有其他客户端订阅了某主题的信息,MQTT服务器就会把主题信息发送给订阅过的客户端
如下图所示,汽车客户端向服务端发送主题“汽车速度”的信息,手机和PC端订阅了主题“汽车速度”信息,然后MQTT服务器发送数据
2.2 连接MQTT服务端
1.客户端向服务端发送连接请求
客户端向服务端发送一个CONNECT数据包
下图是CONNECT数据包(报文)内容
2.服务端向客户端发送连接确认
服务端向客户端发送一个CONNACK的数据包
下图是CONNACK数据包的内容
三、ESP32
3.1 ESP介绍
下图为ESP32管脚布局,具体芯片有所不同,但大致一样
其中EN为芯片使能,高电平有效,GND接地,VCC接3.3V电压,剩余引脚包括GPIO、串口、ADC管脚等,具体见ESP32用户手册
3.2 ESP32连接云端
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云端
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和设备名称
作者:侥幸哥f