Langsung ke konten utama

Kontrol On Off Peralatan Elektronik via Internet dengan Arduino UNO dan W5100 Ethernet Shield

 Sebenarnya alat ini bukan merupakan sesuatu yang baru, namun di era IoT seperti sekarang ini maka banyak pengendalian jarak jauh yang dilakukan melalui internet

Berikut adalah source code dari arduino 

#include <SPI.h>
#include <Ethernet.h>
int relay1 = 2;
int relay2 = 3;
int relay3 = 4;
int relay4 = 5;
int relay5 = 8;
boolean statusR1, statusR2, statusR3, statusR4, statusR5, statusR6, statusS1, statusS2, statusS3, statusS4, statusS5, statusS6 = false;


String readString; 
char c;
byte mac[] = {0xDA, 0xAD, 0xBE, 0xEB, 0xFE, 0xFB};
IPAddress ip(192, 168, 2, 182);
EthernetServer server(80);
void setup() {
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);
  pinMode(relay5, OUTPUT);
  
  Serial.begin(9600);
  while (!Serial) { ; }
  Ethernet.begin(mac, ip);
  server.begin();
 statusR1 = true;
 statusR2 = true;
 statusR3 = true;
 statusR4 = true;
 statusR5 = true;
 statusR6 = true;
 
 digitalWrite(relay1, HIGH);
 digitalWrite(relay2, HIGH);
 digitalWrite(relay3, HIGH);
 digitalWrite(relay4, HIGH);
 digitalWrite(relay5, HIGH);
 
}
void loop() {
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {   
      if (client.available()) {
        c = client.read(); 
        if (readString.length() < 100) {
          readString += c;
        }
  if (c == '\n') {
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println();     
  client.println("<HTML>");
  client.println("<HEAD>");
  client.println("<meta http-equiv=\"Refresh\" content=\"4; url=/remote\" />");
  client.println("<meta http-equiv=\"Content-Type\" content=\"application/vnd.wap.xhtml+xml; charset=utf-8\" />");
  client.println("<TITLE>REMOTE TERMINAL UNIT</TITLE>");
  client.println("</HEAD>");
  client.println("<BODY align=\"center\">");
  client.println("<h1>REMOTE TERMINAL UNIT V10.1 </h1>");
  client.println("<hr />"); 
  client.println("<br />"); 
  client.println("<br />"); 
  client.println("<table align=\"center\"><tr>");
  client.println("<th width=\"5%\">Perangkat</th>");
  client.println("<th width=\"5%\">Status</th>");
  client.println("<th width=\"5%\">ON/OFF</th>");
  client.println("<th width=\"5%\">RESTART</th></tr>");
  client.println("<tr class=\"trh1\"><td align=\"left\">");
  client.println(" ");
  client.println(" ");
  client.println("SWITCH 1");
  client.println("</td><td align=\"center\">");
  if (statusR1 == false) {
    client.println("<b>MATI</b>");
  } else {
    client.println("<b>HIDUP</b>");
  }
    client.println("</td><td align=\"center\">");
  if (statusR1 == false) {
    client.println("<a href=\"/1on\" />HIDUPKAN</a>");
  } else {
    client.println("<a href=\"/1off\" />MATIKAN</a>");
  }
   client.println("</td><td align=\"center\">");
  if (statusS1 == false) {
    client.println("<a href=\"/1rst\" />RESTART</a>");
  }
  client.println("</td></tr>");
  client.println();
  client.println("<tr class=\"trh2\"><td align=\"left\">");
  client.println(" ");
  client.println(" ");
  client.println("SWITCH 2");
  client.println("</td><td align=\"center\">");
  if (statusR2 == false) {
    client.println("<b>MATI</b>");
  } else {
    client.println("<b>HIDUP</b>");
  }
    client.println("</td><td align=\"center\">");
  if (statusR2 == false) {
    client.println("<a href=\"/2on\" />HIDUPKAN</a>");
  } else {
    client.println("<a href=\"/2off\" />MATIKAN</a>");
  }
  client.println("</td><td align=\"center\">");
  if (statusS2 == false) {
    client.println("<a href=\"/2rst\" />RESTART</a>");
  }
  client.println("</td></tr>");
  client.println();
  client.println("<tr class=\"trh1\"><td align=\"left\">");
  client.println(" ");
  client.println(" ");
  client.println("SWITCH 3");
  client.println("</td><td align=\"center\">");
  if (statusR3 == false) {
    client.println("<b>MATI</b>");
  } else {
    client.println("<b>HIDUP</b>");
  }
    client.println("</td><td align=\"center\">");
  if (statusR3 == false) {
    client.println("<a href=\"/3on\" />HIDUPKAN</a>");
  } else {
    client.println("<a href=\"/3off\" />MATIKAN</a>");
  }
  client.println("</td><td align=\"center\">");
  if (statusS3 == false) {
    client.println("<a href=\"/3rst\" />RESTART</a>");
  }
  
  client.println("</td></tr>");
  client.println();
  client.println("<tr class=\"trh2\"><td align=\"left\">");
  client.println(" ");
  client.println(" ");
  client.println("SWITCH 4");
  client.println("</td><td align=\"center\">");
  if (statusR4 == false) {
     client.println("<b>MATI</b>");
  } else {
     client.println("<b>HIDUP</b>");
  }
  client.println("</td><td align=\"center\">");
  if (statusR4 == false) {
     client.println("<a href=\"/4on\" />HIDUPKAN</a>");
  } else {
     client.println("<a href=\"/4off\" />MATIKAN</a>");
  }
  client.println("</td><td align=\"center\">");
  if (statusS4 == false) {
    client.println("<a href=\"/4rst\" />RESTART</a>");
    //s
  }
   client.println("</td></tr>");
  client.println();
  client.println("<tr class=\"trh2\"><td align=\"left\">");
  client.println(" ");
  client.println(" ");
  client.println("SWITCH 5");
  client.println("</td><td align=\"center\">");
  if (statusR5 == false) {
     client.println("<b>MATI</b>");
  } else {
     client.println("<b>HIDUP</b>");
  }
  client.println("</td><td align=\"center\">");
  if (statusR5 == false) {
     client.println("<a href=\"/5on\" />HIDUPKAN</a>");
  } else {
     client.println("<a href=\"/5off\" />MATIKAN</a>");
  }
 
  client.println("</td><td align=\"center\">");
  if (statusS5 == false) {
    client.println("<a href=\"/5rst\" />RESTART</a>");
  }
  client.println("</td></tr>");
  client.println();
  client.println("<tr class=\"trh2\"><td align=\"left\">");
  client.println(" ");
  client.println(" ");
  client.println("ALL TERMINAL");
  client.println("</td><td align=\"center\">");
  if (statusR6 == false) {
     client.println("<b>MATI</b>");
  } else {
     client.println("<b>HIDUP</b>");
  }
  client.println("</td><td align=\"center\">");
  if (statusR6 == false) {
     client.println("<a href=\"/nyala\" />HIDUP SEMUA</a>");
  } else {
     client.println("<a href=\"/mati\" />MATI SEMUA</a>");
  }
  
  client.println("</td><td align=\"center\">");
  if (statusS6 == false) {
   client.println("<a href=\"/6rst\" />RESTART SEMUA</a>");
   }
   
  client.println("</td></tr>");
  client.println();
  client.println("</BODY>");  
  delay(1);
  client.stop();
           
  if (readString.indexOf("1on") >0){ 
    digitalWrite(relay1, HIGH); 
    statusR1 = true; 
  }
  if (readString.indexOf("1off") >0){ 
    digitalWrite(relay1, LOW); 
    statusR1 = false; 
  }
  if (readString.indexOf("1rst") >0){ 
    digitalWrite(relay1, LOW); 
    delay(7000);
    digitalWrite(relay1, HIGH);  
  }
  if (readString.indexOf("2on") >0){ 
    digitalWrite(relay2, HIGH); 
    statusR2 = true; 
  }
  if (readString.indexOf("2off") >0){ 
    digitalWrite(relay2, LOW); 
    statusR2 = false; 
    }
  if (readString.indexOf("2rst") >0){ 
    digitalWrite(relay2, LOW); 
    delay(7000);
    digitalWrite(relay2, HIGH); 
  }
  if (readString.indexOf("3on") >0){ 
    digitalWrite(relay3, HIGH); 
    statusR3 = true; 
  }
  if (readString.indexOf("3off") >0){ 
    digitalWrite(relay3, LOW); 
    statusR3 = false; 
    }
  if (readString.indexOf("3rst") >0){ 
    digitalWrite(relay3, LOW); 
    delay(7000);
    digitalWrite(relay3, HIGH); 
  }
  if (readString.indexOf("4on") >0){ 
    digitalWrite(relay4, HIGH); 
    statusR4 = true; 
  }
  if (readString.indexOf("4off") >0){ 
    digitalWrite(relay4, LOW); 
    statusR4 = false; 
    }
  if (readString.indexOf("4rst") >0){ 
    digitalWrite(relay4, LOW); 
    delay(7000);
    digitalWrite(relay4, HIGH); 
  }
   if (readString.indexOf("5on") >0){ 
    digitalWrite(relay5, HIGH); 
    statusR5 = true; 
  }
  if (readString.indexOf("5off") >0){ 
    digitalWrite(relay5, LOW); 
    statusR5 = false; 
    }
  if (readString.indexOf("5rst") >0){ 
    digitalWrite(relay5, LOW); 
    delay(7000);
    digitalWrite(relay5, HIGH); 
  }
  if (readString.indexOf("6rst") >0){ 
    digitalWrite(relay1, LOW); 
    digitalWrite(relay2, LOW);
    digitalWrite(relay3, LOW);
    digitalWrite(relay4, LOW);
    digitalWrite(relay5, LOW); 
    delay(7000);
    digitalWrite(relay1, HIGH); 
    digitalWrite(relay2, HIGH);
    digitalWrite(relay3, HIGH);
    digitalWrite(relay4, HIGH);
    digitalWrite(relay5, HIGH); 
  }
  if (readString.indexOf("mati") >0){ 
    digitalWrite(relay1, LOW); 
    digitalWrite(relay2, LOW);
    digitalWrite(relay3, LOW);
    digitalWrite(relay4, LOW);
    digitalWrite(relay5, LOW); 
     statusR1 = false;
     statusR2 = false;
     statusR3 = false;
     statusR4 = false;
     statusR5 = false;
     statusR6 = false;   
  }
  if (readString.indexOf("nyala") >0){ 
    digitalWrite(relay1, HIGH); 
    digitalWrite(relay2, HIGH);
    digitalWrite(relay3, HIGH);
    digitalWrite(relay4, HIGH);
    digitalWrite(relay5, HIGH);
     statusR1 = true;
     statusR2 = true;
     statusR3 = true;
     statusR4 = true;
     statusR5 = true;
     statusR6 = true;    
  }
  readString=""; } } } } } 


Cara mengaksesnya adalah dengan mengetikkan alamat IP di browser dari laptop atau komputer yang memiliki jaringan yang sama dengan Arduino

    Pada contoh program alamat IP nya adalah 192.168.2.182


Cara mengakses Kontrol Arduino


Tampilan Web Kontrol Relay


Postingan populer dari blog ini

Membuat 2 ISP dalam 1 Mikrotik

  Mikrotik merupakan perangkat yang cukup fleksibel dan bisa kita atur konfigurasinya sesuai dengan kebutuhan jaringan yang ada. Banyak macam fitur yang ditambahkan pada sistemnya, misal seperti fungsi Firewall, Routing, Managment Bandwidth, Web-Proxy, Samba Server, L2 Management, Hotspot, RADIUS, dll. Selain itu produk MikroTik umumnya memiliki beberapa port ethernet yang secara default masing-masing berjalan secara independent, dengan kata lain kita bisa menggunakannya untuk lebih dari satu Jalur ISP dengan metode Loadbalance atau juga Failover. Atau bisa juga kita konfigurasi dengan mode bridging untuk kebutuhan L2 Management. Pada artikel kali ini kita akan mencoba untuk melakukan konfigurasi router MikroTik dengan menggunakan koneksi 2 jalur ISP. Dengan 2 jalur ISP tersebut, kita akan buat misal 'ISP A' hanya khusus untuk jalur internet 'Network A' sedangkan 'ISP B' khusus untuk jalur internet 'Network B'. Untuk kebutuhan diatas nanti kita bisa meng...

MINI SERVER (DATABASE DAN WEBSITE) dari STB HG680P FIBERHOME

 Pada artikel kali ini akan dibahas mengenai pembuatan mini server dari STB HG680P Fiberhome. STB tipe ini dapat diinstal Operating System (OS) Linux ARM sehingga dapat berfungsi sebagai komputer mini maupun sebagai mini server. STB Fiberhome ini memiliki spesifikasi sebagai berikut : oC Amlogic CPU quad core ARM Cortex-A53 @ up to 1.51 GHz GPU Mali-450MP RAM 2GB Storage Total 8GB (ROM System dan Internal 4GB) Built in WiFi HDMI 1x Port LAN 2x Slot USB 1x Slot SD-CARD 1x Port RCA Aux 1x Port SPDIF Gambar 1 STB Fiberhome HG680P STB jenis ini banyak digunakan oleh operator TV internet seperti Indihome, produk bekasnya banyak dijumpai di marketplace seperti Tokopedia, Shoope, Bukalapak, dll. Langkah-langkah Pembuatan STB menjadi mini server Linux STB yang akan dibuat menjadi mini server adalah STB yang telah di root sebelumnya, cara root dapat dilihat pada artikel lain. Peralatan yang harus dipersiapkan adalah           - STB HG680P (sudah di root)  ...

Cara Program Handy Talkie (HT) Motorola CP1300

 Motorola adalah salah satu brand yang cukup terkenal di bidang radio telekomunikasi karena kualitasnya yang baik dan kehandalannya untuk komunikasi radio walaupun harganya jauh lebih mahal dari merk lain. Pada artikel ini akan dibagikan cara program HT Motorola CP 1300.  Gambar 1 HT CP 1300 Dalam memrogram Motorola CP1300 diperlukan interface antara komputer/laptop dengan perangkat radio komunikasi yang dapat diprogram. Banyak interface yang sudah dijual jadi, namun seringkali pada tipe HT Motorola CP1300 ini kabel tidak bisa digunakan yang biasanya ditandai dengan perangkat radio yang ridak terdeteksi pada program (software). Kami merakit sendiri Kabel data atau interface yang digunakan untuk melakukan pemrograman Motorola CP 1300 ini. Gambar-gambar di bawah ini akan menunjukkan skema dan foto-foto pada Kabel Data Motorola CP 1300 hasil rakitan sendiri. Gambar 2 Kabel Data Rakitan  Skema atau wiring dari Kabel Data USB yang ditunjukkan pada gambar 2, dijabarkan pada ga...