Control 5 Relay dengan WemosD1 mini atau dengan Node MCU

Beberapa waktu yang lalu saya pernah posting mengenai cara setting arduino IDE untuk WEMOS D1 mini kali ini saya akan mencoba share cara membuat webserver dengan Wemos D1 mini untuk mengendalikan 5 relay sekaligus, dalam sebuah webpage. Yang harus dipersiapkan adalah board Wemos D1 mini, Arduino IDE yang sudah di set agar support ESP8266. Berikut langkah langkahnya:

1. Pastikan Library berikut ini telah tersedia, karena saya menggunakan ESP8266 core 2.1.0 library
    berikut ini telah tersedia, berikut adalah library yang dibutuhkan :
  • <ESP8266WiFi.h>
  • <ESP8266WebServer.h>
  • <ESP8266mDNS.h>
2. Kemudian anda bisa mengisikan kode program seperti berikut ini pada sketch anda :



/*********
  Created by: Cahyo Hertanto
  For  : Secureinstruments.blogspot.com
*********/

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

MDNSResponder mdns;

// Replace with your network credentials
const char* ssid = "Your'e ROUTER SSID";
const char* password = "Your'e Router Password";
const int led = LED_BUILTIN;

// Declaring pin WemosD1 mini/node MCU pin
int gpio0Pin = 0;
int gpio2Pin = 2;
int gpio3Pin = 4;
int gpio4Pin = 5;
int gpio5Pin = 13;

ESP8266WebServer server(80);

String webPage = "";

void setup(void) {

  webPage += "<h1>ESP8266 Relay Control</h1><p>Relay 1 <a href=\"pin=ON1\"><button>ON</button></a>&nbsp;<a href=\"pin=OFF1\"><button>OFF</button></a></p>";
  webPage += "<p>Relay 2 <a href=\"pin=ON2\"><button>ON</button></a>&nbsp;<a href=\"pin=OFF2\"><button>OFF</button></a></p>";
  webPage += "<p>Relay 3 <a href=\"pin=ON3\"><button>ON</button></a>&nbsp;<a href=\"pin=OFF3\"><button>OFF</button></a></p>";
  webPage += "<p>Relay 4 <a href=\"pin=ON4\"><button>ON</button></a>&nbsp;<a href=\"pin=OFF4\"><button>OFF</button></a></p>";
  webPage += "<p>Relay 5 <a href=\"pin=ON5\"><button>ON</button></a>&nbsp;<a href=\"pin=OFF5\"><button>OFF</button></a></p>";

  // Set Default state of Pin 
  pinMode(gpio0Pin, OUTPUT);
  digitalWrite(gpio0Pin, LOW);
  pinMode(gpio2Pin, OUTPUT);
  digitalWrite(gpio2Pin, LOW);
  pinMode(gpio3Pin, OUTPUT);
  digitalWrite(gpio3Pin, LOW);
  pinMode(gpio4Pin, OUTPUT);
  digitalWrite(gpio4Pin, LOW);
  pinMode(gpio5Pin, OUTPUT);
  digitalWrite(gpio5Pin, LOW);

  // Set bautrate for serial comm
  Serial.begin(115200);
  
  WiFi.begin(ssid, password);
  Serial.println("");
  delay(500);
  Serial.println("Try to Connect Into AP");
  Serial.println("");
  delay(500);

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    digitalWrite(led, 1);
    delay(100);
    digitalWrite(led, 0);
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (mdns.begin("esp8266", WiFi.localIP())) {
    Serial.println("MDNS responder started");
  }

  server.on("/", []() {
    server.send(200, "text/html", webPage);
  });
  server.on("/pin=ON1", []() {
    server.send(200, "text/html", webPage);
    Serial.println("GPIO0 = HIGH");
    digitalWrite(gpio0Pin, HIGH);
    delay(1000);
  });
  server.on("/pin=OFF1", []() {
    server.send(200, "text/html", webPage);
    Serial.println("GPIO0 = LOW");
    digitalWrite(gpio0Pin, LOW);
    delay(1000);
  });
  server.on("/pin=ON2", []() {
    server.send(200, "text/html", webPage);
    Serial.println("GPIO2 = HIGH");
    digitalWrite(gpio2Pin, HIGH);
    delay(1000);
  });
  server.on("/pin=OFF2", []() {
    server.send(200, "text/html", webPage);
    Serial.println("GPIO2 = LOW");
    digitalWrite(gpio2Pin, LOW);
    delay(1000);
  });
  server.on("/pin=ON3", []() {
    server.send(200, "text/html", webPage);
    Serial.println("GPIO3 = High");
    digitalWrite(gpio3Pin, HIGH);
    delay(1000);
  });
  server.on("/pin=OFF3", []() {
    server.send(200, "text/html", webPage);
    Serial.println("GPIO3 = LOW");
    digitalWrite(gpio3Pin, LOW);
    delay(1000);
  });
   server.on("/pin=ON4", []() {
    server.send(200, "text/html", webPage);
    Serial.println("GPIO4 = High");
    digitalWrite(gpio4Pin, HIGH);
    delay(1000);
  });
  server.on("/pin=OFF4", []() {
    server.send(200, "text/html", webPage);
    Serial.println("GPIO4 = LOW");
    digitalWrite(gpio4Pin, LOW);
    delay(1000);
  });
  server.on("/pin=ON5", []() {
    server.send(200, "text/html", webPage);
    Serial.println("GPIO5 = High");
    digitalWrite(gpio5Pin, HIGH);
    delay(1000);
  });
  server.on("/pin=OFF5", []() {
    server.send(200, "text/html", webPage);
    Serial.println("GPIO5 = LOW");
    digitalWrite(gpio5Pin, LOW);
    delay(1000);
  });  
  server.begin();
  Serial.println("Server is Ready");
}

void loop(void) {
  server.handleClient();
}

3. Anda bisa mencoba mengcompile serta mengupload kode program tersebut ke board yang anda miliki dan jangan lupa pengaturan jenis board dan port dimana board anda terhubung pada setting arduino IDE

4. Jika telah di upload buka serial monitor pada Arduino IDE dan reset board yang anda miliki untuk melihat local ip yang didapat oleh ESP8266 setelah melakukan koneksi dengn wireless router.




5. Buka webbrowser, jika board yang anda pergunakan dan ketikkan local ip yang terbaca pada serial monitor Arduino IDE pada alamat url sehingga akan tampil seperti berikut ini :



6. Untuk anda pengguna WEMOS D1 mini atau node MCU anda dapat menekan tombol ON pada Relay no2. hal ini dikarenakan builtin led pada kedua board tersebut aktif LOW untuk menghasilkan sebaliknya anda dapat mengubah program pada bagian relay2  kondisi ON nilai outputnya menjadi LOW dan sebaliknya pada kondisi OFF.

Anda dapat menguji pin yang lain dengan menggunakan breadboard dan led untuk mengetahui keluaran pin yang lainnya.


Semoga bermanfaat.
Control 5 Relay dengan WemosD1 mini atau dengan Node MCU Control 5 Relay dengan WemosD1 mini atau dengan Node MCU Reviewed by cahyohertanto on July 11, 2017 Rating: 5

No comments:

close