码迷,mamicode.com
首页 > 其他好文 > 详细

ESP8266 01S WIFI 网络

时间:2019-01-20 20:52:10      阅读:460      评论:0      收藏:0      [点我收藏+]

标签:tst   串口数据   分享图片   步骤   station   服务器端   ip协议   struct   注意   

ESP8266的AT指令

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

 

 

 

AT+RST 重启

AT+RESTORE  恢复初始化,和手机恢复出厂一样

AT+GMR 查看版本信息

 

   

 

 

AT+UART=9600,8,1,0,0  "修改波特率、也叫设置串口配置"8是数据位8字节

AT+UART=115200,8,1,0,0  "修改波特率、也叫设置串口配置"8是数据位8字节

AT+CWMODE?   查询工作模式  

AT+CWMODE_DEF=1   配置WiFi工作模式

1.Station (客户端模式,模块可以连接到路由器)

2.AP (接入点模式,相当于路由器)

3.Station+AP (两种模式共存)")

 AT+CWJAP?   查询当前连接的路由器

 AT+CIFSR  查询IP地址、MAC地址

 AT+CWJAP="wifi","123456789"  连接路由器(名称+密码)

AT+CIPSERVER=1,5000   开启TCP服务

AT+CIPSERVER=0,5000   开启TCP服务

 

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。

 

 

 

AT+CWSMARTSTART   启动智能配网 (使用微信可以云服务,安信可平台)

AT+CWSMARTSTOP  停止智能配网    (使用微信可以云服务,安信可平台)

AT+CLDSTART   开启云服务  (使用微信可以云服务,然后用安卓客户端)

AT+CIPMUX=1   设置成多连接 ,才能开启TCP服务

 

END
 
 

技术分享图片

说明:下面仅列举一些最常用的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演示

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

  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”结尾,但退出透传模式需发送不带回车换行的 +++

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

ESP8266 01S WIFI 网络

标签:tst   串口数据   分享图片   步骤   station   服务器端   ip协议   struct   注意   

原文地址:https://www.cnblogs.com/gaobo543013306/p/10296021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!