Halo Fanbot semuanya? Sedang mengerjakan project apa hari ini? Kita akan belajar Komunikasi 2 NodeMCU ESP8266 tanpa Koneksi Internet (Client Server) nih.
Buat kalian yang sudah pernah bikin project IoT pasti tidak asing dengan produk ESP8266. Produk ini merupakan produk yang biasa di gunakan untuk modul wifi. ESP8266 sudah memiliki banyak produk di pasaran. Salah satu dari produknya adalah NodeMCU ESP8266.
[lwptoc numeration=”none” title=”Daftar Isi”] |
NodeMCU ESP8266 merupakan device yang berfungsi sebagai mikrokontroler seperti layaknya Arduino. namun yang membedaan antara nodeMCU dan arduino adalah kelengkapannya untuk project IoT yaitu sudah memiliki modul wifi sendiri. Jika kita menggunakan arduino UNO, Nano, maupun mega, kita harus menghubungkan dengan modul wifi untuk bisa terkoneksi dengan internet. Namun hanya dengan nodeMCU ESP8266, kita sudah dapat terkoneksi dengan internet. Tentunya dengan program tertentu.
Nah pada project kali ini, kita akan mencoba mengkomunikasikan 2 nodeMCU ini agar saling terhubung dan dapat saling bertukar data. Konsep yang di gunakan dalam program ini adalah salah satu NodeMCU akan di jadikan sebagai server, sedangkan salah satunya akan kita ubah menjadi client. NodeMCU client membutuhkan data berupa nama server, password, dan IP address yang di miliki oleh nodeMCU server.
baca juga: Kontrol Relay BLYNK NodeMCU ESP8266
Server
Berikut ini merupakan program untuk server.
//program server client oleh indobot.co.id #include <ESP8266WiFi.h> //library wifi WiFiServer server(80); IPAddress IP(111,111,1,11); //ip address (bebas tapi format sama) IPAddress mask = (255, 255, 255, 0); void setup() { Serial.begin(9600); WiFi.mode(WIFI_AP); WiFi.softAP("nodemcuserver", "indobot"); //ssid dan password (bebas tanpa spasi) WiFi.softAPConfig(IP, IP, mask); server.begin(); Serial.println(); Serial.println("SERVER NODEMCU ESP8266"); Serial.println("Server dimulai."); Serial.print("IP: "); Serial.println(WiFi.softAPIP()); Serial.print("MAC:"); Serial.println(WiFi.softAPmacAddress()); } void loop() { WiFiClient client = server.available(); if (!client) { return; } String request = client.readStringUntil('\r'); Serial.println("********************************"); Serial.println("Client Mengirim: " + request); //request untuk kiriman client client.flush(); Serial.print("Jumlah Byte yang dikirim: "); //mengetahui jumlah byte Serial.println(client.println(request + " juga" + "\r")); //untuk mengirim ke client } |
Isi pada bagian ip adress, dan WiFi.softAP(“namawifi”,”passworwifi”); pada bagian ini tidak di isi wifi internet anda, tapi wifi di sini, dimaksudkan sebagai penamaan wifi NodeMCU ESP8266 anda. Tidak perlu menggunakan spasi ya gaes. Intinya diisi saja sesuai dengan keinginan kalian. IP Adress pun tidak perlu bingung. Diisi sesuai dengan keinginan kalian, asal tetap ada 4 angka yang dipisahkan dengan tanda koma dan harus angka. Jangan menggunakan huruf.
Untuk menampilkan kiriman dari client, kita dapat menggunakan request seperti program di atas. Sedangkan untuk mengirimkan pesan, kita dapat menggunakan client.println. Jadi untuk server tetap bisa mengirimkan data ke client ya.
Jika sudah, kita bisa lanjutkan untuk nodeMCU satunya yang akan kita gunakan sebagai client.
Konsultasikan project mu bersama Tutor Indobot Academy dengan cara registrasi melalui tombol di bawah!
Client
Berikut ini merupakan program yang dapat digunakan sebagai client.
//program server client oleh indobot.co.id #include <ESP8266WiFi.h> char ssid[] = "nodemcuserver"; // samakan dengan server char pass[] = "indobot"; // samakan dengan server IPAddress server(111,111,1,11); // ini juga samakan dengan server WiFiClient client; void setup() { Serial.begin(9600); WiFi.mode(WIFI_STA); WiFi.begin(ssid, pass); // terhubung dengan server Serial.println(); Serial.println("Terhubung dengan Server?"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(); Serial.println("terhubung"); Serial.println("CLIENT NODEMCU ESP8266"); Serial.print("LocalIP:"); Serial.println(WiFi.localIP()); Serial.println("MAC:" + WiFi.macAddress()); Serial.print("Gateway:"); Serial.println(WiFi.gatewayIP()); Serial.print("AP MAC:"); Serial.println(WiFi.BSSIDstr()); } void loop() { client.connect(server, 80); Serial.println("********************************"); Serial.print("Jumlah Byte yang dikirim: "); Serial.println(client.print("Hallo \r")); //Mengirim ke server String answer = client.readStringUntil('\r'); Serial.println("Server Mengirim: " + answer); //jawaban server client.flush(); client.stop(); delay(2000); } |
Samakan ssid, password dan IP adress dengan server. Ingat! Program arduino IDE menggunakan case sensitive. Sehingga tidak boleh ada perbedaan antara huruf besar kecil. Seperti penjelasan di program tersebut bahwa untuk mengirimkan kalimat, kita hanya perlu mengisi pada bagian client.println. Ganti sesuai dengan keinginan teman-teman semua.
baca juga: Kontrol LED WebServer NodeMCU ESP8266
Program di atas adalah dasar dari penggunaan server client sebagai komunikasi. Pengucapan hallo dari nodeMCU client dan sebaliknya, dapat dilakukan tanpa menggunakan internet. Jika teman-teman ingin menggunakannya sebagai device yang dapat saling mengirim data dengan jarak yang dekat tanpa membutuhkan internet, maka project ini sangat direkomendasikan. Namun perlu teman-teman ketahui, server dapat menerima pesan dari client yang lain juga. Jadi kita dapat menggunakan banyak client yang dapat mengirim ke server dengan format yang berbeda-beda, namun server hanya dapat share data ke semua client tanpa pilih-pilih. Jika teman-teman ingin membuat banyak client namun ingin pengendalian secara khusus, maka kalian dapat menggunakan kode tertentu dipesan dari server untuk dibaca seluruh client, namun hanya beberapa saja yang mengeksekusi.
Begitulah sistem client server. Kalian harus coba si.
Kemudian program di atas baru komunikasi dengan kalimat-kalimat sederhana ya. Belum mengirim data yang dapat dieksekusi. Nah pada tutorial berikutnya kita akan mencoba untuk membuat client server yang dapat mengendalikan sesuatu. Jangan sampai ketinggalan semuanya.
Semangat ngoding.