Mengendalikan 4 Relay dengan Jaringan Wifi melalui Aplikasi Android

Author : Ila Mulyandi1 comment


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
B.Wiring
1.Wiring i2C LCD dengan ESP8266 Nodemcu
     i2C  <--> 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-illlectronic untuk www.RAJENDROID.BLOGSPOT.com
//Tutorial ini didukung oleh www.tokopedia.com/illlectronic
#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 = "illlectronic"; //<-Ganti dengan nama jaringan wifi anda 
const char* password = "illlectronicisthebest"; //<- 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-illlectronic untuk www.rajendroid.blogspot.com
//Tutorial ini didukung oleh www.tokopedia.com/illlectronic
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-illlectronic untuk www.belajarduino.com
//Tutorial ini didukung oleh www.tokopedia.com/illlectronic
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-illlectronic untuk www.belajarduino.com
//Tutorial ini didukung oleh www.tokopedia.com/illlectronic
 // 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-illlectronic untuk www.belajarduino.com
//Tutorial ini didukung oleh www.tokopedia.com/illlectronic
  // 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-illlectronic untuk www.rajendroid.blogspot.com
//Tutorial ini didukung oleh www.tokopedia.com/illlectronic
  // 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 : ESP8266

Ada 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  



Posted On : Sunday, February 5, 2017Time : 10:27 PM
SHARE TO :
| | Template Created By : Rajendroid | CopyRigt By : ARDUINO | |