如何使用Arduino連接到WiFi網絡

當您將與Arduino一起構建的電子設備連接到網絡時,它們會變得非常酷。

讓我們看看如何將Arduino連接到WiFi網絡。

Arduino必須具有WiFi連接,例如Arduino MKR WiFi 1010,這是我使用的那個,或者Arduino Uno WiFi版本2和別的。

我們將使用圖書館無線網卡。該庫非常方便,可以讓我們連接到WiFi網絡,但如果需要,還可以創建WiFi網絡。

使用以下命令開始您的Arduino草圖:

#include <SPI.h>
#include <WiFiNINA.h>

SPI庫由WiFiNINA庫使用,因此也要加載它。 SPI代表串行外設接口

WiFiNINA圖書館使我們能夠除其他外訪問WiFi我們將要使用的對象。

現在讓我們來研究setup()函數,我們將要實現的唯一Arduino核心函數(我們將離開loop()空的)。

void setup() {

}

首先,我們將定義2個字符串來保存網絡名稱,SSID和網絡密碼。

我用Arduino創建,因此我只使用將分別填充在Secret標籤:

char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;

接下來,我們將初始化串行接口,以將信息從Arduino傳遞回Arduino Create:

Serial.begin(9600);

我們等到它準備好使用

while (!Serial);

接下來,我們將WiFi.begin()放入循環中,以檢查其返回值是否為WL_CONNECTED,並保持每2秒重試一次,直到達到:

int status = WL_IDLE_STATUS;
while (status != WL_CONNECTED) {
  Serial.print("Connecting to ");
  Serial.println(ssid);
  status = WiFi.begin(ssid, pass);
  delay(2000);
}

我們首先將其初始化為WL_IDLE_STATUS,WiFiNINA的另一個常量,但我們也可以將其初始化為空字符串。

結束此循環後,我們便建立了連接,我們可以調用WiFi.localIP()獲取設備IP地址並將其打印到序列號的方法:

Serial.print("IP address: ");
Serial.println(WiFi.localIP());

這是完整的程序:

#include <SPI.h>
#include <WiFiNINA.h>

void setup() {
  char ssid[] = SECRET_SSID;
  char pass[] = SECRET_PASS;

Serial.begin(9600); while (!Serial);

int status = WL_IDLE_STATUS; while (status != WL_CONNECTED) { Serial.print("Connecting to "); Serial.println(ssid); status = WiFi.begin(ssid, pass); delay(5000); }

Serial.print("IP address: "); Serial.println(WiFi.localIP()); }

void loop() {

}

您現在可以訪問其他信息,例如帶有WiFi.SSID()和信號強度使用WiFi.RSSI()

Serial.print("Signal strength in dBm: ");
Serial.print(WiFi.RSSI());

至此,您已建立連接,可以繼續執行其他任務。

注意:您可能已經可以使用NINA固件升級。將此檢查添加到您的程序中:

if (WiFi.firmwareVersion() < WIFI_FIRMWARE_LATEST_VERSION) {
  Serial.println("Firmware upgrade available");
}

知道是不是這種情況。如果是這樣,使用Arduino IDE(我無法從Arduino Create中看到如何執行此操作)連接到開發板上,然後加載示例草圖File -> Examples -> WiFiNINA -> Tools -> FirmwareUpdater

然後打開Tools -> WiFi101 / WiFiNINA Firmware Updater菜單:

然後按Update Firmware按鈕:


更多電子教程: