Hálózatok felderítése

Megjeleníti a hatótávolságon belüli összes WiFi hálózatot.


Utolsó felülvizsgálat: 2022.05.12 12:58


Ez a példa 802.11b/g hálózatokat keres az Arduino WiFi pajzs segítségével. Az Arduino Software (IDE) soros monitora információkat nyomtat az alaplapról és az általa látható hálózatokról. Nem fog csatlakozni a hálózathoz.

Hardver szükséglet

  • Arduino WiFi pajzs

  • Pajzs kompatibilis Arduino kártya

Az áramkör

A WiFi pajzs a 10-es, 11-es, 12-es és 13-as kivezetéseket használja a HDG104 modul SPI-csatlakozásához. A 4-es digitális kivezetés az SD-kártya chipválasztó kivezetésének vezérlésére szolgál.

Nyissa meg a soros monitort a WiFi pajzs által látható hálózatok megtekintéséhez. Előfordulhat, hogy a pajzs nem lát annyi hálózatot, mint a számítógépe.

A Fritzing segítségével fejlesztett kép. További áramköri példákért lásd a Fritzing projekt oldalát.

A kód

/*
 Ez a példa kinyomtatja a Wifi-pajzs MAC-címét, és a Wifi-pajzs
 segítségével keresi az elérhető Wifi-hálózatokat.
 Tíz másodpercenként újra felderít. Valójában nem csatlakozik
 semmilyen hálózathoz, így nincs megadva titkosítási séma.

 Az áramkör:
 * Csatolt WiFi pajzs

 created 13 July 2010
 by dlf (Metodo2 srl)
 modified 21 Junn 2012
 by Tom Igoe and Jaymes Dec
 */


#include <SPI.h>
#include <WiFi.h>

void setup() {
  // Inicializálja a soros portot, és várja meg, amíg megnyílik:
  Serial.begin(9600);
  while (!Serial) {
    ; // várja meg a soros port csatlakozását. Csak a natív USB-porthoz szükséges
  }

  // ellenőrizze a pajzs meglétét:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // Ne folytasd:
    while (true);
  }

  String fv = WiFi.firmwareVersion();
  if (fv != "1.1.0") {
    Serial.println("Please upgrade the firmware");
  }

  // nyomtassa ki a Wifi MAC címét:
  printMacAddress();
}

void loop() {
  // meglévő hálózatok keresése:
  Serial.println("Scanning available networks...");
  listNetworks();
  delay(10000);
}

void printMacAddress() {
  // a Wifi-pajzs MAC-címe
  byte mac[6];

  // nyomtassa ki a MAC-címét:
  WiFi.macAddress(mac);
  Serial.print("MAC: ");
  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 listNetworks() {
  // közeli hálózatok keresése:
  Serial.println("** Scan Networks **");
  int numSsid = WiFi.scanNetworks();
  if (numSsid == -1) {
    Serial.println("Couldn't get a wifi connection");
    while (true);
  }

  // nyomtassa ki a látott hálózatok listáját:
  Serial.print("number of available networks:");
  Serial.println(numSsid);

  // nyomtassa ki a hálózat számát és nevét minden talált hálózathoz:
  for (int thisNet = 0; thisNet < numSsid; thisNet++) {
    Serial.print(thisNet);
    Serial.print(") ");
    Serial.print(WiFi.SSID(thisNet));
    Serial.print("\tSignal: ");
    Serial.print(WiFi.RSSI(thisNet));
    Serial.print(" dBm");
    Serial.print("\tEncryption: ");
    printEncryptionType(WiFi.encryptionType(thisNet));
  }
}

void printEncryptionType(int thisType) {
  // olvassa el a titkosítás típusát és nyomtassa ki a nevet:
  switch (thisType) {
    case ENC_TYPE_WEP:
      Serial.println("WEP");
      break;
    case ENC_TYPE_TKIP:
      Serial.println("WPA");
      break;
    case ENC_TYPE_CCMP:
      Serial.println("WPA2");
      break;
    case ENC_TYPE_NONE:
      Serial.println("None");
      break;
    case ENC_TYPE_AUTO:
      Serial.println("Auto");
      break;
  }
}

Tudj meg többet

További alapvető oktatóanyagokat a beépített példák részben talál.

Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.