Pada subbab ini, kita akan menjalankan skenario komunikasi TCP antara dua perangkat wemos, yang dimana salah satu perangkat wemos akan menjadi server dan satunya akan menjadi client. Komunikasi yang dilakukan nantinya tidak terkait dengan bahasa pemrograman PHP dan HTML. Jadi yang kita bahas kali ini hanyalah protokol komunikasi TCP/IP antara perangkat wemos. Antara wemos tersebut nantinya akan bertukar data antara satu sama lain. Client akan mengirimkan perintah dan server akan membalas perintah tersebut.
Tujuan
1. Peserta dapat memahami konsep kerja dari TCP IP.
2. Peserta dapat memahami komunikasi antara wemos dengan menggunakan protokol TCP IP.
Bahan-Bahan yang Digunakan
1. Satu buah Wemos D1 Mini.2. Satu buah wemos lolin32.
3. Kabel secukupnya.
4. DHT11.
5. LDR.
6. Satu buah push button.
7. Dua buah LED.
8. Kabel Micro USB.
Langkah-Langkah secara Umum
1. Rangkaialah sesuai Gambar 18.2. Ketik koding yang tersedia pada sketch arduino.
3. Setelah selesai di ketik kodingnya, diunggah kodingnya.
4. Tunggu hingga selesai unggahannya, setelah selesai pengunggahannya, rangkaian dapat dijalankan.
5. Buka serial monitor untuk melihat hasilnya.
Gambar Rangkaian
40
Gambar 18 Komunikasi Antara Perangkat Wemos dengan TCP IP
Koding
A. Koding Server Wemos D1 Mini
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
char ssid[] = "BGPLaptop";
char pass[] = "bagusgilang";
WiFiServer server(80);
IPAddress ip(192, 168, 137, 80);
IPAddress gateway(192, 168, 137, 1);
IPAddress subnet(255, 255, 255, 0);
void setup() {
Serial.begin(115200);
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) { Serial.print(".");
delay(500);
}
server.begin();
Serial.print("IP : ");
Serial.println(WiFi.localIP());
Serial.println();
}
void loop () {
WiFiClient client = server.available();
if (client) {
if (client.connected()) {
41
Serial.println(".");
String request = client.readStringUntil('\r');
Serial.print("From client: ");
Serial.println(request);
Serial.print("IP : ");
Serial.println(client.remoteIP());
client.flush();
client.println("Hi client! No, I am listening.\r");
}
client.stop();
} }
B. Koding Client Wemos Lolin32
#include <ESP8266WiFi.h
#include <WiFiClient.h>
char ssid[] = "BGPLaptop";
char pass[] = "bagusgilang";
IPAddress server(192,168,0,80);
WiFiClient client;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) { Serial.print(".");
delay(500);
}
Serial.print("IP : ");
Serial.println(WiFi.localIP());
Serial.println();
}
void loop () {
client.connect(server, 80);
Serial.println(".");
client.println("Hello server! Are you sleeping?\r");
String answer = client.readStringUntil('\r');
Serial.println("from server: " + answer);
client.stop();
delay(2000);
}
Penjelasan Koding
42
A. Koding Server Wemos D1 mini
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
char ssid[] = "BGPLaptop";
char pass[] = "bagusgilang";
WiFiServer server(80);
IPAddress ip(192, 168, 137, 80);
IPAddress gateway(192, 168, 137, 1);
IPAddress subnet(255, 255, 255, 0);
Pada koding di atas, kita akan menyetel wemos yang akan dijadikan sebagai server untuk bekerja di port 80 (WiFiServer server(80)). Untuk memudahkan akses terhadap server, maka kita akan menyetel dari awal alamat IP, gateway, dan subnet mask-nya.
void setup() {
Serial.begin(115200);
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) { Serial.print(".");
delay(500);
}
Kemudian, kita menghubungkan wemos ke server yang ada. Dalam skenario ini, kita menjalankan wemos sebagai station. Wemos juga kita konfigurasi agar ip, gateway, dan subnet-nya sesuai dengan yang kita tentukan di bagian koding sebelumnya (WiFi.config(ip, gateway, subnet);).
server.begin();
Serial.print("IP : ");
Serial.println(WiFi.localIP());
}
Setelah kita menghubungkan wemos dengan WiFi, maka langkah selanjutnya adalah menyalakan server-nya dan mencetak di serial monitor alamat IP-nya.
void loop () {
WiFiClient client = server.available();
if (client) {
if (client.connected()) { Serial.println(".");
String request = client.readStringUntil('\r');
Serial.print("From client: "); Serial.println(request);
Serial.print("IP : "); Serial.println(client.remoteIP());
client.flush();
client.println("Hi client! No, I am listening.\r");
}
client.stop();
}
43
}
Syntax koding di atas, akan membaca apakah ada client yang terhubung dengan server wemos. jika terhubung, maka server akan membaca masukkan dari client. Jika client memberikan masukan, maka akan dibalas oleh server sesuai dengan yang kita perintahkan dan juga server akan mencetak alamat IP dari client yang terhubung. Di akhir koding, setiap koneksi yang tersambung, akan diputuskan sehingga jika terdapat koneksi dari perangkat lain, perangkat yang lain tidak terblokir dengan sendirinya.
B. Koding Client Wemos Lolin32
#include <WiFi.h>
#include <WiFiClient.h>
char ssid[] = "BGPLaptop";
char pass[] = "bagusgilang";
IPAddress server(192,168,137,80);
WiFiClient client;
Pada koding di atas, kita memberikan informasi mengenai jaringan WiFi yang akan kita koneksikan dengan wemos. kemudian, kita membuat kelas dengan tipe IPAddress bernama server, yang berguna untuk akses menuju server. Dalam kelas server, kita memasukkan IP address server yang kita tuju. Lalu, kita juga membuat kelas bernama client dengan tipe WiFiClient yang berguna untuk mengatur komunikasi antara server dan client.
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) { Serial.print(".");
delay(500);
}
Serial.print("IP : ");
Serial.println(WiFi.localIP());
}
Pada koding ini, kita mengoneksikan wemos client dengan jaringan WiFi. Setelah terkoneksi, kita mencetak alamat IP yang diberikan ke dalam serial monitor.
void loop () {
client.connect(server, 80);
Serial.println(".");
client.println("Hello server! Are you sleeping?\r");
String answer = client.readStringUntil('\r');
Serial.println("from server: " + answer);
client.stop();
delay(2000);
}
44
Pada koding client.connect(server, 80);, kita mengoneksikan wemos client ke wemos server. Setelah terkoneksi, kita akan mengirimkan perintah berupa kalimat “Hello Server! Are you sleeping?\r”. Setelah mengirimkan perintah tersebut, kita akan membaca apakah ada balasan dari server atau tidak. Balasan yang diterima nantinya akan di cetak ke dalam serial monitor. Setelah terjadi komunikasi antar client dan server, maka client akan memutuskan hubungan dengan server yang bersangkutan. Kemudian menjalankan tunda kerja selama dua detik.
Hasil Penerapan Koding
A. Koding ServerGambar 19 Hasil komunikasi dari sudut pandang server.
Gambar 15 merupakan hasil komunikasi antara server dan client yang dimana pihak server mencetak apa yang dikirimkan oleh client.
B. Koding Client
45
Gambar 20 Hasil komunikasi antara server dan client dari sudut pandang client.
Gambar 16 merupakan hasil komunikasi antara client dan server. Pihak client akan menerima jawaban dari server setelah mengirimkan perintah kepadanya.