ESP8266WIFI模块作为服务端与电脑进行TCP透传通信 ESP8266WIFI模块作为服务端与电脑由python进行辅助TCP透传通信

一、学习ESP8266的连线(与USB转TTL)和其基本指令,将其设置为服务端

        1、ESP8266与USB转TTL模块的连线后跟电脑进行串口通信

        1.1、ESP8266WIFI的连线

                USB转TTL模块                 ESP8266WIFI

                        5V                -----                VCC

                        TXD             -----                RXD

                        RXD             -----                TXD

                        GND             -----                GND

                                             -----                RST【复位(低电平有效),这里可不接】

                                             -----                IO_0【下载:低运行:悬空或者高,这里可不接】

        1.2、ESP8266WIFI通过串口与电脑通信

                在电脑上打开串口i调试助手,这里用的是正点原子的串口调试助手,软件下载地址:

        串口调试助手软件(ATK-XCOM) 版本:v3.0 — 正点原子资料下载中心 1.0.0 文档

        打开调试助手,选择CH340的串口,波特率选择为115200(ESP8266WIFI的默认串口波特率):

        1.3、认识ESP8266WIFI部分指令集

                首先了解ESP8266指令集(这里只写一些将ESP8266配置通信的指令)

                【注:以下指令除了+++以外,指令后面都要携带\r\n结尾】,在串口助手勾上发送新行就行(注意+++指令时要取消此勾)

                AT【测试指令】

                AT+RST【模块复位】

                AT+CWMODE=11:Station 模式;2:SoftAP 模式;3:SoftAP+Station 模式】

                AT+CIPMUX=1【将模块配置为多连接(即多个设备可连)】

                AT+CWJAP="wifi名称","wifi密码"【将模块连接到该WIFI】

                AT+CIPSTART="TCP","IPv4地址",端口号【将模块做为客户端,连接到该服务端】

                AT+CIPMODE=1【开启透传】

                AT+CIPSEND【开始传数据,会返回一个>说明可以传数据了】

                AT+CIPSERVER=1,端口号 【1代表开始服务器模式】

                AT+CIPSEND=0,30【对0号客户端开启数据传输,当积累的字符数量到达30个时一起发送到0号客户端,然后退出对0号客户端的数据传输】

                +++【提前退出传输数据】

        1.4、串口测试ESP8266WIFI

                连接好模块之后打开在串口助手中打开串口:

                依次输入测试指令:AT

                返回OK说明连接成功了!

        1.5、配置ESP8266WIFI为服务端

                在此之前我将创建一个手机热点让电脑和ESP8266WIFI连接上该热点:

                名称"Yc";密码:"6789012345"

                电脑连接上该热点:

                

                ESP8266WIFI连接上该热点,在串口助手中依次输入:

                AT

                AT+RST

                AT+CWMODE=1

                AT+CWJAP="Yc","6789012345"

                AT+CIPMUX=1

                AT+CIPSERVER=1,6000

                AT+CIFSR

                此时可多连接的服务端就创建好了,记住服务端的IP地址:"192.168.98.168"

        和端口号:6000

                到此对于模块服务端的配置已经完成了,下一步就是在电脑上的客户端连接并通信了。

二、在电脑上创建客户端通过串口与ESP8266WIFI模块通信

        2.1、利用Python中的socket包写一个客户端与ESP8266WIFI模块进行TCP连接和通信

from socket import *
# 客户端
IP = '192.168.98.168'
PORT = 6000
DATA_LEN = 50
data_socket = socket(AF_INET, SOCK_STREAM)
print('开始连接')
data_socket.connect((IP, PORT))
print('Connected to server')
input_keyboard = str()
while input_keyboard != 'exit':
 send_data = input('需要发送的数据:')
 data_socket.send(send_data.encode('utf-8'))
 receive_data = data_socket.recv(DATA_LEN).decode('utf-8')
 print(f'收到的数据:{receive_data}')
print('服务端已关闭')

        运行代码发送测试数据:

        成功接收数据,现在由ESP8266WIFI模块发送数据:

        首先发送指令(开始传输数据,由+++指令结束数据的传输)

        AT+CIPSEND=0,30

        至此实现了ESP8266与电脑的无线透传了,至于数据的处理在python上还是很好操作的,

然后就是我发现,每次ESP8266WIFI模块发出信息之后是都需要先AT+CIPSEND=0,30\r\t重新开启发送数据,提前退出测试用+++

三、过程中遇到的问题

        3.1、对于1.1的接线问题一开始用的是3.3v电压发现模块不正常工作于是换成了5v供电,原因可能是因为3.3v的电压不稳定吧,然后就是USB-TTL最好直接连接到电脑,尽量不要经过USB拓展坞或者延长线,我当时也遇到过这个问题com口检测突然有突然没的,直接电脑就没有这个问题了。

        3.2、对于1.5小节,我本意不是将ESP8266作为服务端的,一开始想在电脑上建立服务端让8266作为客户端去连接的但是在连接电脑服务端时AT+CIPSTART="TCP","IPv4地址",端口号出现了ERROR CLOSED报错,在网上查了两个办法但是都没有解决:

        1是:服务端的IP地址和8266的网段不一样,我更改后依旧报错

        2是:关闭电脑的防火墙,我关闭后依旧没用

        因此我就选择了8266作为服务端了,能传数据就行,变着法解决。

        3.3,对于我为什么用python创建客户端呢,因为我一开始想用正点原子的ATK-XNET网络调试助手创建客户端的但是连不上,我想起我学过Python的socket可以建立客户端和服务端而且代码之前的还在,所以我就用的这个。

        至此完成了与电脑的TCP通信,以上仅为个人学习的过程不涉及太难的东西,至于上面的问题如果大佬看到请各位大佬指教一下哈感谢。

作者:qq_53558841原文地址:https://blog.csdn.net/qq_53558841/article/details/140851105

%s 个评论

要回复文章请先登录注册