ESP8266 Nodemcu + LCD i2C : Control 4 Relay / Lampu dengan Aplikasi Wifi Android
Sebelum mempraktekan Tutorial ini apabila anda belum pernah menggunakan ESP8266 Nodemcu atau belum pernah memprogram esp8266 dengan Arduino IDE silahkan kunjungi link berikut untuk tutorial awal penggunaan ESP8266 Nodemcu dengan Arduino IDE.
Link : http://www.belajarduino.com/2016/06/iot-nonemcu-esp8266-with-arduino-ide.html
atau klik
A.Bahan dan Module yang dibutuhkan
-1Unit ESP8266 Nodemcu (12E) dengan CH340 ataupun CP2102-1Unit LCD 1602 dengan i2C connection
-1 Unit Relay Module 5V 4channel
-Kabel Jumper secukupnya
Note : klik www.tokopedia.com/rajacell untuk mendapatkan semua kebutuhan module dalam project ini
B.Wiring
1.Wiring i2C LCD dengan ESP8266 Nodemcui2C <--> Nodemcu
* VCC : Pin VV / VU (5V USB Voltage)
* GND : Pin G / GND
* SDA : Pin D4
* SCL : Pin D3
2.Wiring Module Relay 4Ch dengan ESP8266 Nodemcu
* GND : Pin GND
* IN1 : Pin D5
* IN2 : Pin D6
* IN3 : Pin D7
* IN4 : Pin D8
* VCC : Pin VV / VU (5V USB Voltage)
Pastikan wiring sesuai gambar dibawah ini :
Biasanya i2C LCD1602/2004 memiliki address default 0x3F untuk keluaran baru, atau 0x27 untuk keluaran lama.Pastikan anda menyesuaikan i2C address pada coding sesuai i2C address LCD anda.
Apabila LCD tidak menampilkan text bisa saja anda salah dalam menentukan address dari i2C LCD nya atau belum setting contrast,untuk setting contrast text putar VR/trimpot yang berada dibelakan i2C board dengan obeng+ dan atur sampai text terlihat dengan sempurna.
C.Library
-Library LiquidCrystal_I2C silahkan download disini.*Pastikan anda sudah install Board ESP8266 pada arduino ide anda
karena beberapa library yang dibutuhkan inclued ke dalam file Board ESP8266
Bagaimana cara menambahkan Board ESP8266 ke Arduino IDE silahkan lihat tutorial pada link berikut : http://www.belajarduino.com/2016/06/iot-nonemcu-esp8266-with-arduino-ide.html
Setelah melakukan download semua library yang dibutuhkan (Liquid Crystal i2C) kemudian ekstract menggunakan aplikasi Winrar/Winzip dan copy master folder yang ada di dalamnya ke dalam folder 'libraries' yang ada pada directory installer Arduino IDE.
Secara default ada di lokasi :
Windows 64bit = C:\Program Files (x86)\Arduino\libraries
Windows 32bit = C:\Program Files \Arduino\libraries
D.Sourch Code
Copy paste coding dibawah ini ke dalam Arduino IDE anda dan Upload ke Board Arduino Anda ://Coding ini dibuat oleh dani-Rajacell untuk www.belajarduino.com //Tutorial ini didukung oleh www.tokopedia.com/rajacell #include <ESP8266WiFi.h> #include <Wire.h> // i2C Conection Library #include <LiquidCrystal_I2C.h> //i2C LCD Library //Gunakan define dibawah ini untuk jenis Relay Module HIGH ACTIVE //atau jika menggunakan LED atau MOSFET driver dengan trigger (+) vcc //#define ON 1 //#define OFF 0 //Gunakan define dibawah ini untuk jenis Relay Module LOW ACTIVE #define ON 0 #define OFF 1 // Set the LCD address to 0x3F for a 16 chars and 2 line display //pastikan i2C Address LCD anda sesuai dengan yang ditulis di sketch LiquidCrystal_I2C lcd(0x3F , 16, 2); const char* ssid = "RAJACELL"; //<-Ganti dengan nama jaringan wifi anda const char* password = "Rajacellisthebest"; //<- Ganti dengan password wifi anda //Wiring Relay ke module Nodemcu const int LED1 = 15; //D8 on ESP Board const int LED2 = 13; //D7 on ESP Board const int LED3 = 12; //D6 on ESP Board const int LED4 = 14; //D5 on ESP Board bool value1 = LOW; bool value2 = LOW; bool value3 = LOW; bool value4 = LOW; WiFiServer server(80); // Wifi PORT int delayLCD = 750; // delay pergantian text pada LCD 1602 (mS) //Coding ini dibuat oleh dani-Rajacell untuk www.belajarduino.com //Tutorial ini didukung oleh www.tokopedia.com/rajacell void setup() { Serial.begin(115200); // initialize the LCD Wire.begin(2, 0); lcd.begin(); lcd.setCursor (0,0); lcd.print("Hello, world!"); lcd.setCursor (0,1); lcd.print("belajarduino.com"); delay (delayLCD); pinMode(LED1, OUTPUT); digitalWrite(LED1, LOW); pinMode(LED2, OUTPUT); digitalWrite(LED2, LOW); pinMode(LED3, OUTPUT); digitalWrite(LED3, LOW); pinMode(LED4, OUTPUT); digitalWrite(LED4, LOW); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); lcd.setCursor (0,0); lcd.print ("Connecting to..."); lcd.setCursor (0,1); lcd.print (ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); lcd.print ("."); } Serial.println(""); Serial.println("WiFi connected"); lcd.clear(); lcd.setCursor (0,0); lcd.print (" WiFi connected "); // Start the server server.begin(); Serial.println("Server started"); lcd.setCursor (0,1); lcd.print (" Server started "); delay (2000); // Print the IP address Serial.print("Use this URL to connect: "); Serial.print("http://"); Serial.print(WiFi.localIP()); Serial.println("/"); lcd.clear(); lcd.setCursor (0,0); lcd.print ("ESP8266 URL ADRS"); lcd.setCursor (0,1); lcd.print (WiFi.localIP()); delay (2000); } //Coding ini dibuat oleh dani-Rajacell untuk www.belajarduino.com //Tutorial ini didukung oleh www.tokopedia.com/rajacell void loop() { // Check if a client has connected WiFiClient client = server.available(); if (!client) { //lcd.clear(); lcd.setCursor (0,0); lcd.print ("ESP8266 URL ADRS"); lcd.setCursor (0,1); lcd.print (WiFi.localIP()); lcd.print (" "); return; } // Wait until the client sends some data Serial.println("new client"); lcd.clear(); lcd.setCursor (0,0); lcd.print ("Client Send Data"); while(!client.available()){ delay(1); } // Read the first line of the request String request = client.readStringUntil('\r'); Serial.println(request); lcd.setCursor (0,1); lcd.print (request); delay(1000); client.flush(); // Set LED according to the request client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<fieldset>"); client.println("<font color = redq>"); client.print("Control 4 LED Via Wifi"); client.println("</font>"); client.println("</fieldset>"); client.println("<br><br>"); //Program Here // Return the response LED1 //client.print("LED1 is now: "); // Control LED 1 if (request.indexOf("/status1=1") != -1) { digitalWrite(LED1, ON); value1 = HIGH; lcd.setCursor(0,0); lcd.print("LED1 set to ON "); lcd.setCursor(0,1); lcd.print("by Client Reques"); delay (delayLCD); } if (request.indexOf("/status1=0") != -1) { digitalWrite(LED1, OFF); value1 = LOW; lcd.setCursor(0,0); lcd.print("LED1 set to OFF "); lcd.setCursor(0,1); lcd.print("by Client Reques"); delay (delayLCD); } if(value1==HIGH){ client.println("<br><br>"); client.print("status1=1"); } if(value1==LOW){ client.println("<br><br>"); client.print("status1=0"); } //client.println("<br><br>"); //client.println("<a href=\"/LED1=ON\"\"><button>LED1 ON </button></a>"); //client.println("<a href=\"/LED1=OFF\"\"><button>LED1 OFF </button></a><br />"); //client.println("</html>"); //Coding ini dibuat oleh dani-Rajacell untuk www.belajarduino.com //Tutorial ini didukung oleh www.tokopedia.com/rajacell // Return the response LED2 //client.println("<br><br>"); //client.print("LED2 is now: "); // Control LED 2 if (request.indexOf("/status2=1") != -1) { digitalWrite(LED2, ON); value2 = HIGH; lcd.setCursor(0,0); lcd.print("LED2 set to ON "); lcd.setCursor(0,1); lcd.print("by Client Reques"); delay (delayLCD); } if (request.indexOf("/status2=0") != -1) { digitalWrite(LED2, OFF); value2 = LOW; lcd.setCursor(0,0); lcd.print("LED2 set to OFF "); lcd.setCursor(0,1); lcd.print("by Client Reques"); delay (delayLCD); } if(value2==HIGH){ client.println("<br><br>"); client.print("status2=1"); } if(value2==LOW){ client.println("<br><br>"); client.print("status2=0"); } //client.println("<br><br>"); //client.println("<a href=\"/LED2=ON\"\"><button>LED2 ON </button></a>"); //client.println("<a href=\"/LED2=OFF\"\"><button>LED2 OFF </button></a><br />"); //client.println("</html>"); //Coding ini dibuat oleh dani-Rajacell untuk www.belajarduino.com //Tutorial ini didukung oleh www.tokopedia.com/rajacell // Return the response LED3 //client.println("<br><br>"); //client.print("LED3 is now: "); // Control LED 3 if (request.indexOf("/status3=1") != -1) { digitalWrite(LED3, ON); value3 = HIGH; lcd.setCursor(0,0); lcd.print("LED3 set to ON "); lcd.setCursor(0,1); lcd.print("by Client Reques"); delay (delayLCD); } if (request.indexOf("/status3=0") != -1) { digitalWrite(LED3, OFF); value3 = LOW; lcd.setCursor(0,0); lcd.println("LED3 set to OFF "); lcd.setCursor(0,1); lcd.println("by Client Reques"); delay (delayLCD); } if(value3==HIGH){ client.println("<br><br>"); client.print("status3=1"); } if(value3==LOW){ client.println("<br><br>"); client.print("status3=0"); } //client.println("<br><br>"); //client.println("<a href=\"/LED3=ON\"\"><button>LED3 ON </button></a>"); //client.println("<a href=\"/LED3=OFF\"\"><button>LED3 OFF </button></a><br />"); //client.println("</html>"); //Coding ini dibuat oleh dani-Rajacell untuk www.belajarduino.com //Tutorial ini didukung oleh www.tokopedia.com/rajacell // Return the response LED4 //client.println("<br><br>"); //client.print("LED4 is now: "); // Control LED 4 if (request.indexOf("/status4=1") != -1) { digitalWrite(LED4, ON); value4 = HIGH; lcd.setCursor(0,0); lcd.print("LED4 set to ON "); lcd.setCursor(0,1); lcd.print("by Client Reques"); delay (delayLCD); } if (request.indexOf("/status4=0") != -1) { digitalWrite(LED4, OFF); value4 = LOW; lcd.setCursor(0,0); lcd.print("LED4 set to OFF "); lcd.setCursor(0,1); lcd.print("by Client Reques"); delay (delayLCD); } if(value4==HIGH){ client.println("<br><br>"); client.print("status4=1"); } if(value4==LOW){ client.println("<br><br>"); client.print("status4=0"); } //client.println("<br><br>"); //client.println("<a href=\"/LED4=ON\"\"><button>LED4 ON </button></a>"); //client.println("<a href=\"/LED4=OFF\"\"><button>LED4 OFF </button></a><br />"); //client.println("</html>"); delay(1); Serial.println("Client disonnected"); Serial.println(""); lcd.setCursor(0,1); lcd.print("Client Disconect"); delay(1000); }
E.Download & Setting aplikasi Android
Buka aplikasi Play Store pada Hp Android anda dan ketik pencarian aplikasi dengan Keyword : ESP8266Ada 2 buah aplikasi yang dapat kita gunakan dalam koding kita kali ini yaitu :
-ESP8266 Kontrol Wifi Perangkat ->(pada baris ketiga dengan icon board esp8266 nodemcu)
-Arduino Wifi Kontrol (ESP8266)-> (pada baris keempat dengan icon board esp-01)
Kedua aplikasi tersebut bukan buatan saya..saya hanya pakai saja jadi saya tidak bertanggung jawab atas pemakaian dan dampak dari kedua aplikasi tersebut.
Anda bisa install salah satu dari aplikasi tersebut atau install kedua duanya.pada coding diatas saya menggunakan aplikasi pertama (pada baris ketiga) dengan icon board nodemcu.
1.Download Sketch Coding diatas ke dalam Bord ESP8266
2.Pastikan Board berhasil terhubung ke jaringan wifi dan menampilkan url address pada layar LCD
3.Download aplikasi "ESP8266 Kontrol Wifi Perangkat" ke Hp android anda.
4.Sambungkan Hp/tablet android anda dengan jaringan wifi yang sama dengan ESP8266 Nodemcu
5.Buka aplikasi "ESP8266 Kontrol Wifi Perangkat" pada Hp Android anda kemudian setting IP Address
dan PORT yang ada di aplikasi, samakan dengan URL Address yang nampak pada LCD1602, Unutk Port isi dengan 80
6.Coba Control dengan tombol (gambar lampu) yang ada pada aplikasi
7.Apabila anda menggunakan aplikasi yang kedua , yaitu : -Arduino Wifi Kontrol (ESP8266)-> (pada baris keempat dengan icon board esp-01)
maka anda harus merubah sedikit coding yang ada di sourch code diatas, yaitu pada bagian
// Control LED 1 ON if (request.indexOf("/status1=1") != -1) {
ganti dengan :
// Control LED 1 ON
if (request.indexOf("/?status1=1") != -1) {
--> tambahkan tanda tanya "?" sebelum kata status
Lakukan hal ini (penambahan tanda tanya) diawal semua kata status
yang ada dalam sourch code diatas
duh LCD-nya gk jalan gan...apa ada library baru yah
BalasHapusMasukkan komentar Anda...kalo pake nokia syimbian bisa nggak mas dani?...
BalasHapusAda pesan "Error compiling for board Adafruit HUZZAH ESP8266" maksudnya gimana ya gan?
BalasHapuspadahal sketch udah sesuai, dan I2C-nya juga uda ane scan, dan hasilnya ttp aja muncul pesan gitu
Setelah di copy dan di pastekan ke Arduino IDE begitu coba klik Verifykasi kok Copy Eror Message ya gan ..?? Dimana Salahnya ...?? mohon pencerahannya .
BalasHapusMohon pencerahanya nya pak, bolehkah minta link/ vidio agar tahu cara buat aplikasi seperti itu? Terimakasih pak, semoga bapak menjawab pertanyaan saya..
BalasHapustahap2nya sudah saya ikuti
BalasHapusdan library sudh di add,
tp sketch selalu gagal dicompiling.
dan sudah saya coba mengulagi step by step tp hasilnya tetap sama.
apa ada yang kurang?
ane punya udah done compiling, tapi begitu smua ready lcd kaya gak kuat buat nampilin status ...
HapusKlo utk 12ch ada codingnya gk gan...?
BalasHapusrelay 5v apakah bisa digunakan ? karena tegangan kerja nodeMCU kan 3.3v
BalasHapusKalau gak make lcd, bisa gak?
BalasHapusAplikasi di play store nya gk ketemu gan
BalasHapussore mas.. minta solusi cara buat lampu indikator buat esp8266, jika berhasil konek ke router maka led akan menyala. thx bantuanya
BalasHapus