物联网---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和设备名称

相关推荐
瑶光守护者10 小时前
【协议详解】卫星通信5G IoT NTN SIB33-NB 信令详解
物联网·5g
神一样的老师16 小时前
【BQ3568HM开发板】深入解析智能家居中控屏工程的NAPI接口设计
物联网
神一样的老师16 小时前
【BQ3568HM开发板】智能家居中控屏界面设计:打造便捷的家居控制体验
物联网
瑶光守护者1 天前
【协议详解】卫星通信5G IoT NTN SIB32-NB 信令详解
笔记·物联网·学习·5g·架构·卫星通信·3gpp
7yewh1 天前
嵌入式知识点总结 Linux驱动 (七)-Linux驱动常用函数 uboot命令 bootcmd bootargs get_part env_get
linux·arm开发·驱动开发·mcu·物联网·硬件工程
Stanford_11062 天前
物联网智能项目之——智能家居项目的实现!
物联网·学习·微信小程序·智能家居·微信公众平台·twitter·微信开放平台
HMS工业网络3 天前
Anybus网关EtherNet/IP扫描器:快速、可靠、易配置的新一代网关
网络·物联网·安全
深圳启明云端科技3 天前
ESP32无线通信智能屏方案,设备触摸人机交互,高性能控制应用
网络·物联网·人机交互·智能家居·乐鑫
Anna_Tong3 天前
HSM能为区块链、IoT等新兴技术提供怎样的保护?
物联网·区块链·iot·数据加密·hsm
DS小龙哥4 天前
基于物联网设计的疫苗冷链物流监测系统
物联网