回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

ESP32-E基于TCP的通信 简单

头像 娜娜2012 2021.06.18 866 0

一、项目介绍

材料清单

  • FireBeetle Board ESP32-E开发板 X1 链接

本项目实现了ESP32-E开发板通过TCP建立连接,进行通信。

FireBeetle ESP32-E是一款基于ESP-WROOM-32E双核芯片的主控板,它专为IoT设计。

它具有WiFi+Bluetooth4.0无线双模模组,支持WIFI和蓝牙双模通信,具有GDI显示接口,单线连接显示屏板载充电电路以及PH2.0锂电池接口

project-image

并具有体积小巧、超低功耗、板载充电电路、接口易用等特性。可灵活的用于家庭物联网改装、工业物联网改装、可穿戴设备等等。

通过和IFTTT等物联网平台的连接,你可轻松制作出你独有的特色物联网智能家居系统。

FireBeetle ESP32-E深度支持ArduinoIDE编程,并且即将支持Scratch图形化编程及MicroPython编程。

project-image

二、制作过程

TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。

以下是TCP协议建立连接的过程,也就是我们通常说的三次握手。

project-image

步骤1 安装编程工具Thonny

1、打开Thonny官网https://thonny.org/,根据操作系统选择相应的版本下载软件。

笔者使用的Windows10操作系统,点击windows进行下载。

project-image

步骤2 刷micropython固件

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

project-image

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

2、安装驱动及Thonny软件。

(1)将ESP32-E连接到电脑USB口,安装CH340K驱动。

(2)使用默认安装Thonny软件。

(3)打开Thonny软件,打开“运行”菜单下“选择解释器”子菜单。

(4)弹出的对话框如下图所示进行设置(Port or WebREPL选择CH340K的端口)

project-image

3、ESP32-E刷入micropython固件。

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

project-image

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

步骤3 TCP Server端程序

project-image

步骤4 TCP Client程序

project-image

资源

TCP Server端代码:

代码
#ESP32运行server.py
import network
import socket
import time
import random


SSID="nana"
PASSWORD="12345678"
port=10001
wlan=None
listenSocket=None

def connectWifi(ssid,passwd):
    global wlan
    wlan=network.WLAN(network.STA_IF)         
    wlan.active(True)                         
    wlan.disconnect()                         
    wlan.connect(ssid,passwd)                 
    while(wlan.ifconfig()[0]=='0.0.0.0'):
        time.sleep(1)
    return True
connectWifi(SSID,PASSWORD)                #连接到wifi
ip=wlan.ifconfig()[0]                     #获取IP地址
print(ip,':',port)
server = socket.socket()            #创建socket服务
server.bind((ip,port))              #绑定ip地址
server.listen(5)                    #监听信息
print ('tcp waiting...')

while True:
    conn,addr = server.accept()
    print("new conn:",addr)

    while True:
        conn.send("I am TCP Server.")  
        data = conn.recv(1024)
        print("Receive:",data.decode("utf-8"))
        conn.send("Receive:".encode("utf-8") + data)        
    server.close()

TCP Client端代码

代码
#ESP32运行Client.py
import network
import socket
import time
import random


SSID="nana"
PASSWORD="12345678"
port=10001
wlan=None


def connWifi(ssid,passwd):
   global wlan
   wlan=network.WLAN(network.STA_IF)         
   wlan.active(True)                         
   wlan.disconnect()                         
   wlan.connect(ssid,passwd)                 
   while(wlan.ifconfig()[0]=='0.0.0.0'):
       time.sleep(1)
   return True

connWifi(SSID,PASSWORD)                #连接到wifi
ip=wlan.ifconfig()[0]                     #获取IP地址
print('TCP Client IP:',ip)


address = ('192.168.2.178',10001)
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn.connect(address)
while True:
    conn.send('I am TCP Clent.')
    print('I am TCP Clent.')
    data = conn.recv(1024)
    print("Receive:",data.decode("utf-8"))
    conn.send("Receive:".encode("utf-8") + data)
conn.close()

评论

user-avatar