
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
Contents
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
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.
Bisa kalian gunakan relay sebagai pengganti stopkontak aliran listrik sehingga bisa menghidup matikan lampu dan peralatan lainnya