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.
Penggunaan WiFi ESP32 dapat digunakan menjadi mode Access Point (AP) atau mode Station/Client.
- 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