Baca Status Button dengan Arduino dan Ethernet Shield

Ditulis oleh agan

بِسْــــــــــــــــمِ اﷲِالرَّحْمَنِ اارَّحِيم

Halo bro dan sis, ketemu lagi dengan ane di hari Jumat Barokah di Bulan Suci Ramadhan ini.
Seperti biasanya, Apa kabar kalian? semoga saja masih diberi nikmat untuk menjalani hidup.

Dikesempatan malam ini, kita mencoba menggunakan Arduino dan Ethernet shield untuk membaca status terakhir Button pada pin Arduino. Dan kita akan membaca pin digital input arduino melalui webserver. Oh iya FYI, Pada artikel sebelumnya yang sudah saya publish di awal bulan Juni ini kita juga telah mencoba membaca input pin Arduino, yaitu pin Analog input. 

Tidak berbeda jauh dengan artikel sebelumnya, di artikel ini kita juga akan membaca pin input arduino, yaitu pin digital input. Hasil pembacaan status terakhir button akan ditampilkan pada web browser dengan mengakses IP adress yang sudah kita tentukan sebelumnya pada sketch.


Alat dan Bahan yang dibutuhkan :
  • 1x Arduino UNO
  • 1x Ethernet Shield
  • 1x Tacticle Switch (Button)
  • 1x Resistor 10K Ohm
  • Kabel jumper secukupnya
  • Breadboard (Project Board)

 Langkah - Langkahnya :
1.) Pertama, susunlah rangkaian seperti gambar dibawah ini


Keterangan Konfigurasi Kabel :
  • Tancapkan Ethernet Shield pada Board Arduino
  • Hubungkan Pin 5V Arduino pada salah satu kaki Button
  • Hubungkan Pin GND Arduino pada salah satu kaki Button
  • Hubungkan Pin 3 Arduino pada salah satu kaki Button
2.) Setelah itu kita lihat Daftar client DHCP, dan kita lihat IP Adress Ethernet Shield (Wiznet)


(Atau bisa juga dengan upload sketch example DhcpAddressPrinter)

3.) Setelah itu kita ubah sketch pada baris berikut ini, dan sesuaikan dengan IP Adress anda
4.) Setelah itu sambungkan Arduino pada Laptop/PC dengan menggunakan kabel serial.
5.) Download dan Install program Arduino IDE di Arduino.cc ( If Needed )
6.) Setelah itu, jalankan program Arduino-nya.
7.) Klik menu "Tools -> Board -> Arduino Uno"
8.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda )
9.) Lalu masukan Sketch dibawah ini.

Klik LIHAT DONG untuk melihat sketch
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 102); // Ubah dan sesuaikan IP Adress
EthernetServer server(80);  //Buat server pada port 80

void setup()
{
    Ethernet.begin(mac, ip);
    server.begin();
    pinMode(3, INPUT); //Set Pin 3 sebagai input
}

void loop()
{
    //Mencoba mendapatkan client
    EthernetClient client = server.available();  

   if (client) {  // Dapat client?
       boolean currentLineIsBlank = true;
       while (client.connected()) {
      // Data client tersedia untuk dibaca
   if (client.available()) { 
      // Baca 1 byte (karakter) dari client  
      char c = client.read(); 
   if (c == '\n' && currentLineIsBlank) {
      //Kirim sebuah standard http response header
      client.println("HTTP/1.1 200 OK");
      client.println("Content-Type: text/html");
      client.println("Connnection: close");
      client.println();
      client.println("<!DOCTYPE html>");
      client.println("<html>");
      client.println("<head>");
      client.println("<title>Baca Digital Input</title>");
      client.println("<meta http-equiv=\"refresh\" content=\"1\">");
      client.println("</head>");
      client.println("<body>");
      dapatkanStatusButton(client);
      client.println("</body>");
      client.println("</html>");
      break;
    }
    // Setiap baris yang di terima, diakhiri dengan "enter"
    if (c == '\n') {
        currentLineIsBlank = true;
      } 
    else if (c != '\r') {
    // Sebuah text karakter telah diterima
        currentLineIsBlank = false;
      }
    }
  }
    delay(1);
    client.stop(); // Tutup koneksi
  }
}

void dapatkanStatusButton(EthernetClient cl)
{
    if (digitalRead(3)) {
        cl.println("<h1>Button lagi di pencet gan!</h1>");
    }
    else {
        cl.println("<h1>Button tidak di pencet bray!</h1>");
    }
}

#Membaca Status Terakhir Button pada Halaman Web
Dengan menggunakan fungsi dapatkanStatusButton() kita akan mendapatkan status yang akan ditampilkan pada webpage. Dalam fungsi dapatkanStatusButton() akan membaca hasil switch. Teks yang ditampilkan pada browser akan menjadi paragraf HTML yang berisi tulisan "Button lagi di pencet gan!" atau "Button tidak dipencet bray!", tergantung dari keadaan terakhir switch.

#Reload Halaman Web tiap 1 (Satu) Detik
Sebuah garis HTML di <head> pada bagian dari halaman HTML dikirim ke browser dan digunakan untuk memberitahu browser agar me-reload (refresh) halaman web tiap detik. Hal ini digunakan agar kita dapat mengetahui status terbaru button jika sudah berubah.
client.println("<meta http-equiv=\"refresh\" content=\"1\">");
Perhatikan pada baris content = "1"> di bawah ini
<meta http-equiv="refresh" content="1">
Angka 1 pada bagian itu yang akan memberi tau browser untuk me-reload webpage tiap 1 detik.
Sama seperti pada tutorial Sebelumnya yang berjudul "Menghubungkan dan Mencoba Arduino Ethernet Shield" pada tutorial itu halaman web akan me-reload (refresh) otomatis setiap 5 detik.

Terimakasih telah berkunjung, selamat mencoba, semoga bermanfaat.

Blog, Updated pada: 18:56:00

4 comments:

  1. Bang, saya mau tanya nih, cek email ya. Suwun hehe

    ReplyDelete
  2. bang kalau Enthernet Shield nya diganti ESP8266-01 bisa gak? mohon tutorialnya, thanks

    ReplyDelete

Masih Bingung atau Hal Lainnya? Silahkan Bertanya di Kolom Komentar :)

~ Dilarang SARA
~ Dilarang PORNOGRAPHY
~ Dilarang SPAM
~ Dilarang MENINGGALKAN LINK AKTIF
~ Maaf untuk Anonymous, tidak bisa Berkomentar.

Apabila Komentar anda belum muncul, Tunggu sampai di Moderasi.
Terimakasih atas Perhatiannya.


English French German Spain Italian Dutch Russian