转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇

实验目的

- 学习ESP8266模块(ESP-01)的使用。
- 进一步学习TPYBoardv10x中UART模块的使用。
- 结合ESP-01模块完成局域网内的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。
http://wiki.ai-thinker.com/_media/aicloud/sdk/ai-thinker_esp8266_dout_aicloud_v0.0.0.6_20170517.7z

安信可科技关于ESP8266相关模组的资料地址。http://wiki.ai-thinker.com/esp8266

AT指令固件其他版本下载。http://wiki.ai-thinker.com/esp8266/sdk

下载烧写工具ESPFlashDownloadTool

http://wiki.ai-thinker.com/_media/esp8266/flash_download_tools_v3.6.4.rar

硬件连接

ESP-01模块的引脚图:

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

接线图:

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

开始烧写

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

打开ESPFlashDownloadTool工具,选择【ESP8266 DownloadTool】。

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

选择好端口,点击【START】开始烧写。

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

第二步:测试AT指令

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

出现乱码的原因,如下:

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

进入AT指令模式

AT指令说明文档、AT固件、烧写工具。http://old.tpyboard.com/download/tool/ESP-01.rar

发送指令:AT

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

查询固件版本

发送指令:AT+GMR

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

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

AT指令 功能
AT+CWMODE_CUR?

查询当前WIFI模式
1 : station 模式
2 : softAP 模式
3 : softAP+station 模式

AT+CWMODE_CUR=1  设置WIFI为station 模式
AT+CWJAP_CUR="essid","password"  连接AP 

.

2、接下来,我们做一个局域网内TCP通信的测试。本地用网络调试助手建立一个TCP Server如下:

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

TCP链接建立,开始发送数据。单路链接时发送指令为AT+CIPSEND=x,x为发送的字节数。出现符号">"后就可以发送数据了。

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

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

接线图:

ESP-01模块 TPYBoard v102
VCC   3V3
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()

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

综上,TCP的测试实验完毕。本实验只是做了一些简单的示例,大家可根据自己的想法结合文档开发出更有意思的作品,比如智能控制开关、智能WIFI小车等。

下载源码: https://github.com/TPYBoard/TPYBoard-v102

基于MicroPython结合ESP8266模块实现TCP通信(AT指令版)的更多相关文章

  1. 【stm32】基于hal库使用野火指南者esp8266 WIFI模块进行TCP传输

    UART.c #include "stm32f1xx_it.h" #include "LED.h" #include "UART.h" #i ...

  2. 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)

    1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...

  3. Prism for WPF再探(基于Prism事件的模块间通信)

    上篇博文链接 Prism for WPF初探(构建简单的模块化开发框架) 一.简单介绍: 在上一篇博文中初步搭建了Prism框架的各个模块,但那只是搭建了一个空壳,里面的内容基本是空的,在这一篇我将实 ...

  4. 【Java TCP/IP Socket】基于NIO的TCP通信(含代码)

    NIO主要原理及使用 NIO采取通道(Channel)和缓冲区(Buffer)来传输和保存数据,它是非阻塞式的I/O,即在等待连接.读写数据(这些都是在一线程以客户端的程序中会阻塞线程的操作)的时候, ...

  5. Python基于socket模块实现UDP通信功能示例

    Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端     import ...

  6. yum安装的Nginx添加第三方模块支持tcp

    需求:生产有个接口是通过socket通信.nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信. 实现方法:Centos7.2下yum直接安装的nginx, ...

  7. 清晰易懂TCP通信原理解析(附demo、简易TCP通信库源码、解决沾包问题等)C#版

    目录 说明 TCP与UDP通信的特点 TCP中的沾包现象 自定义应用层协议 TCPLibrary通信库介绍 Demo演示 未完成功能 源码下载 说明 我前面博客中有多篇文章讲到了.NET中的网络编程, ...

  8. 异步tcp通信——APM.Server 消息推送服务的实现

    消息推送服务 服务器推送目前流行就是私信.发布/订阅等模式,基本上都是基于会话映射,消息对列等技术实现的:高性能.分布式可以如下解决:会话映射可采用redis cluster等技术实现,消息对列可使用 ...

  9. 异步tcp通信——APM.Core 服务端概述

    为什么使用异步 异步线程是由线程池负责管理,而多线程,我们可以自己控制,当然在多线程中我们也可以使用线程池.就拿网络扒虫而言,如果使用异步模式去实现,它使用线程池进行管理.异步操作执行时,会将操作丢给 ...

随机推荐

  1. PHP7.1.X+wordpress+windows,安装Memcached服务

    1.下载安装Memcached 64位系统1.4.4版本:memcached-win64-1.4.4-14.zip 2.解压缩在任意盘符,然后进入文件夹,在文件夹中运行CMD输入以下命令: 1)输入 ...

  2. 【IDEA】(2)---MAC代码模版

    IDEA(2)-MAC代码模版 IDEA提供了许多的自带代码模版,这些模版主要是对于我们经常开发用到的代码制作成一个模版,比如for循环,这个是经常会用到的代码,如果没有代码模版,我们需要一个一个手动 ...

  3. 2018-8-10-win10-uwp-重启软件

    原文:2018-8-10-win10-uwp-重启软件 title author date CreateTime categories win10 uwp 重启软件 lindexi 2018-08-1 ...

  4. Java生鲜电商平台-电商订单系统全解析

    Java生鲜电商平台-电商订单系统全解析 说明:Java生鲜电商平台-电商订单系统全解析主要讲解OMS的内容,设计,开发,架构等知识. 今天分享将会分为以下三个环节来阐述: 1.订单系统的介绍 2.订 ...

  5. jdk api 1.6,1.7,1.8,1.9版本(中文)

    有需要的朋友,请自行到百度云下载 链接:https://pan.baidu.com/s/18WgEZ1WpBz5YexbbgikJcA 提取码:xry4

  6. Xcode 11新建工程.--iOS 13 SceneDelegate适配

    收录文章::::::::::::::: iOS 13 适配要点总结 在Xcode 11 创建的工程,运行设备选择 iOS 13.0 以下的设备,运行应用时会出现黑屏现象.原因: Xcode 11 默认 ...

  7. 【转载】Gradle for Android 第五篇( 多模块构建 )

    Android studio不仅允许你为你的app和依赖库创建模块,同时也可为Android wear,Android TV,Google App Engine等创建模块,而这些单独的模块又可以在一个 ...

  8. Python用Pandas读写Excel

    Pandas是python的一个数据分析包,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速便捷地处理数据的函数和方法. Pandas官方文档 ...

  9. Python对csv文件的读写操作

    python内置了csv模块,用它可以方便的操作csv文件. 1.写文件 (1)写文件的方法一 import csv # open 打开文件有多种模式,下面是常见的4种 # r:读数据,默认模式 # ...

  10. WC个人项目

    一.Github项目地址: https://github.com/JakeYi/WC 二.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) ...