Arduino WiFi 連線網路
為了使用Arduino Uno或任何其他板子連線WiFi,您可能需要一個WiFi擴充套件板(除非您使用的是內建WiFi功能的板子,例如Arduino Uno WiFi)。WiFi擴充套件板就像任何其他擴充套件板一樣,堆疊在您的板上,並提供對擴充套件板本身Arduino引腳的訪問。
您可以在這裡閱讀更多關於WiFi擴充套件板的資訊:
https://www.arduino.cc/en/pmwiki.php?n=Main/ArduinoWiFiShield
https://www.arduino.cc/en/Guide/ArduinoWiFiShield
假設您有一個WiFi擴充套件板,您將需要WiFi庫才能開始。您不需要單獨下載它;它將內建在您的IDE中。如果您在…
#include <WiFi.h>
沒有收到編譯錯誤,則您的IDE包含該庫。
在這篇文章中,我們將逐步講解WiFi庫的一個內建示例——WPA連線。您可以在這裡找到該示例這裡。
您遇到的大多數網路都將具有WPA2加密。如果您使用手機建立一個熱點,您通常會選擇WPA2加密並設定密碼。
我們首先包含SPI和WiFi庫(SPI因為擴充套件板使用SPI進行通訊)。
#include <SPI.h> #include <WiFi.h>
接下來,我們定義一些全域性變數,包括您打算連線Arduino的網路的SSID、密碼和狀態**int**。
char ssid[] = "yourNetwork"; // your network SSID (name) char pass[] = "secretPassword"; // your network password int status = WL_IDLE_STATUS; // the Wifi radio's status
在設定中,我們執行以下操作:
初始化**Serial**
檢查WiFi擴充套件板是否存在
檢查擴充套件板的**fw_version**是否正確或是否需要升級
嘗試使用**WiFi.begin()**連線到網路
連線後,使用**printCurrentNet()**列印網路詳細資訊(SSID、BSSID(路由器的MAC地址)、訊號強度或RSSI和加密型別)。
此外,使用**printWifiData()**列印WiFi詳細資訊(本地IP和MAC地址)。
在迴圈中,我們每10秒使用**printCurrentNet()**保持網路詳細資訊。
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// don't continue:
while (true);
}
String fv = WiFi.firmwareVersion();
if (fv != "1.1.0") {
Serial.println("Please upgrade the firmware");
}
// attempt to connect to Wifi network:
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
// you're connected now, so print out the data:
Serial.print("You're connected to the network");
printCurrentNet();
printWifiData();
}
void loop() {
// check the network connection once every 10 seconds:
delay(10000);
printCurrentNet();
}
void printWifiData() {
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
Serial.println(ip);
// print your MAC address:
byte mac[6];
WiFi.macAddress(mac);
Serial.print("MAC address: ");
Serial.print(mac[5], HEX);
Serial.print(":");
Serial.print(mac[4], HEX);
Serial.print(":");
Serial.print(mac[3], HEX);
Serial.print(":");
Serial.print(mac[2], HEX);
Serial.print(":");
Serial.print(mac[1], HEX);
Serial.print(":");
Serial.println(mac[0], HEX);
}
void printCurrentNet() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print the MAC address of the router you're attached to:
byte bssid[6];
WiFi.BSSID(bssid);
Serial.print("BSSID: ");
Serial.print(bssid[5], HEX);
Serial.print(":");
Serial.print(bssid[4], HEX);
Serial.print(":");
Serial.print(bssid[3], HEX);
Serial.print(":");
Serial.print(bssid[2], HEX);
Serial.print(":");
Serial.print(bssid[1], HEX);
Serial.print(":");
Serial.println(bssid[0], HEX);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.println(rssi);
// print the encryption type:
byte encryption = WiFi.encryptionType();
Serial.print("Encryption Type:");
Serial.println(encryption, HEX);
Serial.println();
}請注意,WiFi和路由器的MAC地址(**WiFi.macAddress()**和**WiFi.BSSID()**)儲存在6位元組陣列中,每個位元組都以十六進位制格式逐一列印。兩者之間的區別在於,**WiFi.macAddress()**提供您的裝置(帶有WiFi擴充套件板的Arduino)的MAC地址,而**WiFi.BSSID()**提供您裝置連線到的路由器或接入點的MAC地址。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP