ESP8266WIFI模块作为服务端与电脑进行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通信,以上仅为个人学习的过程不涉及太难的东西,至于上面的问题如果大佬看到请各位大佬指教一下哈感谢。

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值