Kategori
IoT

Praktek Scan WiFi ESP32

ESP32 memiliki WiFi 802.11 b/g/n up to 150 Mbps yang sudah terintegrasi dengan board sehingga memudahkan dalam implementasi IoT.

Wifi pada ESP32 memiliki keandalan yang cukup tinggi karena dapat menjangkau sinyal hingga 25 meter.

ESP32

Penggunaan WiFi ESP32 dapat digunakan menjadi mode Access Point (AP) atau mode Station/Client.

  1. Mode Station/Client

ESP32 bekerja dengan memancarkan sinyal WiFi agar diterima oleh perangkat lain (Smartpone, Laptop, dll.).

SSID (nama Wifi) dan password yang diberikan dapat dikonfigurasi melalui program yang diupload pada ESP32.

Mode ini biasa digunakan saat ESP32 bertindak sebagai penyedia data jaringan lokal.

2. Mode Access Point

ESP32 bertindak sebagai station atau penerima sinyal Wifi yang dipancarkan oleh perangkat lain (Router, Access Point, dll.) sehingga ESP32 harus menyesuaikan SSID dan password sesuai dengan router yang dikoneksikan.

SSID (nama Wifi) dan password dapat dikonfigurasi melalui program yang diupload pada ESP32 sesuai dengan router/access point yang akan dihubungkan. ESP32 akan menerima alamat IP dari router tersebut.

Mode ini lebih fleksibel karena dapat digunakan saat ESP32 bertindak sebagai penyedia data, maupun pengirim data ke jaringan lokal dan internet.

Rangkaian Program

Kode Program

#include "WiFi.h"

void setup() {
  Serial.begin(115200);
  Serial.println("Initializing WiFi...");
  WiFi.mode(WIFI_STA);
  Serial.println("Setup done!");
}

void loop() {
  Serial.println("Scanning...");

  // 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.println();
    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) == WIFI_AUTH_OPEN) ? " " : "*");
      delay(10);
    }
  }
  Serial.println("");

  // Wait a bit before scanning again
  delay(5000);
}

Jalankan Program

Program tersebut berfungsi untuk melakukan scan terhadap Wifi yang tersedia di lokasi ESP32 berada.
Hasil pembacaan Wifi akan ditampilkan di serial monitor.

  • Tunggu beberapa saat untuk ESP32 melakukan scanning Wifi.
  • Wifi yang tersedia akan muncul pada serial monitor.
  • Informasi Wifi meliputi SSID (nama Wifi) dan RSSI (kekuatan sinyal).

Praktek Koneksi WIFI ESP32

Rangkaian Program

Kode Program

#if defined(ESP8266)
#include <ESP8266WiFi.h>
#elif defined(ESP32)
#include <WiFi.h>
#endif

#define WIFI_SSID           "Wokwi-GUEST"
#define WIFI_PASSWORD       ""

#define SERIAL_DEBUG_BAUD   115200

#define LED 15
// the Wifi radio's status
int status = WL_IDLE_STATUS;

void InitWiFi()
{
  Serial.println("Connecting to AP ...");

  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {

    delay(500);
    Serial.print(".");
  }
  Serial.print("");
  Serial.println("Connected to AP");
}

void reconnect() {
  status = WiFi.status();
  if ( status != WL_CONNECTED) {
    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
    }
    Serial.print(".");
    Serial.println("Connected to AP");
  }
}

void setup() {
  // initialize serial for debugging
  Serial.begin(SERIAL_DEBUG_BAUD);
  Serial.println();
  InitWiFi();
  pinMode(LED, OUTPUT);
}

void loop() {
  delay(1000);

  if (WiFi.status() != WL_CONNECTED) {
    reconnect();
  }
  else {
    Serial.print("WiFi sudah terkoneksi dengan ");
    Serial.println(WIFI_SSID);
    Serial.print("IP: ");
    Serial.println(WiFi.localIP());
    digitalWrite(LED, HIGH);
    delay(200);
    digitalWrite(LED, LOW);
  }
}

Jalankan Program

Program tersebut berfungsi untuk mengkoneksikan ESP32 dengan WiFi yang tersedia setelah dilakukan scan pada langkah sebelumnya.
Pada praktikum ini kita menggunakan wifi Guest dari Wokwi.
Hasil koneksi WiFi akan ditampilkan di serial monitor dan ditandai dengan notifikasi LED berkedip.

Tunggu beberapa saat untuk ESP32 melakukan scanning Wifi.
Wifi yang tersedia akan muncul pada serial monitor.
Informasi Wifi meliputi SSID (nama Wifi), RSSI (kekuatan sinyal), serta alamat IP yang digunakan.

Praktek WIFI dengan LED

Rangkaian Program

Kode Program

#include <WiFi.h>

#define WIFI_SSID “Wokwi-GUEST”
#define WIFI_PASSWORD “”

int status = WL_IDLE_STATUS;

int LED_Pin[]={23,22,21,19,18,5,4,2,15,13,12,14};
int x=0;
int i=0;

void InitWiFi()
{
Serial.println(“Connecting to AP …”);

WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(“.”);
digitalWrite(LED_Pin[x], HIGH);
delay(500);
digitalWrite(LED_Pin[x], LOW);
x++;
}
Serial.println(“”);
Serial.println(“Connected to AP”);
}

void reconnect() {
status = WiFi.status();
if ( status != WL_CONNECTED) {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(“.”);
digitalWrite(LED_Pin[x], HIGH);
delay(500);
digitalWrite(LED_Pin[x], LOW);
x++;
}
Serial.println(“”);
Serial.println(“Connected to AP”);
}
}

void setup() {
Serial.begin(115200);
Serial.println();
for (i=0; i < 13; i++)
{
pinMode(LED_Pin[i], OUTPUT);
}
InitWiFi();
}

void loop() {
delay(1000);

if (WiFi.status() != WL_CONNECTED) {
reconnect();
}
else {
Serial.print(“WiFi sudah terkoneksi dengan: “);
Serial.println(WIFI_SSID);
Serial.print(“IP: “);
Serial.println(WiFi.localIP());
for (i=0; i < 13; i++)
{
digitalWrite(LED_Pin[i], HIGH);
delay(200);
digitalWrite(LED_Pin[i], LOW);
}
}
}

Jalankan Program

Simulasi esp32 scan koneksi wifi kemudian dengan indikator running led dari kiri ke kanan

Ref : [1][2][3][4]