Colokan Listrik WiFi


Sekarang lagi trendy banget, semuanya harus bisa dikontrol jarak jauh, nirkabel/wireless. Pada projek ini Keminter coba membuat prototype colokan listrik yang bisa dikontrol lewat wifi/internet.

Stop kontak alias colokan yang menggunakan Wifi ini adalah sebuah sistem yang memungkinkan stop kontak dapat diaktifkan atau dimatikan secara jarak jauh melalui jaringan internet ataupun jaringan lokal melalui perangkat handphone ataupun komputer. Berikut video hasil karya Keminter kali ini :

 

Stop kontak jarak jauh ini berbasiskan modul Wifi berupa ESP8266, modul wifi tersebut dapat berfungsi sebagai wifi hotspot ataupun wifi client. Dikarenakan fungsi modul wifi tersebut yang dapat berfungsi sebagai wifi hotspot ataupun wifi client, maka untuk implementasi di stop kontak wifi ini juga akan terdapat 2 mode pemakaian, berikut kedua mode pemakaian tersebut :

1. Stop kontak sebagai wifi hotspot

Dengan mode stop kontak sebagai wifi hotspot, maka device yang akan terhubung dengan stop kontak wifi ini harus join ke wifi hotspot dari stop kontak wifi ini kemudian dapat mengakses IP address dari wifi hotspot (http://192.168.4.1), setelah mengakses halaman web tersebut, maka akan tampil halaman web sebagai berikut:

Gambar 1. Tampilan web colokan Wifi mode hotspot

Untuk dapat menghidupkan ataupun mematikan stop kontak dilakukan dengan menekan tombol on atau off pada socket #2.

Kelebihan dari penggunaan mode ini adalah :

  • IP Adress Stop kontak (192.168.4.1) akan sama dan tetap untuk semua stop kontak, sehingga tidak perlu dilakukan pencarian ip address untuk stop kontak tersebut.

Sedangkan kekurangan dari penggunaan mode ini adalah :

  • Stop kontak wifi hanya dapat diakses dalam jaringan lokal, dan tidak dapat diakses melalui jaringan internet dikarenakan dalam jaringan wifi tersebut tidak terhubung ke internet

Untuk dapat mengakses stop kontak wifi melalui jaringan internet, dapat dilakukan dengan mode Client

2. Stop Kontak sebagai wifi client

Dengan menggunakan stop kontak wifi sebagai wifi client, berarti stop kontak ini harus di program untuk dapat bergabung kepada wifi hotspot yang akan dipergunakan (wifi hotspot harus memiliki koneksi internet agar stop kontak dapat diakses melalui jaringan internet), setelah stop kontak wifi terhubung ke jaringan hotspot, maka langkah selanjutnya adalah mencari ip address dari stop kontak wifi tersebut dengan cara mencoba untuk mengakses ip address yang berada dalam satu subnet dengan handphone atau komputer yang dipergunakan untuk mengontrol stop kontak, jika ip address sudah ditemukan (misalkan: 192.168.100.22), maka akan tampil halaman web dari stop kontak wifi sebagai berikut :

Gambar 2. Tampilan colokan listrik wifi mode client

Kelebihan dari penggunaan mode ini adalah :

  • Stop kontak wifi dapat diakses melalui jaringan internet dengan menggunakan port forwarding.

Sedangkan kekurangan dari penggunaan mode ini adalah :

  • IP address dari stop kontak wifi kemungkinan bisa berubah – ubah tergantung settingan dari hotspot wifi.
  • Perlu dilakukan pencarian ip address dari stop kontak wifi dalam jaringan hotspot.

 

Peralatan Yang Dibutuhkan  :

  • Stop kontak /  colokan listrik standard pasar

  • Modul Wifi ESP8266

  • Relay DC 5V input, 1A max switching. Relay DC diperlukan untuk melakukan pemutusan ataupun penyambungan arus listrik pada stop kontak.

  • Rangkaian power supply 5V, yang diperlukan untuk menyuplai tegangan yang diperlukan oleh rangkaian. Diambil jadi dari adaptor charger HP yang kecil.

 

  • Dioda 1N4002,  diperlukan untuk menurunkan tegangan dari 5V menjadi tegangan yang diperlukan oleh modul Wifi ESP8266 (3.3V)

 

Skema dan Prinsip Kerja Rangkaian

Modul Wifi ESP8266 akan menjalankan instruksi dari user melalui koneksi wifi, jika instruksi berupa menghidupkan stop kontak, maka GPIO2 akan berlogka 0, ketika GPIO2 berlogikan 0, maka relay akan aktif karena ada beda potensial sebesar 5V di inputnya dan kemudian akan menghidupkan stop kontak. Jika instruksi dari user berupa menonaktifkan wifi maka GPIO2 akan berlogika 1, ketika GPIO2 berlogika 1 relay akan nonaktif dan akan mematikan stop kontak / colokan listrik.

Pemrograman Modul Wifi ESP8266

Modul Wifi ESP8266 dilengkapi dengan mikrokontroler 32 bit RISC CPU dengan internal flash sebesar 36kByte, untuk dapat dipergunakan sebagai stop kontak wifi, maka perlu dilakukan pemrograman pada ESP8266. Untuk penulisan program ke ESP8266 diperlukan rangkaian dengan skema seperti di bawah ini, diperlukan USB to serial untuk komunikasi antara PC dengna ESP8266 untuk penulisan program.

Kompilasi dan Penulisan Program ke modul Wifi ESP8266

Untuk melakukan kompilasi proram dan penulisan program ke modul Wifi ESP8266 menggunakan Arduino IDE, agar arduino IDE dapat support untuk ESP8266, perlu diinstall plugins ESP826 :
Tambahkan setting :
http://arduino.esp8266.com/stable/package_esp8266com_index.json
pada Additional Board Manager URLs pada menu File-Preference-Settings. Search esp8266 pada menu “Tools-Board-Boards Manager…”, kemudian klik install :

  • Pilih menu “Tools-Board-Generic 8266 Module”.
  • Open file source code ( contoh : ESP8266_RemoteLamp.ino )
  • Pilih menu “Sketch-Upload” untuk melakukan penulisan program ke modul Wifi ESP8266.

 

Source Code Program

Di bawah ini adalah source code program.

Untuk menentukan mode dari stop kontak wifi dapat diubah di line 25 :

//Mode program untuk stop kontak wifi (MODE_HOSTPOT atau MODE_CLIENT)

char mode_program = MODE_HOTSPOT;

ubah menjadi MODE_CLIENT untuk merubah mode program menjadi client dan setting WIFI_SSID dan WIFI_PASSWORD sesuai wifi hotspot yang akan dipergunakan, contoh disini sbb :

#define WIFI_SSID “Indihome1”

#define WIFI_PASSWORD “azsxdcfvgb”

SELAMAT MENCOBA, Semoga makin Keminter.

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

/* Setting username dan password untuk koneksi ke Access Point Wifi pada MODE_CLIENT */
#define WIFI_SSID “Indihome1”
#define WIFI_PASSWORD “azsxdcfvgb”

/* Setting timeout untuk koneksi ke wifi hotspot pada MODE_CLIENT */
#define COUNTER_WIFI 5

/* Definisi untuk Mode Wifi */
#define MODE_HOTSPOT 0
#define MODE_CLIENT 1

/* Setting Server pada port 80 */
ESP8266WebServer server(80);
MDNSResponder mdns;
String webPage = “”;
int gpio0_pin = 0; //GPIO0 sebagai pin 0 arduino (ESP8266 sebagai arduino module)
int gpio2_pin = 2; //GPIO2 sebagai pin 2 arduino (ESP8266 sebagai arduino module)

/* Mode program untuk stop kontak wifi (MODE_HOSTPOT atau MODE_CLIENT) */
char mode_program = MODE_HOTSPOT;

void setup() {
unsigned char counterWifi = COUNTER_WIFI; //counterWifi adalah lama waktu timeout untuk koneksi ke wifi hotspot pada mode client
/* Inisialisasi GPIO2 pada ESP8266 sebagai output (yang akan terhubung ke input relay) */
pinMode(2, OUTPUT);
/* Inisialisasi Port Serial ESP8266 dengan baudrate 115200 (sebagai debug ke PC) */
Serial.begin(115200);
delay(100);
Serial.print(“\n”);

if(mode_program == MODE_CLIENT){ // Untuk Mode client
Serial.print(“Trying to connect Wifi Network…\n”);
/* Inisialisasi Wifi client */
WiFi.disconnect();
WiFi.mode(WIFI_STA); //Setting mode Wifi sebagai STA
WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //Connect ke wifi hotspot
/* Menunggu koneksi ke Wifi Hotspot dengan timeout yang sudah disetting */
while(WiFi.status() != WL_CONNECTED && counterWifi– != 0){
delay(1000);
}
/* Mengecek status dari koneksi ke wifi hotspot pada MODE_CLIENT */
if(WiFi.status() == WL_CONNECTED){
Serial.print(“Wifi connected to “);
Serial.print(WIFI_SSID);
Serial.print(“\n”);
}
else
Serial.print(“Failed to connect to Wifi “);
}else{ // Untuk Mode Server
Serial.print(WIFI_SSID);
Serial.print(“, activating Wifi hotspot…\n”);

/* Mengaktifkan Wifi hotspot dengan setting username dan password */
boolean result = WiFi.softAP(“KeminterAP”, “12345678”);
if(result == true)
{
Serial.println(“Hotspot started : ESPsoftAP_01\n”);
}
else
{
Serial.println(“Hotspot start failed\n”);
}
}

Serial.print(“===================\n”);
Serial.print(“Remote Lamp Control\n”);
Serial.print(“Keminter Project\n”);
Serial.print(“Version 1.0\n”);

/* Setting untuk tampilan web server */
webPage += “<h1>ESP8266 Web Server</h1><p>Socket #1 <a href=\”socket1On\”><button>ON</button></a>&nbsp;<a href=\”socket1Off\”><button>OFF</button></a></p>”;
webPage += “<p>Socket #2 <a href=\”socket2On\”><button>ON</button></a>&nbsp;<a href=\”socket2Off\”><button>OFF</button></a></p>”;

/* Mengaktifkan service web pada ip lokal */
if (mdns.begin(“esp8266”, WiFi.localIP())) {
Serial.println(“MDNS responder started”);
}

/* Setting alamat url atau API akses ke server web */
server.on(“/”, [](){ //Untuk akses url http://<IP Address>/
server.send(200, “text/html”, webPage);
});
server.on(“/socket1On”, [](){ //untuk akses url http://<IP Address/socket1On
server.send(200, “text/html”, webPage);
digitalWrite(gpio0_pin, HIGH);
delay(100);
});
server.on(“/socket1Off”, [](){ //untuk akses url http://<IP Address/socket1Off
server.send(200, “text/html”, webPage);
digitalWrite(gpio0_pin, LOW);
delay(100);
});
server.on(“/socket2On”, [](){ //untuk akses url http://<IP Address/socket2On
server.send(200, “text/html”, webPage);
digitalWrite(gpio2_pin, HIGH);
delay(100);
});
server.on(“/socket2Off”, [](){ //untuk akses url http://<IP Address/socket1Off
server.send(200, “text/html”, webPage);
digitalWrite(gpio2_pin, LOW);
delay(100);
});

/* Mengaktifkan server web */
server.begin();
Serial.println(“HTTP server started”);
}

/* Loop dari service web */
void loop() {
server.handleClient();
}

 

Leave a comment

Your email address will not be published. Required fields are marked *