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到底有什麼功能能夠提供給咱們使用。理解它是後續開發的基本。

相關文章
相關標籤/搜索