NodeMCU ESP8266 : Menyalakan LED dengan 2 Komunikasi

Indobot Update

Menyalakan LED dengan Komunikasi 2 NodeMCU
Cara Menyalakan LED dengan Komunikasi 2 NodeMCU ESP8266

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.

Menyalakan LED dengan Komunikasi 2 NodeMCU ESP8266

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?

Baca Juga Komunikasi 2 Node MCU ESP8266 Tanpa 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.

  1. laptop/PC yang terinstall Arduino IDE
  2. NodeMCU ESP8266 2
  3. LED 1
  4. Resistor   2
  5. Button 1
  6. Breadboard 2
  7. 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

Ingin Tahu Program Kami Lebih Lanjut?

Silahkan isi Formulir Dibawah Ini untuk Diskusi dengan Tim Indobot Academy.

Baca Juga

Bagikan:

Tinggalkan komentar

whatsapp whatsapp