Hallo sahabat Indobot. Pada artikel sebelumnya, Komunikasi 2 NodeMCU kita sudah belajar terkait bagaimana menghubungkan 2 NodeMCU ESP8266 dengan mengirimkan kata-kata sederhana.
Menghubungkan 2 device ada banyak cara, mulai dari penggunaan kabel, bluetooth, wifi, bahkan dapat juga menggunakan internet. NodeMCU dengan segala fasilitasnya, dapat menggunakan cara-cara tersebut untuk saling terhubung. Apa fungsinya device harus saling terhubung?
[lwptoc numeration=”none” title=”Daftar Isi”] |
Sederhananya adalah untuk bertukar data. Mikrokontroler sebagai device yang sangat identik dengan otomatisasi, akan sangat berguna ketika banyak data yang dapat diperoleh. Selain itu, banyak juga data yang harus diolah dengan menggabungkan data-data yang tersebar di beberapa device. Akan sangat membuang-buang waktu jika kita harus mengumpulkan satu-satu dengan manual. Oleh karena itulah device butuh saling berkomunikasi.
Sistem pengiriman data dengan wifi sebenarnya bukan IoT (karena tidak membutuhkan koneksi internet) namun jika kita hanya butuh menghubungkan komunikasi antara 2 device yang berdekatan, bukankah akan sia-sia jika kita membutuhkan koneksi internet?
Penggunaan wifi dengan sistem client server ini diartikan sebagai pengiriman data secara langsung dari client ke server, di mana salah satu NodeMCU menjadi client, dan salah satunya menjadi server. Selain itu, server juga dapat menyebarkan data ke seluruh client (jika kita menggunakan lebih dari 1 client).
Dalam project kali ini, kita akan coba membuat percobaan pengiriman data dari client ke server berupa informasi apakah tombol button sudah menyala atau belum, kemudian setelah server sudah mengetahui keadaan dari tombol di client, server dapat menyalakan LED di NodeMCU server. Cara inilah yang digunakan untuk menyalakan LED dengan komunikasi 2 NodeMCU ESP8266.
Langsung saja kita buat simulasinya.
Menyalakan LED dengan Komunikasi 2 NodeMCU ESP8266
Siapkan Alat dan Bahan
Alat dan bahan yang digunakan untuk project kita kali ini adalah sebagai berikut. Jangan sampai ada yang kelewat ya.
- laptop/PC yang terinstall Arduino IDE
- NodeMCU ESP8266 2
- LED 1
- Resistor 2
- Button 1
- Breadboard 2
- Kabel jumper secukupnya
baca juga: Komunikasi 2 NodeMCU ESP8266 tanpa Koneksi Internet (Client Server)
Susun Skema Rangkaian
Susunlah rangkaian seperti berikut ini.
Tulislah Program pada Aplikasi Arduino IDE
Tulislah program arduino seperti berikut. Jangan sampai ada yang terlewat ya. Baca keterangan-keterangan yang dituliskan dalam bentuk comment agar teman-teman juga memahami program yang teman-teman buat.
Program di bawah ini adalah program untuk SERVER. Ingat ya. Server yang ada LEDnya. Sambungkan dengan USB dan kirimkan k NodeMCU sebagai Server.
#include <ESP8266WiFi.h> #define LED D1 const char* ssid = "warriornux.com"; // Nama hotspot sebagai server const char* password = "1234567890"; // Password hotspot WiFiServer server(80); void setup() { Serial.begin(115200); delay(10); pinMode(LED, OUTPUT); digitalWrite(LED, LOW); // Mengatur WiFi Serial.println(); Serial.print("Configuring access point..."); WiFi.mode(WIFI_AP); // Mode AP/Hotspot WiFi.softAP(ssid, password); // Start the server server.begin(); Serial.println("Server dijalankan"); // menampilkan IP Address yang akan dituliskan di client Serial.println(WiFi.localIP()); } void loop() { WiFiClient client = server.available(); if (!client) { return; } // menunggu client mengirim data Serial.println("new client"); while(!client.available()){ delay(1); } // melihat hasil pengiriman data dari client String req = client.readStringUntil('\r'); Serial.println(req); client.flush(); //menyalakan/mematikan LED if (req.indexOf("ledon") != -1){ digitalWrite(LED, HIGH); } else if (req.indexOf("ledoff") != -1){ digitalWrite(LED, LOW); } else { Serial.println("invalid request"); client.stop(); return; } client.flush(); Serial.println("Client disonnected"); } |
baca juga: Kontrol LED WebServer NodeMCU ESP8266
Upload dan coba lihat di serial monitor, jika sudah muncul IPAddress, copy IP Address tersebut ke program client. Berikut ini merupakan program untuk client.
#include <ESP8266WiFi.h> #define button 5 //tombol untuk dikirim ke server const char* ssid = "namahotspot"; // Nama hotspot (samakan dengan server) const char* password = "passwordhotspot"; // Password hotspot (samakan dengan server IPAddress host(192,168,4,1); // IPAdress Server int buttonstate = 0; void setup() { Serial.begin(115200); delay(10); pinMode(button, INPUT); //inisialisasi button input // Connect to WiFi network ------------------------------------------------ Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); // Mengatur WiFi ---------------------------------------------------------- WiFi.mode(WIFI_STA); // Mode Station untuk client WiFi.begin(ssid, password); // Mencocokan SSID dan Password dengan server while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // menunjukkan status koneksi Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop(){ buttonstate = digitalRead(button); const char* url; if (buttonstate == HIGH) { //jika button ditekan url="ledoff"; } else { url="ledon"; } int value = 0; delay(5000); ++value; Serial.print("connecting to "); Serial.println(host); // menggunakan wifi client WiFiClient client; const int httpPort = 80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } // membuat URL Request Serial.print("Requesting URL: "); Serial.println(url); // Mengirimkan Request ke server client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); unsigned long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(">>> Client Timeout !"); client.stop(); return; } } // membaca jawaban dari server while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line); } Serial.println(); Serial.println("closing connection"); } |
Pastikan nama hotspot dan password sama dengan server. Kemudian IP Address diisi dengan IP Address yang muncul pada serial monitor di bagian server.
Jika sudah selesai, silakan coba dengan klik button untuk menyalakan LED.
Bagaimana? Berhasil? Semoga semua bisa berhasil yaa. Selamat mencoba