0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ESP8266串口WiFi模块的基本使用和配置教程

开源嵌入式 来源:开源嵌入式 作者:开源嵌入式 2020-12-31 09:53 次阅读

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知识联系起来了。

而近来“物联网”或者说“智能硬件”似乎也火了起来,许多强大的芯片和模块的出现使得联网设备的开发门槛大大降低。正是有了这些为物联网大业铺路的各大厂商们,我等对网络一窍不通的渣渣也能轻松将硬件联网、实现网络通讯。

模块资料大全

在某宝买模块一般都会有相应的资料文档,涵盖使用方法与常见的问题。

开始前的准备

原理图及引脚说明

URXD UART_RXD,接收
UTXD UART_TXD,发送
GPIO 16 外部Reset信号,低电平复位,高电平工作(默认高)
GND GND
VCC 3.3V,模块供电
GPIO 0 工作模式选择:悬空:FlashBoot,工作模式;下拉:UARTDownload下载模式
CH_PD 高电平工作;低电平模块供电关掉
GPIO 2 (1)开机上电时必须为高电平,禁止硬件下拉;(2)内部默认已拉高
Function Description

模块的连线

要让模块上电正常工作只需三处接线: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”,说明模块上电初始化正常。

和某些需要按键进入AT指令模式的蓝牙模块不同,ESP8266上电后就运行在AT指令模式下。

免冷启下载器的坑

记得有一次在实验室用ESP8266时怎么都不能成功上电初始化显示“ready”,AT指令也无法工作。最终把固件烧了一遍又一遍,把模块都“玩坏了”也还是不行,就像见了鬼一样……最终竟然是因为使用了免冷启下载器的原因。后来才知道ESP8266电源要求十分苛刻,必须“稳定纯净”,估计这种“高级下载器”内部电路会造成模块上电时电源不稳定,从而导致上电初始化失败。如果你也遇到同样的问题不妨换个USB-TTL下载器试试。

别不信邪,一些诡异的bug很可能是由某个不起眼的硬件引起的,这很“玄学”。

ESP8266的AT指令

AT指令最早在蓝牙模块上接触过,所谓AT指令实质上就是一些起控制作用的特殊字符串。模块可以通过AT指令控制使用和用源代码API函数开发,前者开发速度快,难度非常低(傻瓜化使用)。后者灵活,难度较大。而我只用过AT指令,所以本文不涉及SDK开发。

aa3ddb32-4adc-11eb-8b86-12bb97331649.jpg

说明:下面仅列举一些最常用的AT指令及用法,指令的详细参数及使用说明请参考官方文档:ESP8266 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是让硬件联网的基础,和其他功能一样,这里仅列举所需的常用指令,更详细指令说明还得查阅文档。

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演示

那如何让模块连接到路由器呢?下面简单列举了一下步骤:

发送AT+CWMODE=1指令配置模块为sta模式(参数1,2,3分别对应模式sta,AP和sta/AP)。

发送AT+CWLAP指令扫描当前附近WiFi,模块会返回可用AP列表。

使用AT+CWJAP="WiFi名称","WiFi密码"连接到指定的路由器,比如我在图书馆的WiFi是 “lib-free-wlan01”,密码是“zhku-lib”,实际连接WiFi发送的指令就是AT+CWJAP="lib-free-wlan01","zhku-lib"。

返回的“WIFI CONNECTED”说明连接成功,“WIFI GOT IP”代表模块分配到了IP。

最后可使用AT+CWQAP断开当前连接的WiFi。

aa784c7c-4adc-11eb-8b86-12bb97331649.jpg

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的客户端列表。

aa95feb6-4adc-11eb-8b86-12bb97331649.jpg

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模块连接到同一个路由器。

aaba753e-4adc-11eb-8b86-12bb97331649.jpg

把WiFi模块和电脑连接,在sscom确定AT指令能正常使用后,就可以开始配置TCP连接了,具体步骤如下:

根据上面“sta模式连接WiFi演示”一节把模块连上WiFi

输入指令AT+CIPMUX=0设置单连接

从“网络调试助手”得知本机IP和端口,输入指令AT+CIPSTART="TCP","192.168.43.140",1234(指令参数分别为连接类型、目标IP地址和端口号)向服务器发起TCP连接请求,握手成功并建立连接后,服务器端的“网络调试助手”就会显示客户端IP和端口信息,此时双方已做好收发数据的准备

输入指令AT+CIPMODE=1开启透传模式

输入命令AT+CIPSEND进入透传模式,此时模块会把所有串口收到的数据都从TCP端口发送至服务器,同样的,从服务器收到的数据也会从模块串口发送出去打印到sscom上。这样WiFi模块就真正成为了连接硬件与网络的桥梁,实现了串口到TCP的协议转换

若要退出透传模式返回AT指令模式,需发送不带回车换行的+++(取消勾选sscom的“发送新行”再发送指令即可)

aadd9a64-4adc-11eb-8b86-12bb97331649.jpg

见识了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模块的一些细节及注意事项

模块使用3.3V供电,一定注意电源的稳定,一些USB转串口模块电源不能满足要求。

模块在连接WiFi后若断电,则会在下一次上电后自动重连。同理,模块在透传模式下断电后,下次上电仍会进入透传模式,不响应AT指令,很容易误以为模块坏了。

如果断开TCP连接时没有实现完整的TCP退出流程,ESP8266 会判断为异常开,对TCP server 进行重连。

AT指令一定以回车换行符” ”结尾,但退出透传模式需发送不带回车换行的+++

关于WiFi模块要写的也就这么多了。把以上的AT指令都自己试一遍、观察效果后,那么ESP8266这个模块的AT指令使用是基本没问题了,然后就可以发挥想象力用模块着手开发更好玩的东西啦~~~

责任编辑:xj

原文标题:ESP8266串口WiFi模块的基本使用

文章出处:【微信公众号:开源嵌入式】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WIFI
    +关注

    关注

    81

    文章

    5160

    浏览量

    199422
  • 串口
    +关注

    关注

    14

    文章

    1483

    浏览量

    74508
  • wifi模块
    +关注

    关注

    60

    文章

    360

    浏览量

    72188
  • ESP8266
    +关注

    关注

    50

    文章

    947

    浏览量

    43931

原文标题:ESP8266串口WiFi模块的基本使用

文章出处:【微信号:KY_QRS,微信公众号:开源嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ESP8266串口WiFi模块 STATION 模式

    ESP8266串口WiFi模块 STATION 模式
    发表于 10-28 13:50

    请问有ESP8266串口WIFI无线模块程序吗?

    谁有51与ESP8266串口WIFI无线模块程序?
    发表于 05-21 18:44

    ESP8266WiFi模块的学习与使用

    基于STM32的ESP8266wifi模块控制多路继电器ESP8266WiFi模块的学习与使用XCOM V2.0串口调试助手下载链接网络调试
    发表于 08-03 07:20

    ESP8266_wifi模块说明书

    ESP8266_WiFi Specifications _ChineseESP8266 wifi模块说明书,中文版
    发表于 12-29 14:16 195次下载

    AirM2M-ESP8266-串口WiFi模块使用详解V2.8

    AirM2M-ESP8266-串口WiFi模块使用详解V2.8
    发表于 02-28 22:53 26次下载

    ESP8266串口WIFI远距离无线模块

    ESP8266串口WIFI 无线模块 WIFI远距离无线模块 穿墙王
    发表于 05-10 10:15 56次下载

    esp8266无线串口模块分析介绍

     ESP8266芯片是一款串口转无线模芯片,内部自带固件,用户操作简单,无需编写时序信号等。ESP8266 系列模组是安信可(Ai-thinker)公司采用乐鑫ESP8266芯片开发的
    发表于 11-03 10:28 1.2w次阅读

    esp8266串口wifi实例

    ESP8266串口WiFi扩展板是深圳四博智联科技有限公司开发的一款基于乐鑫ESP8266的超低功耗的UART-WiFi
    发表于 12-08 13:34 1.8w次阅读

    esp8266中文资料汇总(esp8266引脚图_与单片机连接_串口wifi实例)

    本文首先介绍了esp8266引脚图功能与esp8266特性,其次介绍了 单片机与ESP8266串口连接及最小系统连接与程序分享,最后介绍了esp8
    发表于 05-24 08:36 22.1w次阅读
    <b class='flag-5'>esp8266</b>中文资料汇总(<b class='flag-5'>esp8266</b>引脚图_与单片机连接_<b class='flag-5'>串口</b><b class='flag-5'>wifi</b>实例)

    如何将ESP8266连接到WiFi

    在之前的ESP8266项目中,我简要介绍了ESP8266 WiFi模块,如何开始使用ESP8266和Arduino,
    的头像 发表于 07-29 11:32 8.5w次阅读
    如何将<b class='flag-5'>ESP8266</b>连接到<b class='flag-5'>WiFi</b>

    ESP8266 wifi模块开发汇总

                                  ESP8266 wifi模块开发汇总 ESP8266 wifi
    发表于 11-05 19:21 183次下载
    <b class='flag-5'>ESP8266</b> <b class='flag-5'>wifi</b><b class='flag-5'>模块</b>开发汇总

    STM32-ESP8266wifi模块实现

    1.ESP8266WiFi模块介绍1.1ESP8266wifi 模块低功耗串口WiFi
    发表于 11-19 13:06 77次下载
    STM32-<b class='flag-5'>ESP8266wifi</b><b class='flag-5'>模块</b>实现

    ESP8266 WIFI模块 与PC机联机通信

    硬件准备1:ESP8266(本工程中用的是6脚的)2:STM32F407ZGT63:PC机4:usb转TTL模块(此模块用来和ESP8266连接配置
    发表于 12-06 18:06 24次下载
    <b class='flag-5'>ESP8266</b> <b class='flag-5'>WIFI</b><b class='flag-5'>模块</b> 与PC机联机通信

    ESP8266串口WiFi模块基本使用方法和配置教程

    或局域网通信,实现联网功能。由于本人一直从事医学信息处理与医学物联网设备研发,硬件联网一直以来都是比较麻烦的事情,而通过使用 ESP8266 这款WiFi模块,仅需要通过串口使用AT指
    发表于 12-20 18:48 15次下载
    <b class='flag-5'>ESP8266</b><b class='flag-5'>串口</b><b class='flag-5'>WiFi</b><b class='flag-5'>模块</b>基本使用方法和<b class='flag-5'>配置</b>教程

    ESP8266使用教程之初识

    串口与MCU通信,内置 TCP/IP 协议栈,实现串口WiFi 之间的装换。​ 通过正点原子的 ATK-ESP8266,传统的串口设备只
    发表于 01-04 18:59 80次下载
    <b class='flag-5'>ESP8266</b>使用教程之初识