Mengenal Mode Wifi pada Mikrokontroler NodeMCU ESP32

By | September 23, 2023
1,226 Views

Bagi pengguna IoT pasti lebih suka membangun interface ke mikrokontroler berbasis WiFi, salah satunya yang tersedia dipasaran yaitu NodeMCU EPS32. Mikrokontroler kecil ini sangat apik digunakan untuk beragam proyek berbasis IoT. Mengenal Mode Wifi pada Mikrokontroler NodeMCU ESP32 tersedia dalam 3 mode WIFI_STA, WIFI_AP, WIF_AP_STA.

Mari kita jelaskan satu persatu

WiFi.mode(WIFI_STA) station mode: the ESP32 connects to an access point
WiFi.mode(WIFI_AP) access point mode: stations can connect to the ESP32
WiFi.mode(WIFI_AP_STA) access point and a station connected to another access point

 

WIFI_STA atau disebut dengan Wi-Fi Station

ESP32 terhubung ke titik akses hotspot,

ESP32 akan mendapatkan IP addres dari Access Point. Saat ESP32 disetel sebagai stasiun Wi-Fi, ESP32 dapat terhubung ke jaringan lain (seperti router). Dalam skenario ini, router memberikan alamat IP unik ke ESP . Berkomunikasi dengan ESP menggunakan perangkat (stasiun) lain yang juga terhubung ke jaringan yang sama dengan mengacu pada alamat IP unik ESP.

 

Cara mudah mendapatkan IP addresnya seperti berikut

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>


// SSID dan Password WiFi
const char *ssid_wifi = "ZONG MBB-E5573-1D87"; //terhubung ke wifi
const char *password_wifi = "28041441";

void handleRoot() {
server.send(200, "text/html","hello world"); //Send web page
}

void setup() {

   Serial.begin(9600);

   //Mengatur WiFi ----------------------------------------------------------
   //Mode Stasiun (STA) digunakan untuk menghubungkan ESP8266 ke jaringan WiFi yang dibuat oleh titik akses.
   //Perangkat yang terhubung ke jaringan WiFi disebut stasiun (STA)
   WiFi.mode(WIFI_STA);                 
   WiFi.begin(ssid_wifi, password_wifi);

   Serial.println("Connecting to WiFi ..");
   while (WiFi.status() != WL_CONNECTED) {
      Serial.print('.');
      delay(1000);
   }

    Serial.println("");
    Serial.print("Local IP: ");
    Serial.println(WiFi.localIP());
    Serial.print("Subnet Mask: " );
    Serial.println(WiFi.subnetMask());
    Serial.print("Gateway IP: ");
    Serial.println(WiFi.gatewayIP());
    Serial.print("DNS 1: ");
    Serial.println(WiFi.dnsIP(0));
    Serial.print("DNS 2: ");
    Serial.println(WiFi.dnsIP(1));   
 server.on("/",handleRoot);
server.begin();

}

// the loop routine runs over and over again forever:
void loop() {
  delay(100);
}

nanti di router/hotspot akan terhubung, seperti berikut IP Address nya 192.168.8.101

See also  Membuat Relay Berbasis Wifi dengan NodeMCU

WiFi.mode(WIFI_AP) disebut dengan Access Point

Saat  mengatur papan ESP32 sebagai titik akses, kita dapat terhubung menggunakan perangkat apa pun dengan kemampuan Wi-Fi untuk terhubung langsung ke ESP32.

Karena ESP32 tidak terhubung lebih jauh ke jaringan kabel seperti router , ini disebut soft-AP (soft Access Point). Artinya jika kita mencoba memuat perpustakaan atau menggunakan firmware dari internet, itu tidak akan berhasil. Ini juga tidak berfungsi jika kita membuat permintaan HTTP ke layanan di internet untuk mempublikasikan pembacaan sensor ke cloud atau menggunakan layanan di internet (seperti mengirim email, misalnya).

Atur ESP32 sebagai Access Point

Untuk mengatur ESP32 sebagai titik akses, atur mode Wi-Fi ke titik akses:

WiFi.mode(WIFI_AP)

 

Lalu, gunakan metode softAP() sebagai berikut:

WiFi.softAP(ssid, kata sandi);

Contoh lebih lengkapnya yaitu

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>



//mode AP
const char *ssid_AP = "radiofm"; //menjadi hotspot AP acces point
const char *password_AP = "12345678";

void handleRoot() {
server.send(200, "text/html", "hello world"); //Send web page
}

void setup() {

   Serial.begin(9600);
   //alamat http://192.168.4.1/
    WiFi.mode(WIFI_AP);
    WiFi.softAP(ssid_AP, password_AP);   // Membuat Access Point
    //Titik akses (AP) adalah perangkat yang menyediakan akses ke jaringan Wi-Fi ke perangkat lain (stasiun) dan menghubungkannya lebih jauh ke jaringan kabel
    //Koneksi ke Wi-Fi disediakan oleh titik akses (AP)
 server.on("/",handleRoot);
server.begin();

}

// the loop routine runs over and over again forever:
void loop() {
  delay(100);
}

Nanti kalian bisa cek di WiFi ponsel/laptop akan tersedia Wifi Point dengan nama radiofm. Untuk IP Address nya yaitu 192.168.4.1

Wi-Fi Station + Access Point

ESP32 dapat diatur sebagai stasiun Wi-Fi dan titik akses secara bersamaan. Setel modenya ke WIFI_AP_STA.

WiFi.mode(WIFI_AP_STA);

dimana modul ini nantinya akan menjadi station (Penerima WiFi) sekaligus memancarkan WiFi Hotspot. Fitur Ini merupakan salah satu keunggulan dari modul ESP8266 yang dapat menjalankan kedua mode ini secara bersamaan, nama mode ini dinamakan Both Mode pada ESP8266. Contohnya saya jadikan 1 saja, mode = 3

#include <ESP8266WiFi.h>

#include <ESP8266WebServer.h>



// SSID dan Password WiFi
const char *ssid_wifi = "ZONG MBB-E5573-1D87"; //terhubung ke wifi
const char *password_wifi = "28041441";

const char *ssid_AP = "radiofm"; //menjadi hotspot AP acces point
const char *password_AP = "12345678";



ESP8266WebServer server(80); //Server on port 80

void handleRoot() {
 server.send(200, "text/html", "hello world"); //Send web page
}



void setup() {

  Serial.begin(9600);
  
  int mode = 3; //artinya hotspot AP dan station
  if (mode==1){
    //alamat http://192.168.4.1/
    WiFi.mode(WIFI_AP);
    WiFi.softAP(ssid_AP, password_AP);   // Membuat Access Point

    //Titik akses (AP) adalah perangkat yang menyediakan akses ke jaringan Wi-Fi ke perangkat lain (stasiun) dan menghubungkannya lebih jauh ke jaringan kabel
    //Koneksi ke Wi-Fi disediakan oleh titik akses (AP)
    
  }
  if(mode==2){ //terhubung ke WIFI
    //Mengatur WiFi ----------------------------------------------------------
    //Mode Stasiun (STA) digunakan untuk menghubungkan ESP8266 ke jaringan WiFi yang dibuat oleh titik akses.
    //Perangkat yang terhubung ke jaringan WiFi disebut stasiun (STA)
    WiFi.mode(WIFI_STA);

    /*
    // Configures static IP address
    if (!WiFi.config(local_IP, gateway, subnet)) {
      Serial.println("STA Failed to configure");
    }	
    */
    WiFi.begin(ssid_wifi, password_wifi);

    Serial.println("Connecting to WiFi ..");
    while (WiFi.status() != WL_CONNECTED) {
      Serial.print('.');
      delay(1000);
    }
    Serial.println("");
    Serial.print("Local IP: ");
    Serial.println(WiFi.localIP());
    Serial.print("Subnet Mask: " );
    Serial.println(WiFi.subnetMask());
    Serial.print("Gateway IP: ");
    Serial.println(WiFi.gatewayIP());
    Serial.print("DNS 1: ");
    Serial.println(WiFi.dnsIP(0));
    Serial.print("DNS 2: ");
    Serial.println(WiFi.dnsIP(1)); 
  }
  if (mode==3){
    WiFi.mode(WIFI_AP_STA);
    WiFi.softAP(ssid_AP, password_AP);
    WiFi.begin(ssid_wifi, password_wifi);
    Serial.println("Connecting to WiFi ..");
    while (WiFi.status() != WL_CONNECTED) {
      Serial.print('.');
      delay(1000);
    }
    Serial.println("");
    Serial.print("Local IP: ");
    Serial.println(WiFi.localIP());
    Serial.print("Subnet Mask: " );
    Serial.println(WiFi.subnetMask());
    Serial.print("Gateway IP: ");
    Serial.println(WiFi.gatewayIP());
    Serial.print("DNS 1: ");
    Serial.println(WiFi.dnsIP(0));
    Serial.print("DNS 2: ");
    Serial.println(WiFi.dnsIP(1)); 


  }
    
  server.on("/",handleRoot);

  server.begin();
}

// the loop routine runs over and over again forever:
void loop() {
  server.handleClient();
  delay(100);
}

Kontrol NodeMCU via Wifi

Nanti kita akan bahas menggunakan NodeMCU sebagai server sehingga kita bisa mengendalikan via jaringan WIFI, tentu akan lebih menarik jika menggunakan ajax sehingga nggak perlu melakukan refresh halaman.

See also  Membuat Radio FM dengan Modul Tea5767 berbasis Wifi

Bisa kalian gunakan relay sebagai pengganti stopkontak aliran listrik sehingga bisa menghidup matikan lampu dan peralatan lainnya