ESP8266开发之旅 网络篇② ESP8266 工做模式与ESP8266WiFi库

    在网络篇①中,博主主要讲解了Arduino上开发ESP8266的插件库 Arduino Core For ESP8266。可是,并无讲到关于这个模块的工做模式,因此本篇讲着重讲解ESP8266的三种工做模式:web

  1. Station模式;
  2. AP模式;
  3. AP兼Station模式;

    重点来了,8266编程开发,都是基于以上三种模式中的一种模式来进行开发。因此,开发ESP8266的时候,须要首先肯定工做模式。编程

1. ESP8266工做模式

1.1 Station模式 —— 我想连上谁

    Station(STA)模式用于将ESP8266模块链接到由接入点(Access Point,理解为热点)创建的Wi-Fi网络。请查看下图:
image
    Station模式有几个特色,以方便管理的Wi-Fi链接。安全

  • 在链接丢失的状况下,一旦WiFi再次可用,ESP8266将自动从新链接到最近使用的接入点(Access Point,理解为热点),每每这一点容易出问题(有时路由器重启了,会发现ESP8266一直链接不上路由)。
  • 模块重启也会发生一样的状况。
  • 由于ESP8266将最后使用的接入点认证信息(ssid帐号,psw密码)保存到Flash(非易失性)存储器中。
  • 若是在Arduino IDE修改代码,但代码不更改Wi-Fi工做模式或接入点认证信息(ssid帐号,psw密码),则ESP8266使用保存在Flash上数据来从新链接。

1.2 AP模式(soft-AP)—— 谁想连上我

    AP(Access Point)模式能够理解为Station模式的相反面,用于将ESP8266模块做为接入点创建Wi-Fi网络,供其余Station模式的模块链接进来。请查看下图:网络

image

  • AP模式能够用于Station模式的模块之间交互的中转站(让全部模块处于同一个WiFi网络中);
  • 在将ESP8266模块(Station模式)链接到wifi以前,通常咱们是不知道当前wifi网络的ssid帐号和psw密码,那么咱们怎么告诉ESP8266呢?
    在AP模式下,咱们可使用手机或者笔记本链接到它,而后咱们就能够给ESP8266模块发送链接网络的ssid和psw。一旦完成,ESP8266自动切换到Station 模式,就能够链接到目标wifi接入点。

1.3 AP兼Station模式

    该模式是以上两种模式的整合。请查看下图:
imagewebstorm

1.4 核心点

    紧紧记住,WiFi有三种工做模式:Station模式、AP模式、AP兼Station模式,这样就足够了。每一个ESP8266模块确定工做于这三种模式之一,固然除非你没用WIFI功能,把它当作arduino开发版用。tcp

2. ESP8266WiFi库

    前面咱们整体上介绍了ESP8266工做模式,同时咱们也了解到 Arduino IDE上主要经过 Arduino Core For ESP8266这个核心库来开发ESP8266功能,而且也谈论到这个核心库其实包含了众多小核心库,包括ESP8266WiFi、ESP8266WebServer、ESP8266HTTPClient、ESP8266mDNS等等。虽然咱们实际开发中并不会说所有库都会使用起来,可是至少须要造成一个意识,那就是:Arduino core for ESP8266库,在8266 sdk基础上给咱们提供了不少操做方式。
    其中,博主以为最核心最重要的一个库就是ESP8266WiFi(后面咱们代码中你会常常看到 #inclue<ESP8266WiFi.h>,那时你就应该知道这个库具体是用来作什么的)函数

2.1 ESP8266WiFi库源码结构

    若是你是按照博主以前说的方式去clone Arduino core for 8266的代码的话,而后把libraries目录导入到源码查看IDE(这里我推荐你们安装webstorm)的话,而后打开ESP8266WiFi那个目录,你就会发现以下代码结构:ui

image

    没错,你会发现不少成双成对的h头文件和cpp源文件,有点组cp的感受。
image插件

    众多文件,先不要纠结。
    在这里,博主能够先告诉你几个知识点:3d

  1. 名字里面带Secure、SSL、TLS的,跟安全校验有关,俗称https(不要告诉我你没用过);
  2. 名字里面带Client的,跟客户端有关;
  3. 名字里面带Server的,跟服务端有关;
  4. 名字里面带8266的,你能够理解为针对ESP8266的代码封装;
  5. 名字里面带Scan的,跟wifi扫描有关;
  6. 名字里面带STA的,跟ESP8266 Station模式有关;
  7. 名字里面带AP的,跟ESP8266 AP模式有关;
  8. ESP8266WiFiType.h文件,主要是用来定义各类配置选项,好比wifi工做模式(WiFiMode),wifi睡眠模式(WiFiSleepType),wifi物理模式(WiFiPhyMode),wifi事件(WiFiEvent),wifi断开缘由(WiFiDisconnectReason)等等;
  9. ESP8266WiFiGeneric(8266模块通用库),esp8266的sdk提供了一些功能,但在arduino wifi库中没有。包括处理程序来管理wi-fi事件,如链接,断开链接或得到ip,wi-fi模式的变化,管理模块睡眠模式的功能,以ip地址解析的hostName等;
  10. ESP8266WiFi库不只仅局限于ESP8266WiFi.h和ESP8266WiFi.cpp这两个文件,只不过说它们是最核心的统一入口;
  11. WiFiUdp库,在ESP8266WiFi功能的基础上包装了UDP广播协议,适用于UDP通讯,须要另外添加头文件;

    记住这11点,基本上整个ESP8266WiFi库你就了解一半了,剩下就是看各个具体使用(引入使用一步到位 #include<ESP8266WiFi.h>,固然你也能够一个个include,so easy)。

#include<ESP8266WiFi.h>

2.2 ESP8266WiFi.h 和 ESP8266WiFi.cpp 详解

    在这里,博主给读者讲解用得最多的两个文件,请看下图:
image
    能够看到ESP8266WiFi类,继承了ESP8266WiFiGenericESP8266WiFiSTAESP8266WiFiScanESP8266WiFiAP,同时引入了WiFiClientWiFiServerWiFiServerSecureWiFiClientSecure等等,所谓集合了诸子百家的功能于一身。

  • ESP8266WiFiGeneric:8266模块通用库,包括处理程序来管理wi-fi事件,如链接,断开链接或得到ip,wi-fi模式的变化,管理模块睡眠模式的功能,以ip地址解析的hostName等;
  • ESP8266WiFiSTA:Station模式下使用的代码功能;
  • ESP8266WiFiScan:wifi扫描功能(处于Station模式);
  • ESP8266WiFiAP:wifi网络接入点功能(AP热点);
  • WiFiClient:tcp 客户端(发送端);
  • WiFiServer:tcp 服务端(接收端);

    为了让你们更加清晰了解到各个具体内容,博主也花了点时间作了一个初略的百度脑图,以供你们参考:
image
    脑图相对来讲比较大,烦请读者自行下载保存下来放大查看。本篇不详细介绍每一个函数怎么用,等到后面用到的时候,博主再陆续给你们介绍一下用法。

3. 总结

    这节要记住的重点是,核心库ESP8266WiFi到底有什么功能能够提供给咱们使用。理解它是后续开发的基本。

相关文章
相关标签/搜索