ESP8266 Arduino IDE – Client Server Communication “Hello Word”

Pada Pembahasan kali ini kita akan membahas mengenai komunikasi dua buah perangkat modul ESP8266, dimana salah satu perangkat akan kita buat sebagai client dan satunya lagi akan dibuat menjadi server. Jadi nantinya client tersebut akan terhubung dengan Hotspot yang sudah dibuat oleh server.
(Baca Juga : Membuat AP/Hotspot Mode ESP8266 dan WiFi Station Mode ESP8266)

Hasil dari percobaan ini nantinya client tersebut dapat berkomunikasi dan mengirimkan data kepada server berupa sebuah teks “Hello Word” yang dapat dilihat pada serial monitor.

Berikut merupakan script yang akan kita gunakan untuk perangkat esp8266 client :

#include <ESP8266WiFi.h>

const char* ssid = "warriornux.com";       // Nama SSID AP/Hotspot
const char* password = "1234567890";       // Password Wifi

IPAddress host(192,168,4,1);       // IP Server

void setup() {
  Serial.begin(115200);
  delay(10);

// Connect to WiFi network ------------------------------------------------
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

// Mengatur WiFi ----------------------------------------------------------
  WiFi.mode(WIFI_STA);                      // Mode Station
  WiFi.begin(ssid, password);               // Mencocokan SSID dan Password
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

// Print status Connect ---------------------------------------------------
  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

int value = 0;

void loop() {
  delay(5000);
  ++value;

  Serial.print("connecting to ");
  Serial.println(host);
  
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }
  
  // We now create a URI for the request
  String url = "Hello Word";
  
  Serial.print("Requesting URL: ");
  Serial.println(url);
  
  // This will send the request to the 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;
    }
  }
  
  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  
  Serial.println();
  Serial.println("closing connection");
}

Berikut merupakan script yang akan kita gunakan untuk perangkat esp8266 Server:

#include <ESP8266WiFi.h>

const char* ssid = "warriornux.com";      // Nama AP/Hotspot
const char* password = "1234567890";    // Password AP/Hotspot

WiFiServer server(80);
void setup() {
  Serial.begin(115200);
  delay(10);
  
 // 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");
  
 // Print the IP address ---------------------------------------------------
  Serial.println(WiFi.localIP());
 }


void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  
  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();
  Serial.println("Client disonnected");

  // The client will actually be disconnected 
  // when the function returns and 'client' object is detroyed
}

Sebelum melakukan upload, pastikan terlebih dahulu library ESP8266 sudah terpasang pada Arduino IDE. Apabila belum, kamu dapat mengikuti intruksi dari artikel berikut : Menambahkan Library ESP8266 pada Arduino IDE

Sesuaikan pengaturan pada board diubah menjadi ESP8266 Generic seperti gambar dibawah ini. Setelah itu upload program ke ESP8266 dan tunggu hingga hingga selesai.

           Screenshot (23)   Screenshot (24)

Setelah kedua perangkat kita masuki progam, maka kita dapat melihat hasilnya pada serial monitor. berikut merupakan hasil dari kedua perangkat tersebut.

Screenshot (28)
Hasil dari ESP8266 Client
Screenshot (27)
Hasil dari ESP8266 Server

Dari kedua hasil berikut dapat kita lihat ESP8266 Client terhubung dengan AP/Hotspot dari ESP8266 Server, setelah client tersebut terhubung maka data yang berupa “Hello Word” dikirimkan kepada ESP8266 Server secara terus menerus. Sedangkan pada ESP8266 Server akan menunggu data yang dikirim oleh client, apabila ada data yang dikirimkan maka Server akan membuat komunikasi baru dan menerima data tersebut sehingga data dapat ditampilkan pada serial monitor.

Baiklah semoga tutorial ini bermanfaat dan jangan lupa untuk bagian pada kawan kawanmu 😀

Tresna Widiyaman Avatar
Subscribe
Notify of
7 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Rest-MAN
Rest-MAN
3 years ago

Gan ada contoh ga kalau espnya sebagai server (AP mode) dan clienya itu smartphone? Tanpa internet, direct gitu

Muhammad Nashir
Muhammad Nashir
4 years ago

saya sudah flash sudah AT OK, nah upload terjadi error : espcomm_upload_mem failed gan

Rip Othman Mirizi
Rip Othman Mirizi
4 years ago

mas yang dikrim cuman bisa format string ya gk bisa integer atau float gitu?

Rip Othman Mirizi
Rip Othman Mirizi
3 years ago

Gan ini komunikasinya pakai protokol 802.11 ya?
Atau protokol yg lain?

Warriornux
4 years ago

Mantap, terimakasih sudah menambahkan solusinya mascomment image

edwinls9
4 years ago

itu saya juga dapat pas pakai nodemcu lolin v3, cara mengatasinya dengan mengubah board type dari generic esp8266 ke nodemcu v1.0