Install Prototipe Alarm BlueTooth, part 2

Bagian pertama tulisan ini silakan klik ini.

Akhirnya saya memutuskan untuk membuat alarm saya jauh lebih sederhana, cukup dengan perintah 'membuka gembok' dan motor bisa dinyalakan. Ini karena saya belum menemukan apa penyebab sinyal BlueTooth tidak stabil. Dengan begini, rasa was was saat saya riding pun hilang, karena tidak lagi memikirkan kemungkinan alarm bunyi tengah jalan atau motor mati mendadak karena hilang sinyal dengan BlueTooth.
Untuk merangkai alarm ini membutuhkan pengetahuan dasar elektronik dengan arduino dan dasar dasar bagaimana merangkai komponen eletronik...
Komponen yang dibutuhkan adalah :

- iTag



- Arduino, bisa memakai ProMini atau Nano. Saya pakai Nano lalu balik lagi ke Pro Mini karena lebih ringkas. Pilih yang 5v jangan 3.3v, karena masalah dengan relay. Sulit mendapatkan relay 3.3v. 





- relay module. Saya pakai tipe modul 2 relay untuk memberi sinyal ke relay starter motor dan sirine. Sebenarnya bisa juga dengan tipe modul 1 relay untuk ke relay starter dan sirine pakai transistor. Relay bisa tipe optocoupler biasa atau tipe solid state juga bisa.





- power supply step down. Karena motor dc 12v sedangkan ardunio 5v.
- led biru dan merah. Warna bebas sih.
- resistor untuk led jika pakai Led 1.8v. Kalau pakai Led 5v tidak perlu resistor. Nilainya sekitar 220ohm atau lebih juga boleh asal jangan 2k lebih, redup nanti lednya.

- buzzer pasif.



- Modul HM10 BlueTooth 4 BLE. Ini agak susah mencarinya. Kebanyakan versi clone dengan firmware Bolutek.




- sirine 12v

- box plastik untuk menampung arduino dan komponen lainnya. Besarnya mesti di kira kira dulu, jadi kumpulin semua komponen lalu perkirakan bakal butuh box seberapa besar.
- kabel secukupnya. 

Untuk diagram, mohon maaf saya sudah mencoba pakai Fritzing tapi tetap jadinya kaya sarang tawon...
Jadi silakan saja konek kabelnya, saya pakai pin digital semua ya:

- pin 6 untuk led biru sebagai penanda bahwa BlueTooth sudah sukses konek. Jangan lupa pakai resistor sebelum ke led supaya led aman di tegangan 1.8v.
- pin 13 untuk led merah sebagai penanda bahwa BlueTooth tidak konek.
- pin 12 untuk buzzer, sebagai penanda suara kalau BlueTooth tidak konek. Ini bisa dibuang sebenarnya, fungsinya hanya sebagai penanda audio saja.
- pin 11 untuk koneksi ke relay modul pengatur sirine
- pin 10 untuk koneksi ke relay 


Berikut Code Arduino :

#include <SoftwareSerial.h> // pakai library Serial
SoftwareSerial BTSerial(8,9); // koneksikan pin 8 dan 9 ke HM10 tx dan rx

String bt; //sebagai input string dari HM10
int strike = 0; // penghitung jumlah waktu gagal konek BlueTooth
const int duration = 500; //durasi buzzer
const int frequency = 200; //frequency buzzer

bool engineBol; // for panic stop, ini peninggalan sistem lama sebenarnya
bool startBol; //kondisi boolean relay starter bisa konek atau tidak
bool hornBol; //kondisi relay pengatur bunyi sirine
bool keyBol; // penanda led biru untuk menyala
const int relay = 10; //koneksikan pin digital 10 di arduino dan relay modul
const int buzzerPin = 12; // koneksikan pin 12 arduino dan positif buzzer
const int horn = 11; // koneksikan pin 11 di arduino dan relay modul
const int led = 13; // koneksikan pin 13 ke resistor lalu led merah
const int led2 = 6; // koneksikan pin 6 ke resistor lalu led biru


void setup() {
// Serial.begin(9600); // Fungsinya hanya cek Serial Monitor
BTSerial.begin(9600);
pinMode(buzzerPin, OUTPUT);
pinMode(relay, OUTPUT);
pinMode(horn, OUTPUT);
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
engineBol = false; //engine mati
startBol = false;
hornBol = false;
keyBol = false;
// BTSerial.print("AT+NOTI1"); // Fungsinya saat pertama init HM10

}

void loop() {

if(!hornBol)
{
digitalWrite(horn, HIGH); // jika hornBol false, maka sirine berbunyi
}
btSensor();
}

void chosenKey()
{
BTSerial.print("AT+CONFxxxxxxxxxx"); 
//Mac address iTag, ini sebenarnya peninggalan sistem lama. Tiap iTag berbeda.
//Cek iTag yang dimiliki pakai BLE scanner di smartphone
//Ganti xxxxx itu dengan nilai mac address iTag hasil scan dengan BLE scanner
}

void btSensor()
{
if(startBol == false){ // ini kondisi awal saat Arduino booting
chosenKey();
bt = BTSerial.readString(); // membaca hasil read dari HM10
if(bt == "OK+CONNEOK+CONNF"){ //CONNF artinya failed
strikeProc();
keyBol = false;
if ((engineBol == false) || (startBol == false))
{
digitalWrite(relay, LOW);
}
if(hornBol && !keyBol){
digitalWrite(led2, LOW);
hornSound();
}
}
if(bt == "OK+CONNAOK+CONN"){ //CONN artinya berhasil konek
disArm();
}
}
else {
if (engineBol && startBol)
{
digitalWrite(horn, HIGH);
digitalWrite(relay, HIGH);
}
}
if(keyBol){
digitalWrite(led2, HIGH);
}
else digitalWrite(led2, LOW);

//Serial.println(bt); // Kalau ingin melihat Serial Monitor
}

void warnBuzzOnce()
{
digitalWrite(led, HIGH); // sebagai buzzer penanda gagal konek
digitalWrite(horn, LOW);
delay(500);
digitalWrite(led, LOW);
digitalWrite(horn, HIGH);
delay(500);
}

void warnBuzz()
{
for( int b = 0; b <4; b++) // penanda buzzer gagal lebih jauh
{
delay(300);
digitalWrite(led, HIGH);
tone(buzzerPin, frequency, duration);
delay(300);
digitalWrite(led, LOW);
}
}

void strikeBuzz()
{
digitalWrite(led, HIGH); // penanda led merah kedip kedip gagal
tone(buzzerPin, frequency, duration);
delay(100);
digitalWrite(led, LOW);
tone(buzzerPin, frequency * 3, duration);
delay(100);
digitalWrite(led, HIGH);
tone(buzzerPin, frequency * 5, duration);
delay(100);
digitalWrite(led, LOW);
tone(buzzerPin, frequency * 7, duration);
delay(100);
}

void hornSound()
{
digitalWrite(horn, LOW); // code sirine berbunyi dengan mengirim sinyal ke relay.
chosenKey(); // cek iTag
bt = BTSerial.readString();
if(bt == "OK+CONNEOK+CONNF") // jika masih tidak koneksi, bunyi terus
{
return;
}
if(bt == "OK+CONNAOK+CONN") //jika menemukan sinyal iTag, matikan sirine
{
disArm();
}
}

void strikeProc()
{
if (strike < 3) // kode penanda gagal
{
warnBuzz();
strike ++;
}
if (strike >= 3 && strike < 6)
{
strikeBuzz();
strike ++;
}
if (strike == 6)
{
engineBol = false;
hornBol = true;
}
}

void disArm()
{
if(strike > 0){ //kode reset kondisi
strike = 0;
}
if (startBol == false){
startBol = true;
}
if (engineBol == false){
engineBol = true;
}
if(hornBol){
hornBol = false;
}
if(!keyBol){
keyBol = true;
}
}



Mohon maaf codenya berantakan, saya masih nubie di bidang coding 😆

Bagaimana mendapatkan nilai Mac Address untuk iTag? Gampang, download aja BLE scanner di smartphone android, nanti nyalakan iTagnya dan bisa dilihat nilai Mac Addressnya. Tiap iTag beda beda.
Ok, sekarang bagaimana merangkai kabel ke relay starter? Di MT25, relay starter ada di bawah jok dengan merk Omron. Saya perlu membajak satu kabel dari Kill Engine Switch, jadi relay starter sekarang berada dibawah kendali Arduino, jika tidak menemukan sinyal BlueTooth, maka Starter tidak akan bisa nyala, persis seperti kondisi Engine Kill.


Bajak kabelnya. Saya pakai konektor dari Utilux supaya gak potong kabel

Penampakan setelah dibajak

Tidak stabilnya sinyal BlueTooth ini benar benar memusingkan saya, sehingga saya coba ambil arus langsung dari aki. Harapannya lebih stabil. Tapi supaya Arduino tidak terus menerus menyala karena langsung ambil arus dari aki, saya pasang relay. Jadi kalau kontak On, barulah relay aktif dan menyalurkan arus ke power supply.


Relay 12v mini.


Namun setelah dites, ternyata tidak terlalu perlu sih ambil arus dari aki, karena tidak ngefek juga...hahaha
Jadi langsung saja ambil dari kabel power di fuse box, karena pakai step down sudah cukup stabil.
Berikut Video penampakan...eh percobaan:




Demikian share pembuatan alarm dengan BlueTooth 4.0 BLE. Semoga menginspirasi ya...

Comments

Post a Comment