如何使用Arduino連接到WiFi網絡
當你將Arduino連接到網絡時,與之一起建立的電子設備將變得非常酷。
讓我們來看看如何將Arduino連接到WiFi網絡。
Arduino必須具備WiFi連接功能,例如我使用的Arduino MKR WiFi 1010,或者其他Arduino Uno WiFi Rev2等。
我們將使用庫WiFiNINA。這個庫非常方便,可以讓我們連接到WiFi網絡,還可以創建WiFi網絡。
在你的Arduino sketch中加入以下代碼:
1 | #include <SPI.h> |
WiFiNINA庫使用了SPI庫,因此也要加載SPI庫。SPI代表串行外設接口。
WiFiNINA
庫為我們提供了訪問WiFi
對象的功能,我們將使用它。
現在讓我們來編寫setup()
函數的主體部分,這是我們需要實現的唯一的Arduino核心函數(我們將保持loop()
函數空)。
1 | void setup() { |
首先,我們將定義兩個字符串變量來存儲網絡名稱(SSID)和網絡密碼。
我使用的是Arduino Create,所以我只是使用在Secret
選項卡中單獨填充的常量。
1 | char ssid[] = SECRET_SSID; |
接下來,我們將初始化串口接口,以便將來自Arduino的信息傳回Arduino Create。
1 | Serial.begin(9600); |
然後,我們使用以下代碼等待串口就緒:
1 | while (!Serial); |
然後,我們將WiFi.begin()
放入一個循環中,檢查其返回值是否為WL_CONNECTED
,如果不是,則每隔2秒重試一次:
1 | int status = WL_IDLE_STATUS; |
首先,我們將其初始化為WL_IDLE_STATUS
,這是WiFiNINA的另一個常量,但我們也可以將其初始化為空字符串。
一旦退出此循環,表示已成功連接,我們可以調用WiFi.localIP()
方法獲取設備的IP地址並將其打印到串口:
1 | Serial.print("IP address: "); |
以下是完整的程式碼:
1 | #include <SPI.h> |
你現在可以訪問其他信息,比如網絡的SSID可以使用WiFi.SSID()
獲取,信號強度可以使用WiFi.RSSI()
獲取:
1 | Serial.print("Signal strength in dBm: "); |
到這一步,你已經連接成功,可以進行其他任務了。
注意:你可能可以升級NINA固件。在程式碼中添加以下檢查:
1 | if (WiFi.firmwareVersion() < WIFI_FIRMWARE_LATEST_VERSION) { |
如果有可用的固件升級,你可以使用Arduino IDE(我不知道如何從Arduino Create中執行此操作)連接到板子,然後加載範例程式碼 File -> Examples -> WiFiNINA -> Tools -> FirmwareUpdater
然後打開 Tools -> WiFi101 / WiFiNINA Firmware Updater
選單:
並點擊 Update Firmware
按鈕: