Kita mungkin menginginkan perangkat nodeMCU kita dapat mendeteksi wifi dengan otomatis, kemudian setelah wifi ditemukan NodeMcu akan otomatis terhubung, sehingga dengan cara kerja yang seperti ini, sistem yang kita buat terlihat lebih dinamis.
ada beberapa cara yang dapat kita gunakan, misalnya dengan menggunakan library Wifi Multi, dengan library ini terlebih dahulu kita harus menginputkan nama_nama SSid dan password nya pada bagian void setup, seperti kutipan program berikut
cara seperti ini akan berguna pada lingkungan tertentu, jika kita tahu SSID-SSID dan password yang tersedia dilingkungan perangkat kita. dan cara ini saya rasa kurang dinamis juga, tetap saja kita harus menginput manual SSID dan passwordnya.
cara lain yang dapat digunakan adalah dengan menggunakan library wifi scan, dengan library ini perangkat kita (NodeMcu) akan otomatis mendeteksi wifi yang tersedia dilingkungannya, kemudian apabila wifi sudah terdeteksi, maka perangkat kita akan otomatis mengkoneksikan nya. dengan cara yang seperti ini, maka kita tidak perlu repot-repot memasukkan SSID dan Password, karena perangkat yang akan menentukannnya
Berikut adalah program yang saya buat
ada beberapa cara yang dapat kita gunakan, misalnya dengan menggunakan library Wifi Multi, dengan library ini terlebih dahulu kita harus menginputkan nama_nama SSid dan password nya pada bagian void setup, seperti kutipan program berikut
wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1"); wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3");
cara seperti ini akan berguna pada lingkungan tertentu, jika kita tahu SSID-SSID dan password yang tersedia dilingkungan perangkat kita. dan cara ini saya rasa kurang dinamis juga, tetap saja kita harus menginput manual SSID dan passwordnya.
cara lain yang dapat digunakan adalah dengan menggunakan library wifi scan, dengan library ini perangkat kita (NodeMcu) akan otomatis mendeteksi wifi yang tersedia dilingkungannya, kemudian apabila wifi sudah terdeteksi, maka perangkat kita akan otomatis mengkoneksikan nya. dengan cara yang seperti ini, maka kita tidak perlu repot-repot memasukkan SSID dan Password, karena perangkat yang akan menentukannnya
Berikut adalah program yang saya buat
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* This sketch demonstrates how to scan WiFi networks. | |
* The API is almost the same as with the WiFi Shield library, | |
* the most obvious difference being the different file you need to include: | |
* | |
* Modified by :papermindvention 11 july 2019 | |
*/ | |
#include <ESP8266WiFi.h> | |
char ValStr[75]; | |
char* ssid; | |
String ins; | |
void setup() { | |
Serial.begin(115200); | |
// Set WiFi to station mode and disconnect from an AP if it was previously connected | |
WiFi.mode(WIFI_STA); | |
WiFi.disconnect(); | |
delay(100); | |
Serial.println("Setup done"); | |
scan(); | |
} | |
void loop() { | |
if (WiFi.status() != WL_CONNECTED){ | |
Serial.println("Disconnect, You are now Offline"); | |
delay(1000); | |
Serial.println("try to connecting......"); | |
scan(); | |
} | |
} | |
void scan(){ | |
Serial.println("scan start"); | |
// WiFi.scanNetworks will return the number of networks found | |
int n = WiFi.scanNetworks(); | |
Serial.println("scan done"); | |
if (n == 0) | |
Serial.println("no networks found"); | |
else | |
{ | |
Serial.print(n); | |
Serial.println(" networks found"); | |
for (int i = 0; i < n; ++i) | |
{ | |
// Print SSID and RSSI for each network found | |
Serial.print(i + 1); | |
Serial.print(": "); | |
Serial.print(WiFi.SSID(i)); | |
Serial.print(" ("); | |
Serial.print(WiFi.RSSI(i)); | |
Serial.print(")"); | |
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*"); | |
if (WiFi.encryptionType(i) == ENC_TYPE_NONE){ | |
ins += WiFi.SSID(i); | |
for (int i=0; i< ins.length(); i++){ ValStr[i] = ins.charAt(i); } | |
ssid = strtok(ValStr,"."); | |
WiFi.begin(ssid); | |
Serial.print("Connecting To : "); | |
Serial.println(ssid); | |
while (WiFi.status() != WL_CONNECTED) { | |
Serial.print('.'); | |
delay(500); | |
} | |
Serial.println("WiFi connected"); | |
Serial.println("IP address: "); | |
Serial.println(WiFi.localIP()); | |
ins = ""; | |
break; | |
} | |
delay(10); | |
} | |
} | |
Serial.println(""); | |
// Wait a bit before scanning again | |
delay(5000); | |
} |
Comments
Post a Comment