iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
自我挑戰組

Maker making IoT !!系列 第 15

[Day14] Esp32s用STA mode + LED - (程式碼講解)

1.前言

今天會介紹到一個滿重要的功能,就是函式庫,在『Day5 函式(數)介紹』中就有稍微提到函式的部分,其實有些函式在Arduino或Esp32中必沒有預設就在,可能特別需要去導入,而這個導入就是include,所以大家應該就了解第一行include的功能了。

2.匯入函數庫

匯入函數庫可能大家都會覺得我是要講剛剛講的include,可是不是,我要講的是Arduino內建有小部分的函式庫,像是AP跟STA模式界都需要用到WiFi這個函式庫,但各位應該以為只有開發板有函式庫,沒想過有些感測器或是一些服務也會需要安裝函式庫吧,所以今天要交各為如何去找函式庫,那其實有兩種。

  1. Arduino IDE
  2. Internet

第一種函式庫有些沒有,但會定期更新
第二種函式庫較多,但要自己去看有沒有更新

3.Arduino IDE匯入函式庫

首先先打開Arduino IDE -> 草稿碼 -> 匯入程式庫 -> 管理程式庫

圖片取自:使用者拍攝

打開後會像當初找開發板那樣,去找自己所需要的函式庫

圖片取自:使用者拍攝

這邊就都不多先這樣介紹了,因為後續才會用到,所以這邊就稍微淺談一下,那接下來介紹第二個囉

4.(.ZIP檔)函式庫匯入

先到網路上找到要用的函式庫,在GitHub上有許多人會放函式庫,如何搜尋呢,可以在網頁上打arduino libraryname(函數庫名稱) github,通常這樣就可以找到拉,下面為舉例。

點擊Code -> Download ZIP下載zip檔

圖片取自:網路

後續一樣打開Arduino IDE -> 草稿碼 -> 匯入程式庫 -> 加入ZIP程式庫...,後續找到下載下來檔案就可以囉

圖片取自:使用者拍攝

那這邊就都稍微介紹,也會有應用,那時後會在介紹詳細一點,那就開始介紹程式碼拉~

5.STA 與 AP 的setup找不同

5-1.STA mode的setup()

void setup(){
  Serial.begin(115200);
  // Initialize the output variables as outputs
  pinMode(output22, OUTPUT);
  pinMode(output23, OUTPUT);
  // Set outputs to LOW
  digitalWrite(output22, LOW);
  digitalWrite(output23, LOW);

  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

前幾段在前幾個篇章都有講解到,設定鮑率,定義腳位,數位輸出狀態,那後續比較關鍵的就是37~41、46及47行,那35、36行只是輸出文字給使用者觀看而已,那接下來開始講解。

WiFi.begin(ssid, password);

透過ssid及password,對該基地台做連結,如沒連結到會持續連接

while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

查看連結況狀,如為連結到進入迴圈,並且在監控視窗中輸出"."

Serial.println(WiFi.localIP());

等到WiFi成功連到後,會跑到這行,當執行到這行時Esp32s會去抓自己的IP位址在哪裡,並且輸出在監控視窗中

server.begin();

Esp32s開啟網頁服務

5-2.AP mode的setup()

接下來就是看下面AP mode的程式碼啦

void setup() {
  Serial.begin(115200);
  // Initialize the output variables as outputs
  pinMode(output0, OUTPUT);
  pinMode(output2, OUTPUT);
  // Set outputs to LOW
  digitalWrite(output0, LOW);
  digitalWrite(output2, LOW);

  // Connect to Wi-Fi network with SSID and password
  Serial.print("Setting AP (Access Point)…");
  // Remove the password parameter, if you want the AP (Access Point) to be open
  WiFi.softAP(ssidAP, passwordAP);
  delay(500);
  IPAddress IP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(IP);
  
  server.begin();
}

你們會發現前幾行又是跟STA mode相同,都是設置鮑率、定義腳位及設定腳位狀態的部分,那我們就跳到第33行。

WiFi.softAP(ssidAP, passwordAP);

WiFi建立連結,可使使用者連結到Esp32s,但這邊只做通道的部分,需要注意的是,當passwordAP沒設置時,密碼不用輸入就可連結

IPAddress IP = WiFi.softAPIP();

softAPIP會將得到softAP的IP位址,就是192.168.4.1這IP,最後由Serial.println把IP顯示在監控視窗中,其實這邊可以省略直接Serial.println(WiFi.softAPIP());直接把IP位址顯示出來

歡迎交流

好了,今天這篇不知道大家有沒有對STA跟AP mode的差別更加了解,如果沒有後面幾篇也會看到很多次,那下一篇會是講解Esp32s用AP mode結合Relay(繼電器),並控制Relay的開啟與關閉,然後也不用很擔心函式庫匯入不會,因為後續有幾篇會講解到,今天只是稍微提起,那今天就這樣囉~明天實作見。


上一篇
[Day13] Esp32s用STA mode + LED
下一篇
[Day15] Esp32s用AP mode + Relay
系列文
Maker making IoT !!30

尚未有邦友留言

立即登入留言