我们在使用ESP8266-01s与云平台连接时,大多时候采用的都是给WiFi和密码先写进程序里,这样虽然能够完成连接网络,但是当在不同的环境下或者WIFI更换的情况下还要对程序里的WIFI名称和密码进行修改和编写,为我们的使用带来了一定程度上的困扰,那么有没有一种方法能够在不同的WIFI环境下依然能够在不修改程序也不用重新烧录的基础上就能联网的方法呢,其实是有的,ESP8266有着丰富的AT指令集,一般情况下我们也是通过串口与ESP8266进行连接,再通过串口向ESP8266发送AT指令集来进行各种操作,接下来我们就来看一下具体的操作流程及代码
这是ESP8266的基础AT指令集和WIFI配置指令集,可以在官网看的到,而我们也只是在基础里面使用了几个,未涉及到的可以自己没事的时候试试玩玩,
首先当我们使用CH340和ESP8266相连接(TXD和RXD相互交错相接),在串口助手里面我们可以发送:AT指令会返回OK即是连接成功,如下图命令
而我们程序使用到的指令也不是很多,但有一个很重要的,就是复位
当你需要复位时,如果ESP8266处于透传模式时需要提前退出透传模式,当然ESP8266-01s模块是有专门的RST引脚,而我们可以通过对RST进行高低电平的延时输出即可完成复位(通过外部引脚RST复位时接收到的指令为ready),比如我们可以将这个指令通过封装一个函数来完成并判断是否完成复位
70行我们先进行复位引脚拉低500ms进行复位再拉高(低电平复位)
74行的判断条件为调用函数时传进来的实际参数
77行调用函数strstr(),函数用能为判断第二个参数是否出现在参数一中,如果出现了就返回1,WiFi_RX_BUF表示WIFI串口接收到的数据,也就表示如果检测到即跳出循环,否则即为还未接收到复位成功指令
82行表示时间超时返回1代表复位失败,如果复位成功这返回83行的0即复位成功
此函数为通过串口向ESP8266发送指令的函数
49、50行为调用memst()函数将参数三的长度把参数二写到参数一里面,也就是清零操作,防止上次遗留数据影响此次数据发送
51行为通过串口向ESP8266发送指令(为此函数参数一)
52-61行操作基本同复位函数相同,只是55接收数据为OK
此函数为等待加入路由器函数,操作逻辑基本同前两个相似
此函数为连接到服务器时进入透传使用,逻辑同上述相似
此函数就是本次讲解的重点,我们通过smartconfig函数来判断串口是否配置为我们所需要的模式,当然,这些只是函数的封装,函数的调用整个的流程如下:
197行调用复位函数进行复位
208行调用发送指令函数,发送指令:AT+CWMODE=1,设置模式为STA模式
221行调用发送指令函数,发送指令:AT+CWSTARTSMART=1,设置为smartconfig模式
255行调用smartconfig模式函数,判断手机配网是否完成(手机配网方式在后面,先将完整逻辑捋顺,默认此步骤已由手机配网完成(在单片机执行程序时若没手动配网成功则会卡在此函数会一直等待))
264行调用连接路由器函数
274行调用发送指令函数,发送指令:AT+CIPMODE=1,设置为透传模式
285行调用发送指令函数,发送指令:AT+CIPMUX=0,设置为关闭多路连接
295行调用连接服务器函数(具体函数请查看上面几个函数)
(Show_Str()函数为液晶显示屏显示函数可以忽略掉)
接下来讲解手机端配网软件,应用商店下载安装EsptouchAPP,
打开以后选择EspTouch模式
使用手机连接上需要给ESP8266配置的WIFI网络,连接好后SSID会显示已经连接的WIFI名字,此时将此WIFI密码输入进手机,选择组播(广播也行,组播会快一点),然后点击确认等待配网完成即可(手机需连接的时2.4G网络,5G网络ESP8266识别不到)