Pada artikel sebelumnya kita pernah membahas mengenai komunikasi client server antara dua esp8266 yang saling terhubung satu sama lain dan memberikan sebuah output data yang dikirimkan dari client ke server (Baca juga : ESP8266 Arduino IDE – Client Server Communication).
Nah pada tutorial kali ini kita akan membahas lebih lanjut tentang komunikasi dua esp8266. Hasil dari percobaan kali ini kita akan coba untuk mengirimkan data yang dihasilkan dari switch yang terhubung ke esp8266 client (station mode) untuk menghidupkan led yang terhubung ke esp8266 server (hotspot mode).
Skema rangkaian dapat dilihat seperti dibawah ini.
Berikut kode program ESP8266 Client :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | #include <ESP8266WiFi.h> #Define button 5 const char* ssid = "warriornux.com"; // Nama SSID AP/Hotspot const char* password = "1234567890"; // Password Wifi IPAddress host(192,168,4,1); // IP Server int buttonstate = 0; void setup() { Serial.begin(115200); delay(10); pinMode(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 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()); } void loop(){ buttonstate = digitalRead(button); const char* url; if (buttonstate == HIGH) { url="ledoff"; } else { url="ledon"; } int value = 0; 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 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 kode program ESP8266 Server :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include <ESP8266WiFi.h> #define LED 14 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); 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"); // 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(); //Command 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"); // The client will actually be disconnected // when the function returns and 'client' object is detroyed } |
Penjelasan : Ketika button pada esp8266 client ditekan, maka client tersebut akan mengirimkan data ledon kepada esp8266 server, sehingga nantinya led pada esp8266 server akan hidup. Akan tetapi apabila button tidak ditekan, maka esp8266 client akan mengirim data berupa ledoff.
Berikut video demonya :
Sekian merupakan tutorial komunikasi dua esp8266 untuk menghidupkan led, jangan lupa like, subscribe, dan bagikan artikel ini kepada kawan kawan kalian, agar banyak temanmu yang semakin belajar. Selamat mencoba kawan kawan.
Artikel Terkait
- Pengertian Modul Wifi ESP8266 - January 5, 2021
- Setup Desktop GUI di Instance GCP - December 25, 2020
- Menjalankan Aplikasi Android di Ubuntu 16.04 Menggunakan ARChon - December 20, 2020