Halo Fanbot! Ada project apa hari ini?Sudah pernah menghubungkan 2 NodeMCU tanpa internet?Buat apa? Pakai internet aja lebih praktis kan? Tidak juga. Jika kita menghubungkan dengan internet, otomatis kita membutuhkan koneksi internet dan harus terhubung.Nah kali ini, kita akan membuat project pengiriman data pembacaan sensor dari NodeMCU ke NodeMCU lainnya. Bagaimana caranya? yuk kita simak.
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 untuk mengkomunikasikan 2 nodeMCU ini agar dapat terhubung dan dapat melakukan kirim terima data. Konsep yang digunakan dalam program ini adalah salah satu NodeMCU akan dijadikan sebagai server, sedangkan salah satunya akan kita ubah menjadi client. NodeMCU client membutuhkan data berupa nama server, password, dan IP address yang dimiliki oleh nodeMCU server. Jadi dalam project ini, kita akan membaca sensor yang ada di NodeMCU bagian Client, kemudian client mengirimkannya ke server. Data ini dapat ditampilkan di kedua tempat dari NodeMCU Client dan NodeMCU Server.
Langsung saja kita buat.
Alat dan Bahan
Alat dan bahan untuk project ini adalah sebagai berikut.
- Software Arduino ID
- NodeMCU ESP8266 2
- DHT11 1
- LCD 16×2 2
- I2C 2
- Projectboard 2
- Kabel jumper Secukupnya
Rangkaian
Susun device di atas menjadi rangkaian seperti berikut. Pastikan semua terhubung dengan baik.
Belajar Elektronika, Arduino, dan IoT step by step dengan bantuan tangga belajar? Daftar sekarang dan dapatkan PROMO
Program
Tahap selanjutnya adalah penulisan program pada Arduino IDE. Buatlah program seperti berikut. Perhatikan keterangan (comment) untuk memahami program dengan baik. Jangan lupa untuk menambahkan beberapa library untuk mendukung program, seperti library DHT, Adafruit Sensor, dan Liquid Crystal I2C.
//program server client oleh indobot.co.id #include <ESP8266WiFi.h> //library wifi #include <LiquidCrystal_I2C.h> WiFiServer server(80); IPAddress IP(111,111,1,11); //ip address (bebas tapi format sama) IPAddress mask = (255, 255, 255, 0); LiquidCrystal_I2C lcd(0x27,16,2); void setup() { Serial.begin(9600); lcd.init(); lcd.backlight(); 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 lcd.setCursor(0,0); lcd.print("Temperatur :"); lcd.setCursor(0,1); lcd.print(request); lcd.print(" *C"); } |
baca juga: Komunikasi 2 NodeMCU ESP8266 tanpa Koneksi Internet (Client Server)
Isi pada bagian ip adress, dan WiFi.softAP(“namawifi”,”passworwifi”); pada bagian ini tidak diisi wifi internet anda, tapi wifi di sini, dimaksudkan sebagai penamaan wifi NodeMCU ESP8266 anda. Tidak perlu menggunakan spasi ya. 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.
#include ESP8266WiFi #include "DHT.h" #include LiquidCrystal_I2C. LiquidCrystal_I2C lcd(0x27,16,2); 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; #define DHTPIN D3 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); lcd.init(); lcd.backlight(); dht.begin(); 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() { float t = dht.readTemperature(); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C "); client.connect(server, 80); Serial.println("********************************"); Serial.print("Jumlah Byte yang dikirim: "); client.print((String) t+"\r"); //Mengirim ke server String answer = client.readStringUntil('\r'); // Serial.println("Server Mengirim: " + answer); //jawaban server lcd.setCursor(0,0); lcd.print("Temperatur :"); lcd.setCursor(0,1); lcd.print(t); lcd.print(" *C"); client.flush(); client.stop(); delay(2000); } |
baca juga: Monitoring Suhu dan Kelembaban Ruang Budidaya Jamur Tiram dengan WebServer
Samakan ssid, password dan IP adress dengan server. Ingat! Program arduino IDE menggunakan case sensitive. Sehingga tidak boleh ada perbedaan antara huruf besar kecil.
Upload kedua program di atas sesuai dengan NodeMCU masing-masing. Hasil dari project ini adalah kita dapat menampilkan 2 hasil pembacaan tanpa menggunakan 2 sensor atau tanpa menggunakan kabel panjang untuk menghubungkannya. Cara ini dapat di terapkan pada suatu ruang yang ingin menampilkan suhu di dalam ruangan yang dapat di lihat dari luar ruangan sebelum masuk ke ruangan tersebut dan di dalam ruangan untuk mengetahui suhu di sekitarnya.
Penasaran ingin mencoba? coba aja. Semangat gaes.
Mau belajar elektronika dasar? Arduino? atau Internet of Things? Ikuti kursus online Indobot Academy!