Install Prototipe Alarm Anti Begal berbasis WiFi

Kayanya saya hobi banget bikin prototipe alarm...hehehe
Saya sudah bikin ini lama sebenarnya, tapi baru saya share sekarang...saya ingin memastikan dulu apakah komponen bekerja baik dipakai selama ini...dan terbukti alhamdulillah baik baik saja saat dipakai turing panjang Jakarta - Dieng PP 1000km...baik dingin saat malam atau panas macet di Bandung..juga sebelumnya saat turing ke Jakarta - pantai Jayanti 600km PP tahun kemaren...

Kali ini saya mencoba pakai board selain Arduino..saya coba pakai nodeMCU dengan tipe ESP8266. Sebenarnya ada yang lebih baru lagi dan sudah berikut BlueTooth 4 BLE yaitu tipe ESP32, tapi saya coba pakai tipe pertama dulu karena....



jauh lebih murah.....😀
Board yang saya pakai tipe ESP8266 Witty Cloud seharga 43ribuan di tokopedia.

Kenapa saya pakai ESP8266?
Karena ingin tau aja sih...Digadang gadang sebagai solusi prototipe IOT ( Internet Of Thing ) yang kompak dan murah....
Yang menarik buat saya karena sudah bersifat soc / system on chip, jadi sudah lengkap dalam satu silikon....yang ESP8266 sudah built in wiFi... Warbiasyah.. 

Kenapa wiFi?
Karena saya ingin tau apakah bisa saya manfaatkan sebagai anti begal..
Ide dasarnya sederhana, smartphone saya fungsikan sebagai wiFi HotSpot...alarm ini di set untuk selalu mengecek apakah ada sinyal HotSpot dari smartphone. Tentunya alarm sudah diset untuk membaca ssid dan password smartphone saya aja, gak akan konek ke HotSpot lain...
Nah kalau alarm tidak membaca ada sinyal wiFi smartphone saya, maka akan muncul peringatan baik LED dan buzzer..Kalau dalam jangka waktu tertentu masih gak nemu, maka alarm akan memutus arus pengapian dan sirine menyalak...
Guk!

Kalau kemudian si begal matiin mesin gimana?
Alarm juga mati sih...hehe...tapi podo wae, kalo pas kontak, alarm akan nyala dan cari sinyal...kalo gak nemu sinyal motor gak akan mau nyala dan sirine menggonggong kembali.
Guk! Guk!
Emang gak bisa supaya alarm nyala terus? Bisa, sambung ke aki langsung....tapi ESP8266 sepertinya tidak ada fitur low watt, jadinya aki bakal cepat soak..

Boros gak pake batre hape?
Hmm...saya tes pakai xiaomi redmi 5 plus dengan kondisi batre 84% dan sekitar 6 jam kemudian batre hp menjadi 58%
Berarti kalau riding motor nonstop selama 6 jam maka baterai hp berkurang 26%.
Buat saya bisa diterima...toh kenyataannya sambil berhenti istirahat HP bisa dicas ulang..

Kalau pas naik motor ternyata batre 5% dan buru buru gimana?
Paling gampang sih bikin saklar untuk mematikan sementara alarm ini. Sebenarnya ada fungsinya juga, misalnya pas masuk bengkel. Biasanya kalo abis service kan suka tes jalan...masa kita ngasih hp ke montir? kan gak...males aja...😁
Jadi pasang saklar yang posisinya disembunyikan..
Rangkaian alarm ini gak akan berpengaruh kalau dimatikan karena relay starter diset untuk selalu konek atau disebut Normally Close kalau alarm mati. Lebih aman kalau ditengah jalan alarm mati mendadak.
Saklarnya pasang di input power alarm yah...

Berikut komponen yang saya pakai



1. Board esp8266 witty cloud




2. Relay module 2 relay. Tadinya saya sempat mikir pakai mosfet tapi ragu untuk pemakaian durasi panjang jadi saya pakai relay mekanik aja. Dan sebenarnya tidak perlu juga memakai modul, langsung dikoneksikan ke relay juga bisa supaya lebih hemat tempat..





3. Power supply USB

4. Jack USB biasa dan micro USB
5. Kabel kabel secukupnya


Karena saya memakai board ESP8266 di Arduino IDE, maka harus setting dulu agar Arduino IDE bisa konek. Apalagi bila board ESP8266 nya memakai programmer CH340 maka harap install driver CH340 dulu.
Untuk tutorial cara koneksi ESP8266 ke Arduino IDE silakan klik:
https://protosupplies.com/product/esp8266-witty-cloud-esp-12f-wifi-module/

Berikut code Arduino yang saya pakai untuk alarm ini:

_________________________________________________

#include <ESP8266WiFi.h>
     
    const char* ssid     = "ssid";
    const char* password = "password";

    int strike = 0;
    const int duration = 500;
    const int frequency = 200;

    bool engineBol; // panic stop kalau motor dibajak
    bool startBol;
    bool hornBol = false; 
    bool wifiConnect;

    const int buzzerPin = 12;
    const int horn = 5; // selalu konek relay module ke pin 4 atau 5
    const int led = 15; //wifi connect
    const int led2 = 14; //wifi disconnect
    const int relay = 4; // selalu konek relay module ke pin 4 atau 5

    int wifiStatus;
     
    void setup() {
      
      Serial.begin(115200);
      WiFi.begin(ssid, password);
      pinMode(buzzerPin, OUTPUT);
      pinMode(relay, OUTPUT);
      pinMode(horn, OUTPUT);
      pinMode(led, OUTPUT);
      pinMode(led2, OUTPUT);

      engineBol = false; //engine dead
      startBol = false;
      hornBol = false;

 }   
     
void loop() {
      wifiCheck();
      
      if(!wifiConnect) strikeProc();
      if(wifiConnect) disArm();
      delay(2000); //delay waktu sebelum looping 
      
}

void wifiCheck()
{
  wifiStatus = WiFi.status();
      
  if(wifiStatus == WL_CONNECTED)
  {
     wifiConnect = true;
     //Serial.println("ESP is connected!");  
     digitalWrite(led, HIGH);
     digitalWrite(led2, LOW);
  }
  if(wifiStatus == WL_DISCONNECTED)
  {
    wifiConnect = false;
    //Serial.println("WiFi not connected");
    digitalWrite(led, LOW);
    if (startBol == false)
    {
      digitalWrite(relay, LOW);
      digitalWrite(led, LOW);
      digitalWrite(led2, HIGH);
    }
  }
  if (engineBol && startBol)
    {
      digitalWrite(horn, HIGH);
      digitalWrite(relay, HIGH);
    }  
    
  if(hornBol)
    {
      digitalWrite(led2, LOW);
      hornSound();
    }
    
  if(!hornBol)
    {
      digitalWrite(horn, HIGH);
    }
    
  if (!engineBol)
  {
    if(startBol)
    {
      delay(5000); // delay waktu sebelum mesin mati, sirine teriak dulu 5 detik
      digitalWrite(relay, LOW);
      digitalWrite(led, LOW);
      digitalWrite(led2, HIGH);
    }
    if(!startBol)
    {
      digitalWrite(relay, LOW);
      digitalWrite(led, LOW);
      digitalWrite(led2, HIGH);
    }
  }
}

void strikeProc()
{
    if (strike < 4)
    {
      warnBuzz();
      strike ++;
    }
    if (strike >= 4 && strike < 8)
    {
      strikeBuzz();
      strike ++;
    }
    if (strike == 8)
    {
      engineBol = false;
      hornBol = true;
    }
}

void disArm()
{
    if(strike > 0){
      strike = 0;
      }
    if (!startBol){
        startBol = true;
      }
    if (!engineBol){
        engineBol = true;
      }
    if(hornBol){
        hornBol = false;
     }
}

void warnBuzz()
{
  for( int b = 0; b <4; b++)
  {
    delay(300);
    digitalWrite(led2, HIGH);
    tone(buzzerPin, frequency, duration);
    delay(300);
    digitalWrite(led2, LOW);
  }
}

void strikeBuzz()
{
    digitalWrite(led2, HIGH);
    tone(buzzerPin, frequency, duration);
    delay(100);
    digitalWrite(led2, LOW);
    tone(buzzerPin, frequency * 3, duration);
    delay(100);
    digitalWrite(led2, HIGH);
    tone(buzzerPin, frequency * 5, duration);
    delay(100);
    digitalWrite(led2, LOW);
    tone(buzzerPin, frequency * 7, duration);
    delay(100);
}

void hornSound()
{
    //WiFi.begin(ssid, password);
    wifiStatus = WiFi.status();
    
    if(wifiStatus == WL_CONNECTED)disArm();
    else digitalWrite(horn, LOW);
}



________________________________________________________
Silakan copy paste code diatas dalam Arduino IDE. Lalu koneksikan semua kabel sesuai settingan pin.
Untuk SSID dan Password, silakan ganti sesuai settingan smartphone masing masing, yang penting jangan lupa harus dalam tanda "".
Contoh:

const char* ssid     = "ssid";
const char* password = "password";

misalnya menjadi:
const char* ssid     = "hapekridit";
const char* password = "mautauajaapamautaubanget";

bebas deh terserah yah....udah pada gede kan...

Board ESP8266 Witty Cloud ini unik dalam arti terdapat dua board, tapi yang satu hanya sebagai programmer. Jadi setelah di program maka board programmer harus dilepas. Ada dua port micro USB, dimana port di board programmer berfungsi sebagai data sedangkan port di board ESP8266 hanya sebagai power, tidak bisa sebagai programmer.
Bingung? Saya juga....
Beli aja dulu barangnya lalu baca kembali 😀
Kiri Board ESP8266, kanan board programmer


Berikut adalah link untuk keterangan pin dan spek Witty Cloud



Untuk koneksi kabelnya sederhana..
Dua relay diatas digunakan untuk :
1.Untuk relay starter, gunakan Normally Close. Silahkan mencari kabel dari switch starter / engine kill, di motor sport pasti ada..sedang di motor yang tidak ada switch starter, bisa memanfaatkan engine kill dari standar / sidestand. Sedangkan motor matic baru telah menggunakan engine kill berdasar posisi standar / sidestand.
Jadi pada dasarnya relay untuk starter adalah selalu berhubungan dan jika tidak menemukan sinyal wiFi baru relay tidak berhubungan. Dengan begini akan lebih aman sekiranya modul power supply mati tengah jalan karena motor akan tetap hidup. Dan juga bisa kita pasangkan switch On/Off ke modul alarm supaya bisa kita matikan tanpa mempengaruhi kelistrikan Starter.
Tinggal potong kabel engine kill, lalu hubungkan ke relay.

2. Untuk relay sirine, gunakan Normally Open. 
Sedangkan untuk sirine jelas harus selalu kondisi Normally Open atau tidak berhubungan, dan hanya jika diperintah baru saling berhubungan.
Tinggal hubungkan satu kabel sirine, biasanya saya pakai kabel positif, ke relay.

Untuk keterangan Normally Open dan Normally Closed silakan baca link.

Untuk power supply, board WittyCloud ini menggunakan port micro USB, sehingga saya menggunakan Power Supply USB Step Down ke 5v. 
Kenapa?
Karena udah pasti output 5V sih, jadi saya gak pusing ukur lagi, tinggal solder jack USB type A ke micro USB via kabel langsung colok ke power input Witty Cloud.

Untuk power supply, saya sarankan koneksikan ke Ignition jangan langsung ke aki. Saya gunakan kabel dari kotak sekring karena sudah pasti ini dari Ignition. Dengan begini alarm hanya akan menyala jika kunci kontak ON. Jika langsung ke aki maka modul alarm akan selalu menyala, sedangkan disain coding bukan untuk Low Power sehingga dikawatirkan hanya dalam hitungan 2-3 hari aki bisa tekor. Silakan baca link ini untuk melihat dimana kabel power supply dari Fuse Box MT25.

Ini penampakan setelah saya masukkan semua komponen dalam boks plastik.











Perlu diperhatikan juga boks plastik sebaiknya diberi ventilasi tapi jangan mudah air masuk saat mencuci...kalaupun air masuk boks, maka air harus bisa keluar, jangan sampai mengantong di dalam boks..

Lalu cara pakainya gimana ini alarm?
Gampang...sebelum nyalakan motor, aktifkan dulu Hotspot di HP ( dengan ssid dan password yang sama dengan coding diatas ) , lalu setelah aktif, nyalakan motornya. Jika ssid dan password benar, maka alarm pun akan mengenali siapa tuannya dan idle kembali...

Semoga berguna!

ps
ternyata sekarang sudah ada board ESP yang include relay...waw...langsung saya beli tapi belum datang....nanti saya tes kalau sudah datang...

update..
barangnya sudah datang, bentuknya sangat sederhana dan simple:
sudah built in relay dan board esp8266...tipenya ESP-01 Wifi relay...ada juga yang terdiri dari dua relay sekaligus...kecil dan sangat menarik...
Tapi setelah saya tes hasilnya mengecewakan. Barangnya sih bekerja dengan baik, tapi kalau dilihat pada coding saya diatas, saya tulis nahwa relay harus di pin 4 atau 5. Itu bukan tanpa alasan...board ESP8266 secara default akan set HIGH di pin 0-4...artinya, pada saat startup, pin itu akan di set high, lalu low lalu high lagi...
Itu yang bikin saya pusing karena artinya sirine akan menyalak dulu lalu baru mati. Relay Assy juga akan bekerja gak perlu.
Problem pada board relay ini adalah pin nya cuma ada dua yaitu pin 0 dan 1 yang secara default akan HIGH di startup. Jadi relay assy akan flicker dan sirine pasti nyalak duluan ...
Saya sempat pikir pakai kapasitor, mungkin 2200 uF, intinya selama 2 detik an, arus belum nyambung sepenuhnya...tapi saya mundur, karena kalau lihat spek, Ignition itu 15A arusnya...apakah kapasitor biasa akan mampu ladeni arus minimal 10A selama berjam jam? Kalau pakai kapasitor yang mampu ladeni 10A berjam jam, berapa harga dan ukurannya? Atau barangkali ada masukan?
Akhirnya saya batalkan pakai board ini....




Comments