[ESP8266/ESP32]ESP32-E基于TCP的通信

2943浏览
查看: 2943|回复: 2

[ESP8266/ESP32] ESP32-E基于TCP的通信

[复制链接]
一、项目介绍1、材料清单

FireBeetle Board ESP32-E开发板  x1

本项目实现了ESP32-E开发板通过TCP建立连接,进行通信。FireBeetle ESP32-E是一款基于ESP-WROOM-32E双核芯片的主控板,它专为IoT设计。
它具有WiFi+Bluetooth4.0无线双模模组,支持WIFI和蓝牙双模通信,具有GDI显示接口,单线连接显示屏板载充电电路以及PH2.0锂电池接口


ESP32-E基于TCP的通信图1

并具有体积小巧、超低功耗、板载充电电路、接口易用等特性。可灵活的用于家庭物联网改装、工业物联网改装、可穿戴设备等等。
通过和IFTTT等物联网平台的连接,你可轻松制作出你独有的特色物联网智能家居系统。
FireBeetle ESP32-E深度支持ArduinoIDE编程,并且即将支持Scratch图形化编程及MicroPython编程。


ESP32-E基于TCP的通信图2


二、制作过程

TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。
以下是TCP协议建立连接的过程,也就是我们通常说的三次握手。

ESP32-E基于TCP的通信图3

(一)安装编程工具Thonny

1、打开Thonny官网https://thonny.org/,根据操作系统选择相应的版本下载软件。
笔者使用的Windows10操作系统,点击windows进行下载。

ESP32-E基于TCP的通信图4
(二)刷micropython固件

1、打开micropython官网https://micropython.org/download/esp32/下载ESP32的micropython固件。


ESP32-E基于TCP的通信图5



下载完成,会得到一个esp32spiram-idf3-20210202-v1.14.bin的文件

2、安装驱动及Thonny软件。
(1)将ESP32-E连接到电脑USB口,安装CH340K驱动。
(2)使用默认安装Thonny软件。
(3)打开Thonny软件,打开“运行”菜单下“选择解释器”子菜单。
(4)弹出的对话框如下图所示进行设置(Port or WebREPL选择CH340K的端口)


ESP32-E基于TCP的通信图6


3、ESP32-E刷入micropython固件。
(1)如上图,点击Install or update firmware,打开对话框,如下图所示选择对应端口和刚才下载的固件文件。


ESP32-E基于TCP的通信图7

(2)点击“安装”按钮,等待完成出现“Done”。

(三)使用Thonny编写TCP Server端程序

ESP32-E基于TCP的通信图8

(四)使用Thonny编写TCP Client程序


ESP32-E基于TCP的通信图9

三、资源

(一)TCP Server端代码:
  1. #ESP32运行server.py
  2. import network
  3. import socket
  4. import time
  5. import random
  6. SSID="nana"
  7. PASSWORD="12345678"
  8. port=10001
  9. wlan=None
  10. listenSocket=None
  11. def connectWifi(ssid,passwd):
  12.     global wlan
  13.     wlan=network.WLAN(network.STA_IF)
  14.     wlan.active(True)
  15.     wlan.disconnect()
  16.     wlan.connect(ssid,passwd)
  17.     while(wlan.ifconfig()[0]=='0.0.0.0'):
  18.         time.sleep(1)
  19.     return True
  20. connectWifi(SSID,PASSWORD)                #连接到wifi
  21. ip=wlan.ifconfig()[0]                     #获取IP地址
  22. print(ip,':',port)
  23. server = socket.socket()            #创建socket服务
  24. server.bind((ip,port))              #绑定ip地址
  25. server.listen(5)                    #监听信息
  26. print ('tcp waiting...')
  27. while True:
  28.     conn,addr = server.accept()
  29.     print("new conn:",addr)
  30.     while True:
  31.         conn.send("I am TCP Server.")
  32.         data = conn.recv(1024)
  33.         print("Receive:",data.decode("utf-8"))
  34.         conn.send("Receive:".encode("utf-8") + data)
  35.     server.close()
复制代码
(二)TCP Client端代码
  1. #ESP32运行Client.py
  2. import network
  3. import socket
  4. import time
  5. import random
  6. SSID="nana"
  7. PASSWORD="12345678"
  8. port=10001
  9. wlan=None
  10. def connWifi(ssid,passwd):
  11.    global wlan
  12.    wlan=network.WLAN(network.STA_IF)
  13.    wlan.active(True)
  14.    wlan.disconnect()
  15.    wlan.connect(ssid,passwd)
  16.    while(wlan.ifconfig()[0]=='0.0.0.0'):
  17.        time.sleep(1)
  18.    return True
  19. connWifi(SSID,PASSWORD)                #连接到wifi
  20. ip=wlan.ifconfig()[0]                     #获取IP地址
  21. print('TCP Client IP:',ip)
  22. address = ('192.168.2.178',10001)
  23. conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  24. conn.connect(address)
  25. while True:
  26.     conn.send('I am TCP Clent.')
  27.     print('I am TCP Clent.')
  28.     data = conn.recv(1024)
  29.     print("Receive:",data.decode("utf-8"))
  30.     conn.send("Receive:".encode("utf-8") + data)
  31. conn.close()
复制代码










hmilycheng  高级技师

发表于 2021-6-19 15:33:18

非常详细,点赞!!!!!
回复

使用道具 举报

hnyzcj  版主

发表于 2021-6-19 22:37:27

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主

楼主的其它帖子

上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail