ESP8266串⼝模块的基本使⽤
ESP8266是⼀款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争⼒的封装尺⼨和超低能耗技术,专为移动设备和物联⽹应⽤设计,可将⽤户的物理设备连接到Wi-Fi ⽆线⽹络上,进⾏互联⽹或局域⽹通信,实现联⽹功能。
虽然“WiFi门锁”⼀直拖着还没弄好,但WiFi模块却玩了很久。是时候介绍下ESP8266的基本使⽤和配置了。
内容简介
古韵遗风让硬件联⽹⼀直以来都是⽐较⿇烦的事情,⽽通过使⽤ ESP8266 这款WiFi模块,仅需要通过串⼝使⽤AT指令控制,就能满⾜⼤部分的⽹络功能需求。本⽂通过简单介绍及应⽤实例,让刚接触WiFi模块的读者了解模块的⼤致使⽤⽅法。
ESP8266简介
ESP8266是上海乐鑫信息科技设计的低功耗WiFi芯⽚,集成完整的TCP/IP协议栈和MCU。⽽ESP8266模块是深圳安信可公司基于
ESP8266芯⽚研发(增加必要外围电路、串⼝flash、板载天线等)的串⼝WiFi模块,成本低、使⽤简便、功能强⼤。
硬件与⽹络的桥梁
和串⼝蓝⽛模块⼀样,串⼝WiFi模块也是扩展单⽚机功能的⼜⼀神器。在没有接触8266之前,我对单⽚机如何联⽹的问题很是好奇,在书⾥看过⽤笨重繁琐的以太⽹模块实现,但⼀点都不帅好吧。⽽⼩巧的 ESP8266 WiFi模块通过串⼝AT指令与单⽚机通讯,实现串⼝透传,⾮常好上⼿。
透传,⼜称透明传输,具体来说就是“输⼊即输出(如从WiFi模块串⼝输⼊的字符会透传到服务器端)”,数据不改变,不同协议之间的转换(如串⼝到WiFi、蓝⽛等)由模块完成。使⽤者⽆需关⼼内部具体实现,因此模块对于使⽤者是“透明的”、似乎不存在的(因为可⽆视中间的实现原理)。⼀个⾼度封装的模块,应该隐藏内部实现细节,仅对外提供使⽤接⼝。
把硬件联⽹之后,就再也不是“玩单机”了。配合服务器端的Socket⽹络编程,可以玩许多东西。所以我觉得WiFi模块是连接软件(⽹络编程)与硬件(单⽚机)的桥梁,把我所学的单⽚机和Web知识联系起来了。
六爻入门⽽近来“物联⽹”或者说“智能硬件”似乎也⽕了起来,许多强⼤的芯⽚和模块的出现使得联⽹设备的开发
门槛⼤⼤降低。正是有了这些为物联⽹⼤业铺路的各⼤⼚商们,我等对⽹络⼀窍不通的渣渣也能轻松将硬件联⽹、实现⽹络通讯。
模块资料⼤全
在某宝买模块⼀般都会有相应的资料⽂档,涵盖使⽤⽅法与常见的问题。骚年,我这有⼀个宝贝要给你:
开始前的准备
原理图及引脚说明
Function Description
URXD UART_RXD,接收
UTXD UART_TXD,发送
GPIO 16外部Reset信号,低电平复位,⾼电平⼯作(默认⾼)
GND GND
Function Description
VCC 3.3V,模块供电
GPIO 0⼯作模式选择:悬空:FlashBoot,⼯作模式;下拉:UARTDownload,下载模式
CH_PD⾼电平⼯作;低电平模块供电关掉
GPIO 2(1)开机上电时必须为⾼电平,禁⽌硬件下拉;(2)内部默认已拉⾼
模块的连线
要让模块上电正常⼯作只需三处接线:VCC和CH_PD接3.3电源正极,GND接地。刚好USB-TTL下载模块上有3.3V的电源。⽽使⽤串⼝
调试要再把模块与下载器的TXD和RXD交叉连接。这样⼀来WiFi模块就能与电脑连接、⽤串⼝助⼿进⾏测试了。
模块上电
电脑安装好USB-TTL模块的驱动后,USB⼝插上模块,在设备管理器查看串⼝号后,打开串⼝调试⼯具sscom,串⼝号选择模块对应的,
默认波特率115200,数据-停⽌-校验-流控:8-1-None-None,勾选“发送新⾏”(⼀定⼀定要记得勾选“发送新⾏”,否则WiFi⽆法识
别AT指令),点击“打开串⼝”按钮,然后将CH_PD引脚的3.3V电源断了重接进⾏复位,若串⼝打印乱码后看到“ready”,说明模块上
电初始化正常。双球开奖号码玩法
免冷启下载器的坑
记得有⼀次在实验室⽤ESP8266时怎么都不能成功上电初始化显⽰“ready”,AT指令也⽆法⼯作。最终把固件烧了⼀遍⼜⼀遍,把模块
都“玩坏了”也还是不⾏,就像见了⿁⼀样……最终竟然是因为使⽤了免冷启下载器的原因。后来才知道ESP8266电源要求⼗分苛刻,必
须“稳定纯净”,估计这种“⾼级下载器”内部电路会造成模块上电时电源不稳定,从⽽导致上电初始化失败。如果你也遇到同样的问题不
妨换个USB-TTL下载器试试。
别不信邪,⼀些诡异的bug很可能是由某个不起眼的硬件引起的,这很“⽞学”。
ESP8266的AT指令
AT指令最早在蓝⽛模块上接触过,所谓AT指令实质上就是⼀些起控制作⽤的特殊字符串。模块可以通过AT指令控制使⽤和⽤源代码API函
数开发,前者开发速度快,难度⾮常低(傻⽠化使⽤)。后者灵活,难度较⼤。 ⽽我只⽤过AT指令,所以本⽂不涉及SDK开发。
说明:下⾯仅列举⼀些最常⽤的AT指令及⽤法,指令的详细参数及使⽤说明请参考官⽅⽂档:。
基础AT指令
指令描述
AT测试AT启动
AT+RST重启模块
AT+GMR查看版本信息
AT 是最常⽤的指令,⽤于测试模块能否正常接受指令。在sscom中向串⼝发送指令 AT ,若收到模块返回的 OK 则说明模块的AT指令可正常⼯作。发送 AT+GMR 可查看AT指令及SDK的版本号,我当前使⽤的AT指令是V1.1.0.0的最新版,⼀般最新版指令会增加⼀些新功能,可随时关注官⽅的更新。
WiFi功能AT指令
WiFi是让硬件联⽹的基础,和其他功能⼀样,这⾥仅列举所需的常⽤指令,更详细指令说明还得查阅⽂档。
指令描述
惊异的近义词电脑连接WIFI显示无INTERNET
AT+CWMODE设置WiFi模式(sta/AP/sta+AP)
AT+CWLAP扫描附近的AP信息
AT+CWJAP连接AP
AT+CWQAP与AP断开连接
AT+CWSAP设置ESP8266 softAP配置
AT+CWLIF获取连接到 ESP8266 softAP 的 station 的信息
关于WiFi模式这⾥要说明⼀下,sta模式下模块相当于客户端,像我们⼿机平板⼀样是要去连接路由器的,⽽AP模式下模块相当于路由器,是发射WiFi被别⼈连的。ESP8266⽀持两种模式并存(模块出⼚默认的是AP模式) 。另外,扫描WiFi指令 AT+CWLAP 只能在sta模式下使⽤,否则会报ERRO错误, AT+CWJAP 和 AT+CWQAP 指令也同理。
sta模式连接WiFi演⽰
那如何让模块连接到路由器呢?下⾯简单列举了⼀下步骤:
1. 发送 AT+CWMODE=1 指令配置模块为sta模式(参数1,2,3分别对应模式sta,AP和sta/AP)。
2. 发送 AT+CWLAP 指令扫描当前附近WiFi,模块会返回可⽤AP列表。
3. 使⽤ AT+CWJAP="WiFi名称","WiFi密码" 连接到指定的路由器,⽐如我在图书馆的WiFi是 “lib-free-wlan01”,密码是“zhku-lib”,
实际连接WiFi发送的指令就是 AT+CWJAP="lib-free-wlan01","zhku-lib" 。
4. 返回的“WIFI CONNECTED”说明连接成功,“WIFI GOT IP”代表模块分配到了IP。
5. 最后可使⽤ AT+CWQAP 断开当前连接的WiFi。
AP模式参数设置演⽰
连完WiFi那接下来就“开WiFi”吧!AP模式和⼿机开热点⼀样,只需设置WiFi名称和密码即可。同样的先使⽤ AT+CWMODE=2 指令配置模块为AP模式,然后发送 AT+CWSAP="ESP8266","12345678",3,4 设置AP的ssid为“ESP8266”,密码12345678,最后两个参
数3和4分别表⽰信道和加密⽅式。⼿机连上模块的WiFi,使⽤ AT+CWLIF 可查看当前连接到AP的客户端列表。
TCP/IP相关AT指令
传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是⼀种⾯向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机⽹络OSI模型中,它完成第四层传输层所指定的功能,⽤户数据报协议(UDP)是同⼀层内另⼀个重要的传输协议。
在因特⽹协议族(Internet protocol suite)中,TCP层是位于IP层之上,应⽤层之下的中间层。不同主机的应⽤层之间经常需要可靠的、像管道⼀样的连接,但是IP层不提供这样的流机制,⽽是提供不可靠的包交换。 ——
我们常说互联⽹互联⽹,那两个连接到互联⽹的设备该如何相互“交流”呢?TCP连接就是其中⼀种最常⽤的⽅式。TCP是⾯向连接的传输层协议,通信双⽅都要实现TCP协议,其中⼀⽅只需⽬标ip地址和端⼝号就能发起连接,连接⼀旦建⽴,就像在双⽅之间拉了⼀条管⼦,管⼦两端可进⾏全双⼯(双向同时收发)通信。
TCP是传输层协议,是在⽹络层IP协议的基础上封装⽽来。⽽这些封装的实现细节也是与我们⽆关,我们只需使⽤系统所提供的相关接
⼝“拿来即⽤”,⽐如⽹络编程中的Socket。ESP8266模块中也实现了TCP/IP协议栈,模块作为客户端可轻松使⽤AT指令向服务端发起TCP连接。连接TCP服务器并开启透传模式后,模块串⼝收到的数据就会通过TCP连接透传到服务端,这样就完成了数据从硬件串⼝通过⽹络到程序进程的传输,实现软硬结合。
指令描述
AT+CIPSTATUS查询⽹络连接信息
AT+CIPMUX设置多连接模式
AT+CIPSTART建⽴TCP连接UDP传输或者SSL连接
AT+CIPCLOSE关闭TCP/UDP/SSL传输
AT+CIPMODE设置透传模式
AT+CIPSEND发送数据
透传模式下WiFi模块与服务器TCP⽹络通讯演⽰
讲的再多,还不如亲⼿体验⼀下如何⽤WiFi模块连接TCP服务器,体会TCP/IP相关AT指令的具体使⽤。⾸先我们需要⼀个TCP服务器,利⽤调试⼯具“⽹络调试助⼿”(软件在资料包中)即可创建⼀个TCP服务器,实现服务端对指定端⼝监听TCP连接请求,当然也可以⾃⼰写程序实现,为了简便这⾥⽤现成的就好。
打开“⽹络调试助⼿”,左侧选择“TCP服务器”,输⼊⾃定的端⼝号(1024-65535),点击“连接”按钮开始监听本机TCP连接请求。在进⾏下⼀步之前,请确保电脑和WiFi模块连接到同⼀个路由器。
奉献演讲稿把WiFi模块和电脑连接,在sscom确定AT指令能正常使⽤后,就可以开始配置TCP连接了,具体步骤如下:
1. 根据上⾯“sta模式连接WiFi演⽰”⼀节把模块连上WiFi
2. 输⼊指令 AT+CIPMUX=0 设置单连接
3. 从“⽹络调试助⼿”得知本机IP和端⼝,输⼊指令 AT+CIPSTART="TCP","192.168.43.140",1234(指令参数分别为连接类型、⽬标IP地址
和端⼝号)向服务器发起TCP连接请求,握⼿成功并建⽴连接后,服务器端的“⽹络调试助⼿”就会显⽰客户端IP和端⼝信息,此时双⽅已做好收发数据的准备
4. 输⼊指令 AT+CIPMODE=1 开启透传模式
5. 输⼊命令 AT+CIPSEND 进⼊透传模式,此时模块会把所有串⼝收到的数据都从TCP端⼝发送⾄服务器,同样的,从服务器收到的数据
也会从模块串⼝发送出去打印到sscom上。这样WiFi模块就真正成为了连接硬件与⽹络的桥梁,实现了串⼝到TCP的协议转换
6. 若要退出透传模式返回AT指令模式,需发送不带回车换⾏的 +++ (取消勾选sscom的“发送新⾏”再发送指令即可)
见识了TCP透传的强⼤,只要再稍微学习⼀下socket⽹络编程,那么对于通过单⽚机串⼝收发数据实现的功能,现在都可以通过⾃⼰编写服务器上的TCP程序来实现。当我第⼀次在命令⾏看到打印的串⼝数据、体验到⽹络互通的魅⼒时,我就知道——我的“WiFi门锁”有戏了!
其他常⽤指令
除了上⾯列举的主要功能指令,ESP8266 模块还有⼀些常⽤的指令:
指令描述
AT+CIOBAUD设置串⼝波特率
AT+SAVETRANSLINK保存透传到 Flash
AT+CWSTARTSMART开启 SmartConfig
AT+CWSTOPSMART停⽌ SmartConfig
AT+CIOBAUD 指令⽤于设置串⼝波特率,⽰例: AT+CIOBAUD=9600 (设置波特率为9600)。 设置好TCP连接信息后通
过 AT+SAVETRANSLINK 指令把TCP连接透传保存到Flash,掉电不丢失。重新上电后模块会⾃动联⽹建⽴TCP连接后进⼊透传模式,实现了真正意义上的透传,⽰例: AT+SAVETRANSLINK=1,"192.168.43.140",1234,"TCP" 。⽽ AT+CWSTARTSMART 和 AT+CWSTOPSMART 则时⽤来实现智能配置(Smart Config)的。
注意事项
使⽤WiFi模块的⼀些细节及注意事项
1. 模块使⽤3.3V供电,⼀定注意电源的稳定,⼀些USB转串⼝模块电源不能满⾜要求。
2. 模块在连接WiFi后若断电,则会在下⼀次上电后⾃动重连。同理,模块在透传模式下断电后,下次上电仍会进⼊透传模式,不响应AT
指令,很容易误以为模块坏了。
3. 如果断开TCP连接时没有实现完整的TCP退出流程,ESP8266 会判断为异常开,对TCP server 进⾏重连。
4. AT指令⼀定以回车换⾏符”\r\n”结尾,但退出透传模式需发送不带回车换⾏的 +++
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论