物联网---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

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

您好!对于您的问题 "esp32 tcp_server",我可以为您提供以下信息: ESP32是一款低功耗的WiFi和蓝牙双模模块,可以用于物联网和嵌入式应用开发。要创建一个TCP服务器,您需要使用ESP-IDF(ESP32 IoT Development Framework)中的API来设置和管理网络连接。 以下是一个简单的示例代码,用于在ESP32上创建一个TCP服务器: ```cpp #include <WiFi.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; WiFiServer server(80); void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); server.begin(); } void loop() { WiFiClient client = server.available(); if (client) { Serial.println("New client connected"); while (client.connected()) { if (client.available()) { String request = client.readStringUntil('\r'); Serial.println(request); client.println("Hello from ESP32 TCP Server"); delay(10); client.stop(); Serial.println("Client disconnected"); } } } } ``` 在这个示例中,您需要将"your_SSID"和"your_PASSWORD"替换为您的WiFi网络的名称和密码。代码将连接到WiFi网络,并在端口80上创建一个TCP服务器。当有客户端连接时,它将打印请求并向客户端发送"Hello from ESP32 TCP Server"消息。 请注意,这只是一个简单的示例,您可以根据您的需求进行修改和扩展。您还可以使用ESP-IDF提供的其他功能来进行更复杂的TCP服务器开发。 希望这可以帮助到您!如果您有任何其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值