Semorphe

連上網路

讓板子有一個 IP 位址。 · ⏱ 約 30 分鐘

你會學到三件事

  1. 連 WiFi 是一個要等的動作——而等待要寫成迴圈
  2. WiFi.status() 是一個會變的狀態
  3. 為什麼密碼寫在程式裡是一件壞事(而這一課還是這樣做)

開始之前

⚠️ 這一課要 ESP32 或 ESP8266。 右下角的目標選 ESP32

Arduino Uno 沒有 WiFi——它連這幾個名字都不認得。 這是這一整套課程裡第一次「板子決定了你能寫什麼」。

一、開始連

WiFi.begin("my-ssid", "my-password");

兩個參數:網路名稱密碼

⚠️ 它不會等連上。這一行的意思是「開始連」,而不是「連好了」。

二、等待要寫成迴圈

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

WiFi.status() 回報現在的狀態,WL_CONNECTED 是「連上了」那個值。

所以這個迴圈的意思是:「只要還沒連上,就每半秒印一個點」。

那些點不是裝飾——它們是給人看的證據,證明板子還活著、還在試。 沒有它們的話,畫面一片空白,你分不出「還在連」和「當掉了」。

⚠️ 這個迴圈可能永遠不會結束(密碼打錯的話)。 正式的程式要加一個次數上限,超過就重開或改用熱點模式。

三、拿到位址

Serial.println(WiFi.localIP());

連上之後,路由器會分配一個 IP 給你的板子——類似 192.168.1.100

那就是這塊板子在你家網路裡的「門牌號碼」。 其他裝置可以用它連過來。

四、⚠️ 密碼寫在程式裡

WiFi.begin("my-ssid", "my-password");

這是一個壞習慣,而這一課還是這樣做,因為別的做法會蓋掉重點。

它的問題是:程式碼傳給別人、上傳到 GitHub、貼到論壇問問題—— 你的 WiFi 密碼就跟著出去了

真正的做法有幾種:另外開一個不上傳的檔、存進 EEPROM(第 14 課)、 或讓板子先開一個熱點讓你用手機設定。

現在先知道它是問題就好。而它是一個真的問題,不是潔癖。

完成的樣子

void setup() {
    Serial.begin(115200);
    WiFi.begin("my-ssid", "my-password");
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println(WiFi.localIP());
}

void loop() {
}

換你了

加一個次數上限:試 20 次還沒連上就印「連不上」然後放棄。

提示:多一個計數器變數,while 的條件變成兩個用 && 串起來。

這一課你做了什麼

如果卡住了

你看到 多半是因為
WiFi 說沒宣告 目標選成 Arduino Uno 了。要選 ESP32
點一直印不停 密碼錯、網路名稱錯,或那是 5GHz 網路(ESP32 只支援 2.4GHz)
序列埠是亂碼 ESP32 習慣用 115200,不是 9600
連上了卻拿不到 IP 路由器的 DHCP 滿了,或被 MAC 過濾擋掉
在編輯器打開這一課 →