基于Python结合ESP8266模块如何实现TCP通信

发布时间:2022-01-13 10:40:33 作者:iii
来源:亿速云 阅读:480

这篇文章主要讲解了“基于Python结合ESP8266模块如何实现TCP通信”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于Python结合ESP8266模块如何实现TCP通信”吧!

所需元器件

- ESP-01 WIFI模块 1个
- TPYBoard v102板子 1块
- USB转TTL 1个
- micro USB数据线 1条
- 杜邦线 若干

本实验采用TPYBoardv102串口AT指令的方式,去连接控制ESP8266模块(型号ESP-01)。

第一步:烧写AT指令的固件

下载AT指令相应固件

这里我下载了一个AiCloud 2.0 AT (512+512map)版本的,版本号:v0.0.0.6。


下载烧写工具ESPFlashDownloadTool

硬件连接

ESP-01模块的引脚图:

基于Python结合ESP8266模块如何实现TCP通信

基于Python结合ESP8266模块如何实现TCP通信

烧写固件还需用到USB转TTL,ESP-01模最好使用其他外部器件进行供电。这里,我用的TPYBoardv102开发板。但是,别忘记了开发板与TTL之间需要共地。

接线图:

ESP-01模块TPYBoard v102
|VCC3V3
GNDGND          
CH_PD       3V3          
GPIO 0悬空  
GPIO 2  悬空 
TXDX2(UART 4 ) 
RXDX1(UART 4 ) 

开始烧写

USB转TTL插上电脑,设备管理器查看端口号。

基于Python结合ESP8266模块如何实现TCP通信

我这里下载的是合成的固件,所以地址直接设置为0x00000,其他设置参考如下:

 基于Python结合ESP8266模块如何实现TCP通信

出现等待上电同步,这时给ESP-01模块上电,或者复位一下,等待下载成功。

基于Python结合ESP8266模块如何实现TCP通信

第二步:测试AT指令

烧写固件完成之后,将GPIO 0 连接的线拔掉,使其悬空,ESP-01模块会进入正常模式。
打开串口助手工具 http://old.tpyboard.com/download/tool/198.html,默认波特率115200。
ESP-01模块启动时,会输出一堆乱码。(其实不是乱码,是一些内部信息)如下:

基于Python结合ESP8266模块如何实现TCP通信

输出的内部信息,我们可以忽略掉,只要输出ready,就说明模块一切正常。

进入AT指令模式

AT指令说明文档、AT固件、烧写工具。

发送指令:AT

(注意:后面需跟一个回车换行,选择在工具中勾选加回车换行)
模块返回AT\\r\\nOK,说明模块已经成功进入AT指令模式。

基于Python结合ESP8266模块如何实现TCP通信

第三步:局域网TCP通信测试

1、首先,让ESP-01接入我们的路由器。

基于Python结合ESP8266模块如何实现TCP通信

ESP-01作为TCP Client连接Server。发送指令AT+CIPSTART="TCP","192.168.101.116",80

基于Python结合ESP8266模块如何实现TCP通信

模块会把收到的数据自动通过串口透传过来。

以上,我们都是结合USB转TTL实现的AT指令转发。接下来,我们通过TPYBoardv102开发板实现上面的功能。

接线图:

ESP-01模块TPYBoard v102
VCC  
GND GND 
CH_PD 3V3 
GPIO 0 |悬空 
GPIO 2悬空 
TXD X2(UART 4 )
RXD X1(UART 4 )

程序源码:

from pyb import UART
from pyb import LED

#等待ESP-01模块初始化,忽略启动时的内部信息
pyb.delay(1000)

ESP_UART = UART(4,115200,timeout=100)

def sendToUart(msg):
    ESP_UART.write(msg+'\r\n')

CWMODE_CUR = 'AT+CWMODE_CUR=1'
CWJAP_CUR = 'AT+CWJAP_CUR="TurnipSmart","turnip2016"'
CIPSTART = 'AT+CIPSTART="TCP","192.168.1.116",80'
CIPSEND = 'AT+CIPSEND=%s'
msg = 'Hello,I am TPYBoard.'

if __name__  == '__main__':
    sendToUart('AT')
    while True:
        if ESP_UART.any()  > 0:
            buf = ESP_UART.read().decode().replace('\r','').replace('\n','').replace(' ','')
            print(buf)
            if buf.find('busyp') > -1 or buf.find('ERROR') > -1:
                # AT指令执行失败
                # 结束程序排查原因
                break
            elif buf.find('ATOK') > -1:
                # 说明AT指令执行成功
                # 成功进入AT指令模式
                # 设置WIFI模式为sta模式
                sendToUart(CWMODE_CUR)
            elif buf.find(CWMODE_CUR) > -1:
                # 设置sta模式成功,连接AP
                sendToUart(CWJAP_CUR)
                LED(1).on()
            elif buf.find('WIFIGOTIP') > -1:
                # 连接AP成功
                # 开始连接TCP Server
                pyb.delay(150)
                sendToUart(CIPSTART)
                LED(2).on()
            elif buf.find(CIPSTART) > -1:
                # 连接TCP Server成功,发送数据
                CIPSEND = CIPSEND % str(len(msg))
                sendToUart(CIPSEND)
                LED(3).on()
            elif buf.find('>') > -1:
                # 发送数据
                sendToUart(msg)
                LED(4).on()

基于Python结合ESP8266模块如何实现TCP通信

注意:ESP-01模块上电启动时电流比较大,会导致板子的REPL无反应。关闭putty等工具,按板子的RST复位一下,再连接就好。最好方式采用外部电源给ESP-01模块供电,注意要与板子共地。

感谢各位的阅读,以上就是“基于Python结合ESP8266模块如何实现TCP通信”的内容了,经过本文的学习后,相信大家对基于Python结合ESP8266模块如何实现TCP通信这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. epoll实现TCP通信
  2. poll实现IO复用,TCP通信

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python tcp

上一篇:如何用Python自制微信远程智能温湿度计

下一篇:Python如何实现APP自动化发微信群消息

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》