Eğitimler
WiFiNINAScanNetworksAdvanced
Bu örnek, bu kitaplığı destekleyen kartlardan biriyle 802.11b / g ağını tarar. Arduino Software (IDE) seri monitörünüz, kart ve görebildiği ağlar hakkında bilgileri şifreleme türüyle basacaktır. Bir ağa bağlanmaz.
Gerekli Donanım
Devre
WiFi modülü kartınıza entegre edilmiştir ve bu öğreticinin çalışması için herhangi bir özel devreye ihtiyacınız yoktur.
Arduino MKR WiFi 1010
Arduino MKR VIDOR 4000
Arduino UNO WiFi Rev.2
Lütfen dikkat: Bu üç kart, WiFi modülünü iletişim kurmak ve seçmek için özel pinler kullanır, bu nedenle başlık pinlerine bağlı mevcut dijital pinlerin kullanımında herhangi bir kısıtlama yoktur.
Kod
WiFi modülünün görebildiği ağları görüntülemek için Arduino Yazılımı (IDE) seri monitörünüzü açın. Kalkan bilgisayarınız kadar ağ görmeyebilir, ancak şifreleme türünü de gösterir.
/*
This example prints the board's MAC address, and
scans for available WiFi networks using the NINA module.
Every ten seconds, it scans again. It doesn't actually
connect to any network, so no encryption scheme is specified.
BSSID and WiFi channel are printed
Circuit:
* Board with NINA module (Arduino MKR WiFi 1010, MKR VIDOR 4000 and UNO WiFi Rev.2)
This example is based on ScanNetworks
created 1 Mar 2017
by Arturo Guadalupi
*/
#include <SPI.h>
#include <WiFiNINA.h>
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 WiFi module:
if (WiFi.status() == WL_NO_MODULE) {
Serial.println("Communication with WiFi module failed!");
// don't continue
while (true);
}
String fv = WiFi.firmwareVersion();
if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
Serial.println("Please upgrade the firmware");
}
// print your MAC address:
byte mac[6];
WiFi.macAddress(mac);
Serial.print("MAC: ");
printMacAddress(mac);
// scan for existing networks:
Serial.println();
Serial.println("Scanning available networks...");
listNetworks();
}
void loop() {
delay(10000);
// scan for existing networks:
Serial.println("Scanning available networks...");
listNetworks();
}
void listNetworks() {
// scan for nearby networks:
Serial.println("** Scan Networks **");
int numSsid = WiFi.scanNetworks();
if (numSsid == -1)
{
Serial.println("Couldn't get a WiFi connection");
while (true);
}
// print the list of networks seen:
Serial.print("number of available networks: ");
Serial.println(numSsid);
// print the network number and name for each network found:
for (int thisNet = 0; thisNet < numSsid; thisNet++) {
Serial.print(thisNet + 1);
Serial.print(") ");
Serial.print("Signal: ");
Serial.print(WiFi.RSSI(thisNet));
Serial.print(" dBm");
Serial.print("\tChannel: ");
Serial.print(WiFi.channel(thisNet));
byte bssid[6];
Serial.print("\t\tBSSID: ");
printMacAddress(WiFi.BSSID(thisNet, bssid));
Serial.print("\tEncryption: ");
printEncryptionType(WiFi.encryptionType(thisNet));
Serial.print("\t\tSSID: ");
Serial.println(WiFi.SSID(thisNet));
Serial.flush();
}
Serial.println();
}
void printEncryptionType(int thisType) {
// read the encryption type and print out the name:
switch (thisType) {
case ENC_TYPE_WEP:
Serial.print("WEP");
break;
case ENC_TYPE_TKIP:
Serial.print("WPA");
break;
case ENC_TYPE_CCMP:
Serial.print("WPA2");
break;
case ENC_TYPE_NONE:
Serial.print("None");
break;
case ENC_TYPE_AUTO:
Serial.print("Auto");
break;
case ENC_TYPE_UNKNOWN:
default:
Serial.print("Unknown");
break;
}
}
void print2Digits(byte thisByte) {
if (thisByte < 0xF) {
Serial.print("0");
}
Serial.print(thisByte, HEX);
}
void printMacAddress(byte mac[]) {
for (int i = 5; i >= 0; i--) {
if (mac[i] < 16) {
Serial.print("0");
}
Serial.print(mac[i], HEX);
if (i > 0) {
Serial.print(":");
}
}
Serial.println();
}
This example prints the board's MAC address, and
scans for available WiFi networks using the NINA module.
Every ten seconds, it scans again. It doesn't actually
connect to any network, so no encryption scheme is specified.
BSSID and WiFi channel are printed
Circuit:
* Board with NINA module (Arduino MKR WiFi 1010, MKR VIDOR 4000 and UNO WiFi Rev.2)
This example is based on ScanNetworks
created 1 Mar 2017
by Arturo Guadalupi
*/
#include <SPI.h>
#include <WiFiNINA.h>
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 WiFi module:
if (WiFi.status() == WL_NO_MODULE) {
Serial.println("Communication with WiFi module failed!");
// don't continue
while (true);
}
String fv = WiFi.firmwareVersion();
if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
Serial.println("Please upgrade the firmware");
}
// print your MAC address:
byte mac[6];
WiFi.macAddress(mac);
Serial.print("MAC: ");
printMacAddress(mac);
// scan for existing networks:
Serial.println();
Serial.println("Scanning available networks...");
listNetworks();
}
void loop() {
delay(10000);
// scan for existing networks:
Serial.println("Scanning available networks...");
listNetworks();
}
void listNetworks() {
// scan for nearby networks:
Serial.println("** Scan Networks **");
int numSsid = WiFi.scanNetworks();
if (numSsid == -1)
{
Serial.println("Couldn't get a WiFi connection");
while (true);
}
// print the list of networks seen:
Serial.print("number of available networks: ");
Serial.println(numSsid);
// print the network number and name for each network found:
for (int thisNet = 0; thisNet < numSsid; thisNet++) {
Serial.print(thisNet + 1);
Serial.print(") ");
Serial.print("Signal: ");
Serial.print(WiFi.RSSI(thisNet));
Serial.print(" dBm");
Serial.print("\tChannel: ");
Serial.print(WiFi.channel(thisNet));
byte bssid[6];
Serial.print("\t\tBSSID: ");
printMacAddress(WiFi.BSSID(thisNet, bssid));
Serial.print("\tEncryption: ");
printEncryptionType(WiFi.encryptionType(thisNet));
Serial.print("\t\tSSID: ");
Serial.println(WiFi.SSID(thisNet));
Serial.flush();
}
Serial.println();
}
void printEncryptionType(int thisType) {
// read the encryption type and print out the name:
switch (thisType) {
case ENC_TYPE_WEP:
Serial.print("WEP");
break;
case ENC_TYPE_TKIP:
Serial.print("WPA");
break;
case ENC_TYPE_CCMP:
Serial.print("WPA2");
break;
case ENC_TYPE_NONE:
Serial.print("None");
break;
case ENC_TYPE_AUTO:
Serial.print("Auto");
break;
case ENC_TYPE_UNKNOWN:
default:
Serial.print("Unknown");
break;
}
}
void print2Digits(byte thisByte) {
if (thisByte < 0xF) {
Serial.print("0");
}
Serial.print(thisByte, HEX);
}
void printMacAddress(byte mac[]) {
for (int i = 5; i >= 0; i--) {
if (mac[i] < 16) {
Serial.print("0");
}
Serial.print(mac[i], HEX);
if (i > 0) {
Serial.print(":");
}
}
Serial.println();
}
[Kodu Al]
See Also
- WiFi NINA library- WiFiNINA Kütüphanesi için referansınız.
- Arduino MKR WiFi 1010- Arduino MKR WiFi 1010 kartı için ürün detayları.
- Arduino MKR VIDOR 4000- Arduino MKR VIDOR 4000 kartı için ürün detayları.
- Arduino UNO WiFi Rev.2- Arduino UNO WiFi Rev.2 kartı için ürün detayları.
- AP_SimpleWebServer: AP özelliğine sahip bir LED'i yönetmek için basit bir web sunucusu
- ConnectNoEncryption: Açık bir ağa nasıl bağlanacağınızı gösterir
- ConnectWithWEP: WEP ile şifrelenmiş bir ağa nasıl bağlanacağınızı gösterir
- ConnectWithWPA: WPA2 Kişisel ile şifrelenmiş bir ağa nasıl bağlanacağınızı gösterir
- ScanNetworks: Menzil içindeki tüm WiFi ağlarını görüntüler
- SimpleWebServerWiFi: Bir LED'i yönetmek için basit bir web sunucusu
- WiFiChatServer: Basit bir sohbet sunucusu kurun
- WiFiPing: Bir web sitesine veya IP adresine nasıl ping atılacağını gösterir
- WiFiSSLClient: SSL kullanarak bir web sitesine bağlanın
- UdpNTPClient: Ağ Zaman Protokolü (NTP) sunucusunu UDP kullanarak sorgulama
- WiFiUdpSendReceiveString: Bir UDP dizesi gönderme ve alma
- WiFiWebClient: Uzak bir web sunucusuna bağlanma
- WiFiWebClientRepeating: Bir web sunucusuna tekrarlanan HTTP çağrıları yapma
- WiFiWebServer: WiFi modülünden bir web sayfası sunma