esp8266 wifi模块的使用
esp8266 可以配置AP模式,和Station 模式,AP 就是我们平时所说的热点,Station 则是前面说的连接 AP 的设备
ESP8266 还有第三种模式:AP+Station,即:将 AP 和 Station 的功能合二为一,但是应用的场景不多,这里不做展示。当 ESP8266 设置为 AP 模式时,其他设备可以接入该热点,最多支持 4 台 Station 设备接入。AP 模式也是 ESP8266 默认的模式。
最大波特率 4608000bps。
参考学习网站
ESP8266配置透传模式(AT指令)
https://blog.csdn.net/qq_36955622/article/details/119380360
STM32物联网实战教程(一)—ESP8266的AT指令集详解
https://blog.csdn.net/qq_39400113/article/details/107721178
STM32物联网实战教程(二)—MQTT协议简介
https://blog.csdn.net/qq_39400113/article/details/107650715
STM32物联网实战教程(七)—MQTT协议发布消息和发布确认
https://blog.csdn.net/qq_39400113/article/details/107685606
【STM32】ESP8266 AT指令
https://blog.51cto.com/dlican/3739310#22__21
配置记录:
AT+CWMODE=1
OK
AT+CWJAP="myLink","mynight223"
WIFI CONNECTED
WIFI GOT IP
AT+CIPSTART="TCP","192.168.0.106",8080
CONNECT
OK
AT+CIPMODE=1
OK
AT+CIPSEND
OK
>
1、设置WIFI模式为AP模式,也就是充当热点模式(AT+CWMODE=2)
另: AT+CWMODE=1 为 Station 模式,AT+CWMODE=3 位 AP+Station 模式
2、设置AP热点属性(AT+CWSAP=AT+CWSAP_DEF="ESP8266-XSD","12345678",5,3)
其含义为:热点名为ESP8266-XSD,密码为12345678,使用通道5,加密方式为 WPA2_PSK,这里的通道对应的就是不同的射频频率,如果同一空间内存在相同通道的 WIFI 信号,将会产生干扰,影响上网质量,因此可以设置通道来避免这种干扰,常用的通道有 1、6、11,因为这三个通道互不产生干扰
设置为Station 模式(AT +CWMODE=1,AT +CWJAP)
该模式是平时应用最多的模式,因为物联网设备需要连接到家中路由才可以接入外网,此时设备就作为 Station 连接到 AP 热点。设置 Station 并连接 AP 流程如下:
1.设置 WIFI 模式为 Station(AT+CWMODE=1)
2.连接到家中路由器(AT+CWJAP="liuyao","liuyao1001")
使用TCP实现局域网内的设备通信
5.1建立TCP连接(AT+CIPSTART)
TCP实现局域网内的设备通信时先要让ESP8266连接到家中的热点。该条指令可以指定建立连接的协议类型,通常使用的有两种:TCP和UDP。我们先打开网络调试助手,并将其设置为TCP Server端,具体设置如下:
接着发送AT指令建立 TCP 连接:AT+CIPSTART="TCP","192.168.0.103",8080,成功连接会提示CONNECT,接着使用发送指令:AT+CIPSEND=14,其中14是发送数据的长度,该指令发送完成后,接收窗口会显示 > ,我们接着在发送窗口发送I m TCP Client,TCP Server 端会收到该信息,接着再通过 TCP Server 发送I m TCP Server,串口接收端会打印 Client 收到的数据。
下面就是ESP8266连接当前环境的热点,与服务器建立TCP连接,传输数据的过程和动画演示(所有的字符和标点必须是英文)。
1.设置WIFI 模式为 Station:AT+CWMODE=1
2.连接到家中路由器:AT+CWJAP="liuyao","liuyao1001"
3.发送AT指令建立 TCP 连接:AT+CIPSTART="TCP","192.168.0.103",8080
4.提示发送数据长度为14: AT+CIPSEND=14(返回>)
5.串口调试助手发送:I m TCP Client(返回Recv 14 bytea SEND OK)
6.网络调试助手发送:I m TCP Server (串口调试助手收到+IPD,21:hello I m TCP Server!)
这一步很多人可能很懵,不知道为啥要这样做,你这个搞的串口调试助手还有网络调试助手还有啥TCP Server到底是啥意思啊?
哈哈,我相信很多初学者学到这里也不是很清楚。我这里简单说一下,我们的用ESP8266是不是要让它连到家中的网啊,那在这里我们的网络调试助手的TCP Server就是我们要连接的网络。有人又要说了,我要连家中路由器的网啊,为啥要连网络调试助手的网啊?这是因为如果你连家中的网,请问你如何给你家的路由器发送数据啊!你怎么知道路由器接收到了数据啊!路由器又咋给你发送数据啊!你又咋接收数据啊!我们这里用网络调试助手的目的就是让网络调试助手来代替路由器局域网。TCP Server就是服务端的意思也是就是服务器。至于为啥用串口调试助手我就不用说了吧,只有你在串口助手上调试好了,我们才用单片机的串口结合ESP8266共同代替客服端,也就不需要调试助手了。
所以说我们一定要在串口调试助手上把相关的数据调通了,把原理过程搞懂了之后我们再去搞单片机程序,再去搭建你的服务器而不是用网络调试助手代替了。
怎么样现在明白了吧!
5.2开启透传传输(AT+CIPMODE=1)
前面在使用 TCP 进行数据发送时,在每次发送数据之前都要指定发送数据的长度,而且在接收到数据之后,还会有+IPD,< len>的前缀,这样很不方便进行数据的处理,因此我们可以使用AT+CIPMODE=1指令开启透传模式,开启透传模式后只需要在第一次发送数据时使用ATD +CIPSEND指令来告诉ESP8266开始透传发送,随后我们直接发送想要的数据即可,在接收到数据时,也没有了+IPD,< len >前缀。
下面就是ESP8266连接当前环境的热点,与服务器建立TCP连接,开启透传模式传输数据的过程和动画演示(所有的字符和标点必须是英文)。
1.设置WIFI 模式为 Station:AT+CWMODE=1
2.连接到家中路由器:AT+CWJAP="liuyao","liuyao1001"
3.发送AT指令建立 TCP 连接:AT+CIPSTART="TCP","192.168.0.103",8080
4.开启透传模式:AT+CIPMODE=1 (返回ok)
5.开始透传发送:AT+CIPSEND (返回>)
6.串口调试助手发送:hello I m TCP Client! (网络调试助手收到hello I m TCP Client!)
7.网络调试助手发送:hello I m TCP Server!(串口调试助手收到>hello I m TCP Server!)
如果想要退出透传发送模式,先发送+++(0x2B 0x2B 0x2B),注意没有换行符,接着使用AT+CIPMODE=0(有换行符)指令退出透传模式,恢复到默认传输模式。如果不退出透传模式,那么在透传模式下就不能发送AT指令了,它会默认为字符串发送。
注意:在非透传模式下,客户端每次向服务端发送数据之前都要先发送AT+CIPSEND=<len>来告诉服务端我接下来要发送数据的长度,否则在发送之后会返回EEROR。
注意:在透传模式下,客户端每次向服务端发送数据之前不需要发送AT+CIPSEND=<len>来告诉服务端我接下来要发送数据的长度。在设置好透传模式(即发送了AT+CIPMODE=1和AT+CIPSEND)后,直接发送数据就可以了。
在非透传模式下和透传模式下。只有客服端向服务端发送数据之前需要先发送最对应的命令,然后再发送数据。而服务端向客户端发送数据之前不需要向客户端先发送任何命令,直接就是发送数据。另外,所有AT指令(除了退出透传的+++指令)和数据在发送时都需要勾选发送新行或AT指令自动回车,也就是说命令和数据发送之前都需要回车换行,否则不能发送成功。
使用SmartConfig为设备配网
开启透传模式
开启ESP8266透传,在串口助手看到以下回发数据时,ESP8266已经进入透传模式
AT指令:AT+CIPSEND
模块回发数据
退出透传模式
退出透传发送 +++ (不需要加换行符)即可,像上面AT指令都需要换行发送
设置上电自动透传
上面指令都是一次性发送AT指令开启透传模式,ESP8266断电再上电后只会主动连接最后一次连接过的路由,并不会自动进入透传模式,在连接路由后,发送如下指令
AT指令:AT+SAVETRANSLINK=1,"192.168.3.47",8080,"TCP"
将TCP Sever的IP,端口号,通讯方式给到ESP8266
连接wifi并最后退出透传模式
1 +++ 不需要发送新行或者不需要回车
以下2到步都需要发送新行或者回车
2 AT+RESTORE 让模块恢复出厂设置
3 AT 判断模块的好坏及工作状态,正常就会回复OK
4 AT+CWMODE_CUR=1 关闭回显
5 AT+CWJAP_CUR="wifiname","wifiPassword" 连接热点,需要根据自己的热点更改
6 AT+CIPSTART="TCP","a1BDinky4Et.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883 连接TCP 这里的a1BDinky4Et为自己的阿里云产品密钥
7 AT+CIPMODE=1 设置传输模式为透传模式
8 AT+CIPSEND 告诉模块开始传输数据,收到模块的‘>’就证明可以了
9 +++ 退出透传模式时 ,注意这个不需要发送新行
出现AT指令出现busy p…的问题